Achieving the Promised 3x-10x Bazel Speedup
Bazel (bazel.build) is Google’s open-sourced build and test system for nearly all languages. Success stories suggest a substantial performance win is possible. But these stories are difficult to reproduce: a naive Bazel rollout has many de-optimizations.
Based on experience consulting for many companies, this talk first introduces Bazel’s value proposition, then dives into the approaches we’ve seen be effective in ensuring a fast developer experience.
Accelerating Builds with Buck2
Buck2 is an open-source build system written in Rust and designed to make your build experience faster and more efficient. Buck2 is extensible, allowing new languages to be added, but already has support for most popular languages (Python, C++, Rust, Go etc.). Thousands of developers at Meta already use Buck2, where we observed that Buck2 completed builds 2x as fast as Buck1, and developers using Buck2 ended up producing meaningfully more code.
In this talk we’ll discuss what makes Buck2 fast, what it shares with similar build systems (like Buck1 and Bazel), and what sets it apart. In order to give maximum performance Buck2 has a focus on parallelism, minimal invalidation on changes, integration with remote execution (running steps of the build on servers) and integration with virtual file systems. In order to have the flexibility to keep making improvements, we have a strong separation between the core build system (written in Rust, no knowledge of any language) and the language-specific rules (written in Starlark).
Buck2 is open source, and this talk will also cover what it looks like to get started with Buck2 in your project. More details about Buck2 can be found at https://buck2.build/.
Don’t Let Ephemeral CI Kill Your Developer Productivity
The Gradle Build Tool comes with a number of performance optimizations that help reduce the work to be done for each build. However some of these optimizations are achieved by keeping local state. While this is beneficial for local development, it can cause surprises in modern continuous integration setups where the trend is to have isolated and disposable environments. Suddenly, your Gradle build is slow!
The goal of this session is to provide strategies for getting the best of both worlds: Allow Gradle to leverage its performance optimizations while running in ephemeral environments.
The session will cover different performance aspects for a Gradle build and how you can support them in such an environment.