Build scripts with perfect dependencies
@article{Spall2020BuildSW, title={Build scripts with perfect dependencies}, author={Sarah Spall and Neil Mitchell and Sam Tobin-Hochstadt}, journal={Proceedings of the ACM on Programming Languages}, year={2020}, volume={4}, pages={1 - 28} }
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…
5 Citations
LaForge: Always-Correct and Fast Incremental Builds from Simple Specifications
- Computer ScienceArXiv
- 2021
This work introduces LAFORGE, a novel build tool that eliminates the need to specify dependencies or incremental build steps, and shows that build specifications can be both simple and fast.
Riker: Always-Correct and Fast Incremental Builds from Simple Specifications
- Computer ScienceUSENIX Annual Technical Conference
- 2022
R IKER is a build system that automatically discovers and runs incremental builds from simple specifications, which makes it easy to reproduce the experiments described in the paper, which evaluate R IKER’s performance and effectiveness as a build tool.
Accelerating Build Dependency Error Detection via Virtual Build
- Computer ScienceASE
- 2022
The tool VirtualBuild is implemented and it is shown that it detects all the dependency errors found by existing tools at a low cost and accelerates the build process by 8.74 times, and improves the efficiency of error detection by 6.13 times on average.
Forward build systems, formally
- Computer ScienceCPP
- 2022
This paper defines what it means for a forward build system to be correct, and shows that other forward build systems, such as Fabricate and Memoize, are also correct.
Demystifying Dependency Bugs in Deep Learning Stack
- Computer ScienceArXiv
- 2022
Findings from thisstudyshed lightontheimplicationsondependencymanagement,e.g.,constructingdependencyknowledgegraphfortheentireDLstack,recommendingdependencies,detecting, localizing andfixing de-pendencybugs, and upgrading andmigratingdependencies.
References
SHOWING 1-10 OF 50 REFERENCES
Shake before building: replacing make with haskell
- Computer ScienceICFP
- 2012
This work shows how to eliminate the dependency restriction in build tools, allowing additional dependencies to be specified while building, and has implemented the ideas in the Haskell library Shake, and used Shake to write a complex build system which compiles millions of lines of code.
Scalable Incremental Building with Dynamic Task Dependencies
- Computer Science2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)
- 2018
A new incremental build algorithm is presented that allows build engineers to use a full-fledged programming language with explicit task invocation, value and file inspection facilities, and conditional and iterative language constructs and is independent of the size of the software project being built.
A sound and optimal incremental build system with dynamic dependencies
- Computer ScienceOOPSLA
- 2015
This work presents a build system called pluto that supports the definition of reusable, parameterized, interconnected builders and generalizes the traditional notion of time stamps to allow builders to declare their actual requirements on a file's content.
Non-recursive make considered harmful: build systems at scale
- Computer ScienceHaskell
- 2016
Functional programming is used to design abstractions for build systems, and implemented on top of the Shake library, which allows them to describe build rules and dependencies, which is more scalable, faster, and spectacularly more maintainable than its Make-based predecessor.
An empirical study of unspecified dependencies in make-based build systems
- Computer ScienceEmpirical Software Engineering
- 2017
A case study on unspecified dependencies in the make-based build systems of the glib, openldap, linux and qt open source projects is presented and it is found that unspecified dependencies are common.
Non-recursive Make Considered Harmful
- Computer Science
- 2016
Functional programming is used to design abstractions for build systems, and implemented on top of the Shake library, which allows them to describe build rules and dependencies, which is more scalable, faster, and spectacularly more maintainable than its Make-based predecessor.
PIE: A Domain-Specific Language for Interactive Software Development Pipelines
- Computer ScienceArt Sci. Eng. Program.
- 2018
PIE is developed, a Domain-Specific Language (DSL), API, and runtime for developing interactive software development pipelines, that enables direct and concise expression of pipelines without boilerplate, reducing the development and maintenance effort of pipelines.
Recursive Make Considered Harmful
- Computer Science
- 2008
This paper explores a number of problems regarding the use of recursive make, and shows that they are all symptoms of the same problem, and the problem stems from the artificial partitioning of the build into separate subsets.
Make — a program for maintaining computer programs
- Computer Science, EducationSoftw. Pract. Exp.
- 1979
A program that can keep track of the relationships between parts of a program, and issue the commands needed to make the parts consistent after changes are made is described.
Safe futures for Java
- Computer ScienceOOPSLA '05
- 2005
The definition and implementation of safe futures for Java are explored and it is indicated that for programs with modest mutation rates on shared data, applications can use futures to profitably exploit parallelism, without sacrificing safety.