A deep technical exploration of what a 'postmodern' build system would look like — one with trustworthy incremental builds, distributed execution, and no build identity. The post reviews Nix's derivation model and its limitations (coarse granularity, IFD blocking, inner build system opacity), then examines Buck2 and Bazel's target/action graph separation, persistent workers as a pragmatic middle ground, and theoretical approaches like WASM-based execution and deterministic OS-level memoization. Updated in 2025 with a section on Mercury's real-world adoption of Buck2 for large-scale Haskell builds and the practical recommendation to use a Bazel-family build system with Nix-sourced dependencies plus persistent workers.

26m read timeFrom jade.fyi
Post cover image
Table of contents
Build systems à la carteNixBuck2 and BazelThe Birth and Death of JavaScriptHouyhnhnms : horse computers?Unisonrustc queries , salsaMake an existing architecture and OS deterministicWASM everythingNix builds but make them monadic
146 Impressions