Forward Build Systems, Formally

02/10/2022
by   Sarah Spall, et al.
0

Build systems are a fundamental part of software construction, but their correctness has received comparatively little attention, relative to more prominent parts of the toolchain. In this paper, we address the correctness of forward build systems, which automatically determine the dependency structure of the build, rather than having it specified by the programmer. We first define what it means for a forward build system to be correct – it must behave identically to simply executing the programmer-specified commands in order. Of course, realistic build systems avoid repeated work, stop early when possible, and run commands in parallel, and we prove that these optimizations, as embodied in the recent forward build system Rattle, preserve our definition of correctness. Along the way, we show that other forward build systems, such as Fabricate and Memoize, are also correct. We carry out all of our work in , and describe in detail the assumptions underlying both Rattle itself and our modeling of it.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
07/24/2020

Build Scripts with Perfect Dependencies

Build scripts for most build systems describe the actions to run, and th...
research
08/27/2021

LaForge: Always-Correct and Fast Incremental Builds from Simple Specifications

Developers rely on build systems to generate software from code. At a mi...
research
10/23/2018

Programming Without Refining

To derive a program for a given specification R means to find an artifac...
research
05/26/2019

On the parallels between Paxos and Raft, and how to port optimizations

In recent years, Raft has overtaken Paxos as the consensus algorithm of ...
research
11/30/2017

Keep it Fair: Equivalences

For models of concurrent and distributed systems, it is important and al...
research
06/15/2018

Deep Learning Approximation: Zero-Shot Neural Network Speedup

Neural networks offer high-accuracy solutions to a range of problems, bu...
research
11/28/2022

Flexible Correct-by-Construction Programming

Correctness-by-Construction (CbC) is an incremental program construction...

Please sign up or login with your details

Forgot password? Click here to reset