Build tools are incremental execution engines for the decomposed and dependent steps of taking your project from its base inputs, all the way through to an output like a deploy binary, a test run, or a loaded repl. Incremental execution, ie: using languages or frameworks to track dependencies and minimize the amount of re-execution necessary after inputs have changed (while avoiding associated overheads), is a well studied problem. Given that, why have build systems not yet been “”solved”” once and for all? This talk will discuss the tradeoffs involved in build tool execution models and what they mean for our users. It will also focus on solved and open questions in systems like Bazel, Mill, Pants, and others.
Tools: I see what you did there: Incrementalism and Inference in Build Tools