Bazel 9.1.1 / rules_rust / Remote Cache / Remote Execution

Monty, rebuilt as a Bazel remote build.

Monty is a minimal Python interpreter written in Rust, from the Pydantic team. This demo Bazelizes a pinned upstream archive with a small patch overlay — no fork — and takes it from local build to remote cache to remote execution. Every number below is committed as JSON, with the scripts to reproduce it.

121.1s → 15.7ssame build, fully cached

Measured, not estimated

Two fresh Bazel output bases against one bazel-remote instance in Docker. The seed run populates the cache; the reader run consumes it with uploads disabled. No local action cache involved. To be precise about what is measured: this compares a cold full build (with cache upload) to a fully cached rerun of the same targets — both with --remote_download_toplevel.

121.135s Cold seed run — build + test, 756 processes, 0 remote cache hits.
15.706s Reader run — same targets, fresh output base, uploads disabled.
432 / 432 Every executable action on the reader run came from the remote cache. The other 325 processes are Bazel-internal and never cacheable.
120.287s Clean Islo sandbox build of //:monty_cli, 1302 processes.
1.719s //:core_tests pass in the Islo sandbox run.
5m01s / 17s Reference GitHub CI run and GitHub Pages deploy, both green.
seed (cold cache)121.135s
reader (warm cache)15.706s

Bazel 9.1.1, Crabbox 0.36.0, Monty pinned at 4bcbcf5. Islo is Incredibuild's cloud sandbox service; this demo is an Incredibuild project. Full summary in docs/metrics/e2e-results.json.

01

Pin

Fetch Monty at commit 4bcbcf5 and apply a reviewable overlay patch — no fork.

02

Build

Use Bzlmod, rules_rust, and Cargo metadata mirrored under third_party/.

03

Prove

Run the local seed/reader cache demo with Docker, then provider cache and remote-execution stages in Islo sandboxes.

Commands

bazelisk build //:monty_cli
bazelisk test //:core_tests
./scripts/run_local_demo.sh
./scripts/run_islo_demo.sh