BazelCon 2023
2023-10-24..2023-10-25
Munich, Germany
BazelCon ·
[BazelCon 2017, BazelCon 2018, BazelCon 2019, BazelCon 2020, BazelCon 2023, BazelCon 2024]
who it's for
platform engineers, build engineers, rules authors, tooling engineers, ci engineers, mobile iOS engineers, security engineers
topics
bzlmod dependency management; remote execution at scale; remote caching and persistent workers; Starlark rule migration; build analytics and observability; monorepo build strategies; Windows support for Bazel; iOS framework build pipeline; validation actions off critical path; SBOM generation via Bazel; securing artifacts with SLSA; JDK21 performance optimizations
| title | author | length |
|---|---|---|
| Keynote | Micheal O'Foghlu | 15m |
Bazel reports growing downloads and GCS storage while most users run Bazel 6 and a meaningful fraction still on Bazel 5; a Bazel 7 release candidate exists… | ||
| State of the Union | Tobias Werth, John Field | 30m |
Memory and build-phase optimizations reduce retained heap significantly and JDK21 adoption (virtual threads, new GC) cuts CPU; Bazel 7 enables Bzlmod by… | ||
| A founder journey: from building Bazel to giving it super powers | Helen Altshuler, Ulf Adams | 10m |
Open-source Bazel plus EngFlow become a remote execution platform that adds remote persistent workers and a UI that loads 100,000 targets and an action viewer… | ||
| A new way to manage dependencies: How we extended bzlmod | Andreas Herrmann | 29m |
Migrates package-managed dependencies from WORKSPACE repo rules into bzlmod module extensions that declare direct deps as tags, keep labels stable for easier… | ||
| Aspect Workflows | Alex Eagle | 09m |
Aspect Workflows is a co‑managed CI/CD layer that runs on existing CI and cloud, deployed at 15 companies and offered as a one‑month trial. It avoids ephemeral… | ||
| Automating Build Files | Muralikrishnan Ganapathy | 34m |
A Google-internal build-file automation runs for a decade, supports 20+ languages and handles 250k requests/day. Three resolution strategies appear: fast… | ||
| Bazel build analytics | Sahithya Vemuri, Shishir Kumar | 11m |
ThoughtSpot ingests Bazel build and test logs into a DB and produces dashboards and ad-hoc answers that tie metrics to concrete causes: cache hit rate down… | ||
| Bazel observability and remote services in a multi build tool organization | Iulian Dragos | 10m |
Gradle Enterprise rebranded as The Velocity and supports Bazel, Gradle, Maven and SBT; it ingests Bazel Build Event Protocol output via rc options to produce… | ||
| Bazel Rules | Mihai Maruseac, Noah Elzner | 32m |
Project converts 250,000 lines of native Java (380k with tests) into Starlark where current rule code is ~10,000 lines of Starlark, moving outer rule defs… | ||
| Bazel-building an iOS app containing 330+ frameworks | Maciej Piotrowski | 10m |
Allegro moves from 30 to 330+ frameworks inside a monorepo and uses a custom CLI bridge plus XcodeGen, Swift Argument Parser, Bazel and xcodebuild to produce… | ||
| Bazel-lib for BUILD and rules authors | Derek Cormier | 10m |
Aspect's bazel-lib is a Starlark library with seven toolchains and 38 rules that provides concrete solutions: a macro write_aspect_bazel_presets that emits… | ||
| Bringing Bazel to Windows, then and now | László Csomor, Jay Conrod | 30m |
A Linux‑only Bazel port becomes usable on Windows by replacing missing POSIX calls with MSYS2, working around lack of admin symlinks using junctions and hard… | ||
| Remote execution with 100 to 100,000 CPUs | Fredrik Medley | 11m |
Buildbarn is a remote cache and execution system for Bazel that scales from a few nodes up to 100,000 CPUs by using a sharded front end, mirrored storage, and… | ||
| Building a great web application development experience with Bazel | Pejman Ghorbanzade | 31m |
Bazel JSON trace profiling identifies the slowest actions, leading to a Roadrunner toolchain that moves transpile/type work into Bazel with TS project + SWC… | ||
| Building Self Driving Cars with Bazel - Part 2: Scaling | Alexander Scott, Johannes Hummel | 30m |
BMW reports a Bazel migration from ~200 repos into a git monorepo with ~40 submodules, hosting ~300,000 targets and 200+ GB of externals; CI runs ~80k… | ||
| Dude, where’s my ram? An adventure in finding a ram thief in starlark land | Nils Wireklint | 07m |
Synthetic repo with Python and C++ adds two malicious aspects: a memory‑intensive aspect that builds a single 17 MB dependency string and a CPU‑heavy action… | ||
| Empyrean Evaluation | Benjamin Peterson | 33m |
Skyframe is Bazel's incremental parallel evaluator, implemented as a framework of computations with a tiny Python toy and a real implementation of 15,000 lines… | ||
| Finding and Fixing Strange Builds | Maggie Lou, Jim Hollenbach | 08m |
BuildBuddy shows a drill-down heatmap backed by an OLAP (ClickHouse) backend that slices builds by pattern, repo, host, user and more; highlighting a week… | ||
| How Uber Manages Go Dependencies with Bzlmod | Tyler French | 12m |
Uber migrates a thousand-plus direct Go dependencies from go_repository rules into Bzlmod, using go.mod/go.sum as the source of truth and Gazelle to generate… | ||
| How we build without the public internet | Kris Foster | 07m |
Goal: make Bazel builds that never touch the public internet. Uses a semi-automated mirroring pipeline: generate a bazel sync snapshot of workspace repos… | ||
| I'm an Imposter and So Can You: working in many languages at once | Alex Eagle | 30m |
Bazel runs a polyglot build stack so developer infrastructure engineers routinely juggle Python pip, Go codegen, Rust FFI to C++, and slow TypeScript… | ||
| Improving CI efficiency with Bazel querying and bazel-diff | Patrick Balestra | 09m |
Spotify centralizes iOS, Android, Web and C++ into a single monorepo (~10 million lines of code, ~8,000 commits/month) and uses Bazel queries plus bazel-diff… | ||
| Bazel: what aspects can tell us about your project? | Marcin Abramowicz | 08m |
IntelliJ IDEA plugin that opens Bazel workspaces uses dynamic aspects loading to avoid aspect failures when provider APIs or rules are missing, detecting… | ||
| JDK21 and Bazel | Chi Wang, Zheng Wei Tan | 09m |
Bazel upgrades its embedded JVM to JDK 21 and reports microbenchmarks showing up to 20% CPU and 14% wall-time improvements on high-core machines and ~5–10%… | ||
| Kickoff: A Cross-Platform Native Launcher | Albert Lloveras Carbonell | 10m |
Kickoff produces a tiny, cross-platform native launcher that boots bundled runtimes by appending a JSON manifest to a prebuilt Rust binary; the launcher embeds… | ||
| Migrating a multiple-platform game engine to Bazel | Kai Zhang | 25m |
NeoX moves from CMake/Conan to Bazel for Windows, iOS and Android with IDE integration for Visual Studio, Xcode, Android Studio and remote execution; a Python… | ||
| Multi-platforms Build with Remote Build Execution | Son Luong Ngoc | 29m |
Builds move from local Mac to remote Linux using RBE and firecracker microVMs, running a real repo’s integration tests faster because 1500 cores vs 10 yields… | ||
| Planting Bazel in barren soil: A Perl Story | Manuel Naranjo | 10m |
A 20‑year Perl monorepo is replatformed onto Bazel, moving from a 4GB monolith and 10 million lines of Perl to 6,000 distributions with 55% of services on… | ||
| Python and Bazel: Aspect’s rules_py | Matt Mackay | 09m |
rules_py is a layer on top of rules_python that builds per-target Python virtual environments (using the declared interpreter toolchain and a bash launcher) so… | ||
| The Story of rules_erlang | Rin Kuryloski | 29m |
RabbitMQ consolidates ~30 repos into a monorepo and cuts CI from 2–3 hours to about 17 minutes by creating rules_erlang (initial commit 2020‑11‑20, merged into… | ||
| Remote execution, the DIY edition | Sushain Cherivirala | 31m |
Stripe runs 80 million actions weekly across ~65,000 vCPUs and replaces gVisor with Firecracker to regain near‑native filesystem speed; content uses… | ||
| Remote Output Service - How not to have your bytes and eat them too | Benjamin Ingberg | 09m |
Bazel’s remote_output_service offloads remote downloads to an external process that fetches outputs on demand instead of forcing bazel to download terabytes… | ||
| Reusing bazel’s analysis cache by cloning micro-VMs | Maggie Lou | 28m |
Build system warm state is preserved by serializing Firecracker VMs so subsequent CI runs reuse Bazel’s in-memory analysis cache, cutting median pipeline time… | ||
| SBOMs via Bazel: Roadmap Update | Tony Aiuto | 08m |
A working SBOM pipeline now produces SBOMs in Bazel CI by combining rules_pkg/rules_license annotations with package-manager lockfiles, primarily reads Maven… | ||
| Secure your Bazel artifacts using SLSA | Mihai Maruseac, Noah Elzner | 25m |
With a 700+% YoY increase in supply chain attacks the project automates SLSA provenance for Bazel builds via a GitHub Actions reusable workflow that runs… | ||
| Towards Faster Cross-Platform Builds | Greg Estren, Ara Nguyen, Tiago Quelhas, Fabian Meumertzheim | 31m |
Bazel adds two concrete features to reduce redundant cross‑platform rebuilds: path mapping rewrites output paths so Java/JVM actions with different target… | ||
| Unlocking Bazel's Potential with Monorepo: A Key to Efficient Software Development | Quanyi Ma | 29m |
Claims an open source system named Mega uses a distributed database to store Git objects and provides Git protocol compatibility, enabling a true monorepo… | ||
| Visualizing Build Graphs | Ben Radford | 09m |
Skyscope visualizes Bazel Skyframe dumps by importing the graph (import can take about a minute and the demo shows 400,000 edges) and renders only ~10–20 nodes… | ||
| Validation actions: correct builds off the critical path | Kevin Bierhoff, Alex Humesky | 11m |
Bazel adds a mechanism that collects dummy outputs into a validation output group so lint and static-analysis actions can run off the critical path and even… | ||
| with_cfg: Making transitions more accessible | Fabian Meumertzheim | 07m |
with_cfg is a Starlark library that wraps existing Bazel rules to apply option transitions with minimal boilerplate, producing new rules like cc_asan_test and… | ||
| nothing matches | ||