Hasty Briefsbeta

Bilingual

I want a better build executor

a day ago
  • Build executor is the third stage of a build, after package management and configuration, responsible for executing processes and reporting progress.
  • Change detection should use file attributes beyond mtime to reduce false positives, inspired by tools like redo.
  • Querying the action graph (file dependencies) is a key executor feature; desired query language includes nested predicates and an emit() function for complex output filtering.
  • Tracing can automatically add dependency edges and verify hermetic builds, supporting gradual transition via linting or hard errors without full inference.
  • Environment variable tracing is challenging; approaches include CPU-level tracing (PIN, SPE) or signal handlers, but each has limitations.
  • Proposed tool 'ronin' would read Magma format, offer continuous rebuild mode, tracing options, Bazel-like queries, pluggable backends, and SQLite-based state storage.
  • Ronin differs from Buck2 by being a lower-level executor that slots under existing build systems like CMake and Meson, enabling gradual adoption of hermetic builds without a full rewrite.