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 \emph{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 employ memoization, speculation, and parallel execution, and we prove that these optimizations, as embodied in the recent forward build system \textsc{Rattle}, preserve our definition of correctness. Along the way, we show that other forward build systems, such as \textsc{Fabricate} or \textsc{Memoize}, are also correct.
We carry out all of our work in Agda, and describe in detail the assumptions underlying both \textsc{Rattle} itself and our modeling of it.
Mon 17 JanDisplayed time zone: Eastern Time (US & Canada) change
15:30 - 17:10 | Security and Distributed SystemsCPP at Salon III Chair(s): Alwyn Goodloe NASA Langley Research Center | ||
15:30 25mTalk | Reflection, Rewinding, and Coin-Toss in EasyCryptRemote CPP Pre-print Media Attached | ||
15:55 25mTalk | A verified algebraic representation of Cairo program executionRemote CPP Jeremy Avigad Carnegie Mellon University, USA, Lior Goldberg Starkware Industries Ltd., David Levit Starkware Industries Ltd., Yoav Seginer cdl-lang.org, Netherlands, Alon Titelman Starkware Industries Ltd. Pre-print | ||
16:20 25mTalk | Formal Verification of a Distributed Dynamic Reconfiguration ProtocolInPerson CPP William Schultz Northeastern University, Ian Dardik Northeastern University, Stavros Tripakis Northeastern University Pre-print | ||
16:45 25mTalk | Forward build systems, formallyInPerson CPP Link to publication |