Earlier quoted context omitted.
Can you explain why? I’d be interested to learn more.
In principle, you want the output of a build to always be the same if the inputs are the same. In terms of correctness, you want "sameness" to be defined in terms of the contents of the input, not their timestamp, since timestamps can be easily be changed inadvertently by things like `touch`, 3rd party tools, etc. Also, relying on timestamps could pose problems for caching/checksums/etc if they are printed into any t…
Buck: A high-performance build tool
31–40 of 71 posts
Re: Buck: A high-performance build tool
#32Can Buck handle Maven dependencies yet ? We don't want to vendor hundreds of jars into our repositories like before maven.
Re: Buck: A high-performance build tool
#33> Buck looks at the contents of your inputs, not their timestamps to figure out what needs to be built. As a result, incremental builds should always be correct, so there's no need to perform a clean build. At least one of these new-fangled tools gets at least one part right. The salient point is now of course whether Buck considers the correct set of dependencies as well as negative dependencies.
Re: Buck: A high-performance build tool
#34Earlier quoted context omitted.
Well many build systems don't even try to work properly, many new ones included. E.g. anything using timestamps is unequivocally an incorrect build system.
Can you explain why? I’d be interested to learn more.
Consider this makefile rule:
foo.a: $(patsubst %.c,%.o,$(wildcard *.c))
Now, the foo.a target will be considered as stale if any of timestamps of it's dependencies is newer than foo.a
But what if you remove a .c file?
As build systems like make don't capture a fingerprint of the names of the inputs of a built (let alone the hash of their contents) it's very hard for them to deal with that case correctly.
Correctness is important otherwise your trust in the incremental builds quicky erodes and you start doing clean builds all the times you get an error, just in case.
Re: Buck: A high-performance build tool
#35Also (bazel already mentioned, so no need to), but: Pants - https://www.pantsbuild.org/index.html Please.Build - https://please.build/ Closely related, but functioning bit different: Gn - https://gn.googlesource.com/gn/ (targets ninja). Used by Chromium, Fuchsia, and others Soong - https://android.googlesource.com/platform/build/+/master/REA... (targeting Kati?)
Kubeflow Pipeline (for ML) - https://www.kubeflow.org/docs/pipelines/pipelines-overview/
Tekton Pipeline - https://github.com/tektoncd/pipeline
TF Extended - https://www.tensorflow.org/tfx
Re: Buck: A high-performance build tool
#36Can anyone who's used both compare Buck to Blaze/Bazel?
Uber is migrating away from Buck to Bazel. One major reason is poor support for a variety of languages (Go being one big one, where fixing issues was historically slow due to a need to upstream fixes to Buck core). I haven't worked with Buck myself, but colleagues who evaluated it for JS have expressed concerns with lack of support/ecosystem there as well. In comparison, there are various Bazel rulesets for JS/Typesc…
Re: Buck: A high-performance build tool
#37Re: Buck: A high-performance build tool
#38Can Buck handle Maven dependencies yet ? We don't want to vendor hundreds of jars into our repositories like before maven.
Re: Buck: A high-performance build tool
#39Software development is all about not re-inventing the wheel. Yet there are countless build systems, tons of pointless frameworks. I wonder developers have nothing else to do. Every company releases their own version of everything.
Re: Buck: A high-performance build tool
#40Software development is all about not re-inventing the wheel. Yet there are countless build systems, tons of pointless frameworks. I wonder developers have nothing else to do. Every company releases their own version of everything.