Build Scripts with Perfect Dependencies
Sarah Spall, Neil Mitchell, Sam Tobin-Hochstadt

TL;DR
This paper proposes a build system that automatically captures correct dependencies through execution tracing, eliminating dependency errors and improving build script correctness and simplicity, while maintaining parallelism via speculation.
Contribution
It introduces a novel build system that automatically infers dependencies by tracing execution, removing the need for manual dependency specification and reducing errors.
Findings
Dependencies are always correct by construction.
Build scripts are easier to write and maintain.
Parallelism can be recovered using speculation.
Abstract
Build scripts for most build systems describe the actions to run, and the dependencies between those actions---but often build scripts get those dependencies wrong. Most build scripts have both too few dependencies (leading to incorrect build outputs) and too many dependencies (leading to excessive rebuilds and reduced parallelism). Any programmer who has wondered why a small change led to excess compilation, or who resorted to a "clean" step, has suffered the ill effects of incorrect dependency specification. We outline a build system where dependencies are not specified, but instead captured by tracing execution. The consequence is that dependencies are always correct by construction and build scripts are easier to write. The simplest implementation of our approach would lose parallelism, but we are able to recover parallelism using speculation.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
