Build Scripts with Perfect Dependencies
summary
Build system that requires no author-specified deps: Rattle records per-command dependencies via file-system tracing, speculates parallel execution from previous runs, and aborts when it detects read/write or write/write hazards. Evaluation uses five real projects (including redis) across 26 commits and shows incremental builds match Make’s performance and 4-thread speedup except for the initial cold build when no speculative info exists. Implementation is a Haskell script API that emits shell commands and learns dependencies at runtime.
AI-written summary · about
chapters (13)
- 0:00Intro
- 0:18What is a build system?
- 0:40An alternative build system
- 1:02Advantages of a build system
- 3:04Disadvantages of a shell script
- 6:39Incrementality in Rattle
- 7:00Parallelism in Rattle: Explicit
- 7:26Parallelism in Rattle: Speculation
- 9:09Dependencies from File System Tracing
- 10:08Hazard detection
- 12:16Evaluation: Redis w/ one thread
- 13:15Evaluation: Redis w/ four threads
- 14:06Further discussion
related talks
23mRiker: Always-Correct and Fast Incremental Builds from Simple Specifications
45mLess is More - a Build Pipeline for the Modern Age
45mLess is more—a build pipeline for the modern age
49mBuild Systems: a Simple Solution to a Complicated Problem
23mSoftware Metrics and Ratcheted Builds in Python
31mBazel: Do We Really Need Another Build Tool?
29mGot Make?
37mWhat's (in) a Build System?
