Hrmm, it makes performance claims with regard to Buck1 but not to Bazel, the obvious alternative. Hardly anyone uses Buck1 so you'd think it would be relevant.
That's cool. I was not able to repro due to the buck2 instructions not working for me, two different ways
Compiling gazebo v0.8.1 (/home/jwb/buck2/gazebo/gazebo)
error[E0554]: `#![feature]` may not be used on the stable release channel
--> gazebo/gazebo/src/lib.rs:10:49
Then with the alternate instructions:
error: no such command: `+nightly-2023-01-24`
Cargo does not handle `+toolchain` directives.
Did you mean to invoke `cargo` through `rustup` instead?
FWIW buck2 doesn't seem to build with nightly-2023-01-24 at this time, nightly-2023-03-15 worked for me. (Nightlies from April cause an internal compiler error.)
Anyway regardless of the fact that my local Rust environment isn't cut out to repro your result, how much of that speedup is due to parallelism that Buck2 offers and Bazel does not? When I build your cxx repo with bazel and load the invocation trace, the build was fully serialized.
It's honestly hard to measure at the scale of Meta. Just making everything compatible with Bazel would be a non-trivial undertaking.
Also that seems an interesting thing an independent person could write about, but whatever claims Meta made on a topic like that would be heavily scrutinized. Benchmarking is notoriously hard to get right and always involves compromises. It's probably not worth making a claim vis a vis a "competitor" and triggering backlash. If it's significantly faster than Bazel that will get figured out eventually. If not the tool really is aimed at Buck1 users upgrading to Buck2 so that is the relevant comparison.
I wonder if it's just because they don't have the same scale of data, since FB as a company uses Buck1/Buck2 but not Bazel?
They've clearly learned from Bazel though! I like the idea of not needing Java to build my software, and Starlark is battle tested / might make transitioning off Bazel easier.
The author of Bazel came over to FB and wrote Buck from memory. In Google it’s called Blaze. Buck2 is a rewrite in rust and gets rid of the JVM dependence, so it builds projects faster but it’s slow to build buck2 itself (Rust compilation)
I believe this is an over simplification. Engineers who had used Blaze at Google reimplemented it at Facebook based on what they knew of how it worked.
Even Facebook's Buck launch blog does not offer this story of Bucks lineage and although the author worked on the Closure compiler at Google that is not all of Blaze.
The author of Bazel came over to FB and wrote Buck from memory. In Google it’s called Blaze. Buck2 is a rewrite in rust and gets rid of the JVM dependence, so it builds projects faster but it’s slow to build buck2 itself (Rust compilation)