BazelCon 2024
2024-10-14..2024-10-15
Mountain View, United States
BazelCon ·
[BazelCon 2017, BazelCon 2018, BazelCon 2019, BazelCon 2020, BazelCon 2023, BazelCon 2024]
who it's for
build engineers, platform engineers, monorepo maintainers, devops engineers, toolchain maintainers, developer productivity engineers
topics
remote execution reliability; action deduplication for builds; remote caching and outputs; building container images in-memory; hermetic sandboxing techniques; hermetic Python with Conda; Gazelle performance at scale; Bazel query advanced usage; cross-platform cross-architecture compilation; Nix and Bazel interoperability; creating portable toolchains; test filtering by build-graph distance
| title | author | length |
|---|---|---|
| BazelCon Keynote | Micheal O'Foghlu, Tobias Werth, Alex Eagle, Helen Altshuler, Chuck Grindel | 23m |
Bazel traces to about 2014, hits open-source 1.0 with semantic versioning and long‑term support, and prepares Bazel 8 while governance shifts: BazelCon… | ||
| State of the Union | Tobias Werth, John Field | 31m |
Bazel ships a usable vendor mode for offline dependency downloads, a new lockfile format plus a gmerge driver to reduce merge conflicts, and a plan to disable… | ||
| The Classics Never Go Out of Style: An Empirical Study of Downgrades from Bazel | Shane McIntosh | 32m |
Analysis of 542 open-source Bazel adopters finds 61 projects (11.2%) abandon Bazel after sustained use, with a median 638 days of adoption. Thematic coding of… | ||
| Post Mortems for 4 Years of Remote Execution | Ulf Adams | 29m |
Four concrete incidents from four years of running remote execution: a deadlock caused by single outgoing HTTP/2 connection per worker and cyclic RPCs that… | ||
| Lessons from a Large JVM Monorepo | Janusz Kudelka | 27m |
Airbnb runs a 30M+ LOC JVM monorepo with Java, Kotlin and Scala, thousands of contributors and ~8,000 third‑party versions; solutions include packaging JDKs as… | ||
| Action Deduplication: Faster and Cheaper Remote Builds Without Lifting a Finger | Christian Scott | 11m |
Remote Bazel RBE backends implement action deduplication (aka merging/coalescing) so identical actions already executing are not re-run; BuildBuddy, Buildbarn… | ||
| Building 1300 Container Images in 4 Minutes | Sushain Cherivirala | 10m |
Claim: Bazel pipelines build 1300+ images in about four minutes by never materializing layers to disk. Implementation uses Bazel with remote_download_minimal… | ||
| Performant Bazel Builds for Web Monorepos at Scale | Sharmila Jesupaul | 11m |
Airbnb migrates a 10 million+ line web monorepo (150k files, 10k BUILD files) to Bazel and focuses on measurable wins: 42% faster incremental unit tests by… | ||
| Perfect Sandboxing in Bazel | Rahul Butani | 29m |
Migrating a 20‑year codebase to Bazel exposes tools that use absolute host paths, so the Bazel sandbox is extended to detect external symlinked inputs (via… | ||
| Running a Start-up on Bazel | Prasanna Swaminathan | 27m |
A 10‑engineer company runs Bazel on roughly 1 MM LOC across about 850 build files and ~3600 targets, migrating Go first (live May 2022) and using Gazelle for… | ||
| Pigweed and Bazel for Embedded Development | Ted Pudlik | 29m |
Pigweed makes Bazel handle real embedded firmware workflows: it builds binaries for multiple cores in one Bazel invocation, uses transitions (and in Bazel 8… | ||
| Spotify's Journey to Releasing One of the World's Largest Apps wit... | Luka Cindro, Gabriel Borglund | 26m |
Spotify migrates a 5M‑line Android app and related 1M C++ core from Gradle to Bazel using a hybrid Gradle+Bazel bridge that runs Bazel during Gradle… | ||
| Introducing Remote Bazel | Maggie Lou | 11m |
Remote Bazel runs the Bazel client server and commands remotely so CI and dev machines reuse a warm analysis workspace stored in a remote cache, using… | ||
| { Fast, Cost-effective } – Choose Two | Helen Altshuler | 10m |
Shows a concrete platform that combines Bazel invocation analyzer recommendations (claims up to 84% faster on specific builds) with cache replication and… | ||
| Aspect Build | Alex Eagle | 10m |
Aspect Build describes a developer platform that supplies Bazel rule sets and CI/CD integration, claiming 23% of Bazel registry releases come from its team… | ||
| Bazel’s Take on (Cc) Shared Libraries | Claudio Bley | 11m |
cc_shared_library in Bazel uses aspects to walk dependency edges, emit graph_node_info and combine that with cc_shared_library_info to decide which object… | ||
| Consistent Hermetic Tooling with Actually Portable Executables | Matt Clarkson | 07m |
Explains that Actually Portable Executables (APE) are single “fat” binaries containing x86_64 and aarch64 code that run on Windows, Linux, macOS and BSDs, and… | ||
| Building a Hermetic Python Environment with Conda in Bazel | Adam Azarchs | 09m |
Bazel rules fetch Conda packages as parallel per-package remote repos and then copy them into a central repository rule so Python extension modules and shared… | ||
| Bazel: {Fast, Correct, Seamless}: Choose 3 | Srini Muthu | 09m |
LinkedIn moves Go from mixed Makefile/Gradle chaos (roughly 50% legacy, 50% native go) to Bazel by using Bzlmod and go_deps so go.mod becomes the source of… | ||
| Optimizing Gazelle for Scale and Performance in Uber's Monorepo | Tyler French | 07m |
Monorepo with ~1,000,000 files and ~10,000 commits/week forces Gazelle to stop scaling so the team converts global indexing to conventions to avoid index… | ||
| Bazel Query Deep Dive: From Basics to Advanced Use Cases | Łukasz Wawrzyk | 26m |
Shows concrete commands and gotchas: uses Envoy and a tiny Scala repo to demo --noimplicit_deps to shrink a deps result from ~900 labels, extracts transitive… | ||
| Creating C++ Toolchains Easily | Matt Stark, Armando Montanez | 32m |
New rules_cc toolchain mechanism defines C++ toolchains as rule-based use labels not strings mappings: a cc_toolchain points to a cc_tool_map that maps action… | ||
| {Fast, Correct, Secure} - Choose Three | Yannic Bonenberger, Antonio Di Stefano | 29m |
Bazel users get a concrete report: EngFlow moves from ad hoc checked‑in license targets and a brittle manual collection to an aspect‑based approach and the new… | ||
| Symbolic Macros and Rule Finalizers | Susan Steinman, Alexandre Rostovtsev | 26m |
Structured symbolic macros land in Bazel 8.0 and require typed attributes, automatic name and visibility handling, and configurable support for selects so… | ||
| Reducing Bazel's Memory Consumption | Ivo Ristovski List, Jingwen Chen | 33m |
Three production ideas target different use cases and tradeoffs: Skyfocus runs today (Bazel 8 flags) and discards state outside a developer-specified working… | ||
| How Bazel Handles Globs | Nathan Harmata | 10m |
Bazel exposes file existence to build code via glob patterns but historically evaluates globs twice, causing long stalls and high memory from per-directory… | ||
| Not Going the Distance: Filtering Tests by Build Graph Distance | Alex Torok | 09m |
Aurora adds a direct hash to each Bazel target and computes two distances: a graph target distance (number of dependency hops to a directly changed target) and… | ||
| Nix and Bazel: The Odd Couple of Build Tools | Jesse Schalken | 11m |
Argument: Nix artifacts are not relocatable so binaries live in Nix store with embedded interpreter and DT_RPATHs, which breaks Bazel remote execution… | ||
| Remote Execution with Rules_nixpkgs: Design and Deployment | Guillaume Maudoux | 33m |
rules_nixpkgs integrates Nix into Bazel but breaks remote execution; this work implements a solution combining remote Nix execution with Bazel remote workers… | ||
| Rules_lint: Formatting and Linting All Languages | Alex Eagle | 27m |
rules_lint v1.0 provides a single, repo-level formatting workflow (per-file, editor-consistent, run via pre-commit) and a separate linting workflow that runs… | ||
| Utilizing Bazel for Cross-Platform and Cross-Architecture Compilation an... | Axel Uhlig, Marcel Kost | 28m |
A Bazel-based, hermetic C++ toolchain builds static Clang compiler packages and SDK sysroots for Linux, Windows, and macOS and targets Intel and ARM, using… | ||
| Interoperating Bazel and Other Build Systems | Alexander Neben, Zack Winter | 25m |
MongoDB migrates a massive C++ codebase to Bazel while keeping SCons as the developer interface, supporting Windows/Mac/Linux, x86/arm/ppc/s390x and… | ||
| Are You Ignoring Your Most Expensive Bazel Build Problems? (Develocity Can Help) | Brian Saghy | 11m |
Develocity, Gradle’s cross-build observability platform, analyzes Bazel build and test metadata across CI and local machines to surface where dollars and… | ||
| Fetching private data with Repo Rules and MODULE Extensions | Malte Poll | 10m |
Manages authenticated HTTP fetches via Bazel repository rules and MODULE extensions, implementing downloads through the Bazel downloader, reusing a repository… | ||
| Hermetic Toolchain Creation with Local Remote Execution (LRE) & Nix | Aaron Mondal | 06m |
Describes an implemented LRE workflow that uses Nix flakes to gather packages, materialize materialized Nix store paths, and feed identical strings into both a… | ||
| Scala, Bazel and VirtusLab | Krzysztof Romanowski | 08m |
Scala 3 is now presented as fully binary and source compatible with LTS overlap for smoother migrations, compilation is faster and pipelined, and rules_scala… | ||
| Swiping Left on Monolithic Targets | Maxwell Elliott | 07m |
Describes a repeatable decomposition workflow that uses Bazel Aspects and Swift IndexStore to collect an index, a custom rule plus a Transformer to convert it… | ||
| Improved --Toolchain_resolution_debug’ing | Malte Poll | 10m |
Refactors Bazel’s `--toolchain_resolution_debug` output into a single-message-per-invocation, indented format that removes duplicate lines and makes the… | ||
| Why We Should Care About Test Execution Output in Safety-Critical Industries | Markus Hofbauer | 08m |
Bazel does not cache test output, which breaks ASPICE-style deliverables used by BMW and NVIDIA; forking Bazel is costly. The claim is to run test as part of… | ||
| The State of Compilation Database in Bazel | Thi Thu Ha Doan | 10m |
Compares four concrete ways to produce compile_commands.json for Bazel: running a capture tool like Bear (requires client mode or disabling sandbox and a real… | ||
| nothing matches | ||