|
Warning
|
Experimental — This project is a work in progress and not ready for production use. |
Bolt is a new build system written with simplicity and extensibility as core design goals. It uses Starlark as its configuration language and implements the Remote Execution API for distributed builds and caching—the same protocol used by Bazel and Buck2.
-
Minimal — A small, focused codebase that does one thing well
-
Easy to understand — Clear architecture with no magic; read the source and know how it works
-
Good error messages — Clear and understandable error messages
-
Easy to extend — Write custom rules in Starlark without diving into internals
-
Deterministic — Hermetic builds that produce the same output every time
-
Fast — Aggressive caching and parallelism; only rebuild what changed
-
Compatible — Speak the same remote cache/execution protocol as Bazel and Buck2
Bolt is inspired by both Bazel and Buck2, born out of frustrations encountered while working with and contributing to those build systems.
Bazel’s internal rules for C/C++ and other languages are powerful, but they often rely on magic internals that aren’t exposed to end users. Writing custom rules that integrate cleanly with the standard library can require deep knowledge of undocumented behaviors and private APIs.
Buck2 improves on many of Bazel’s pain points, but it comes with its own challenges. The codebase is massive, and the standard library (prelude) is heavyweight and difficult to extend. Contributing new rules or modifying existing ones requires navigating a complex, tightly-coupled system that wasn’t designed with outside contributors in mind.