LaForge: Always-Correct and Fast Incremental Builds from Simple Specifications
Charlie Curtsinger (Grinnell College), Daniel W. Barowy (Williams, College)

TL;DR
LaForge is a build system that automatically generates efficient, correct incremental builds from simple specifications by tracing execution, eliminating dependency specification complexity, and maintaining high build speed.
Contribution
LaForge introduces a novel approach that automatically infers dependencies and incremental steps from simple build commands, removing the need for complex specifications.
Findings
Full builds with LaForge have a median overhead of 16.1%
LaForge's incremental builds run fewer commands and are faster in most cases
LaForge is always correct in its incremental rebuilds
Abstract
Developers rely on build systems to generate software from code. At a minimum, a build system should produce build targets from a clean copy of the code. However, developers rarely work from clean checkouts. Instead, they rebuild software repeatedly, sometimes hundreds of times a day. To keep rebuilds fast, build systems run incrementally, executing commands only when built state cannot be reused. Existing tools like make present users with a tradeoff. Simple build specifications are easy to write, but limit incremental work. More complex build specifications produce faster incremental builds, but writing them is labor-intensive and error-prone. This work shows that no such tradeoff is necessary; build specifications can be both simple and fast. We introduce LaForge, a novel build tool that eliminates the need to specify dependencies or incremental build steps. LaForge builds are easy…
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.
Taxonomy
TopicsSoftware System Performance and Reliability · Distributed systems and fault tolerance · Parallel Computing and Optimization Techniques
