Precise, Efficient, and Expressive Incremental Build Scripts with PIE
Build systems check, compile, test, and deploy virtually every software project. Besides increasing software reliability, incremental build systems also speed up software development by enabling short feedback cycles. However, the reliable and long-term maintainable usage of incremental build systems requires precision, efficiency, and expressiveness.
Current incremental build systems focus on efficiency and precision, but lack expressiveness. To support efficient incremental rebuilds, current build systems impose a strict separation of the configuration and build stages. That is, all build tasks and dependencies (i.e., the variability of the build) are declared in the configuration stage to create a build plan, which is then executed in the build stage. This model contradicts reality, where how to build an artifact depends on the execution of other build tasks.
Common workarounds required in this model are over-approximation (
*.h in Make to depend on all C header files), under-approximation (
own.h to depend only on your own header file), or additional staging (e.g., Makefile generation and recursive Make). However, these workarounds are not efficient nor precise: over-approximation is not minimal and under-approximation is unsound. Furthermore, additional staging is not expressive nor maintainable, as it introduces accidental complexity into build scripts.
To this end, we have developed PIE, a DSL (domain-specific language) and runtime for precise, efficient, and expressive build programming.
Mon 21 Oct
|14:00 - 14:30|
Gabriël KonatDelft University of Technology, Roelof SolDelft University of Technology, Sebastian ErdwegJGU Mainz, Eelco VisserDelft University of TechnologyPre-print File Attached
|14:30 - 15:00|
Jeff SmitsDelft University of Technology, Gabriël KonatDelft University of Technology, Eelco VisserDelft University of TechnologyPre-print
|15:00 - 15:30|
Nils KurowskyFernuni Hagen