Crafting Extensible Forward Incremental Parallel Embedded Build Systems
Lucas Escot · 2023
Despite their ubiquitous use in the daily lives of programmers, build systems have only recently started being the subject of formal investigation. They span across a wide spectrum satisfying many properties: backwards, forward, error-recovering, parallelizable, etc. In this paper, we present a new extensible embedded domain-specific language for writing forward build tasks. We focus our attention to a small set of abstractions that simplify the treatment of incrementality, caching and parallelism. We purposefully move the focus away from file dependencies and side effects to give attention to compositionality of tasks, structural caching of host programs and tracking of value change. We showcase an hybrid approach between incremental computing and build systems, in which logical constructs in the host language can too be cached and made incremental.