Developer Tools · Cluster
Build Systems
Graphs, incrementality, and hermeticity.
- 01 Build Graph Construction and Topological Ordering How a build system turns declared targets and prerequisites into a directed acyclic graph, how cycles are detected, and why the order a build actually runs in is not the topological order.
- 02 Timestamp-Based Incrementality and Its Failure Modes How modification-time comparison decides which targets are stale, why clock skew, filesystem granularity and restoration of old trees break the comparison, and what the fix costs.
- 03 Content-Hash Caching and Early Cutoff How build tools key actions on cryptographic hashes of their inputs and command lines, and why comparing output digests lets a rebuild stop propagating before it reaches the link step.
- 04 Hermetic Actions and Undeclared Inputs An action is hermetic when its output depends only on inputs the graph names. The channels through which that property leaks, the sandboxes that close them, and the cost of closing them.
- 05 Action Cache Keys and Shared Build Caches The two-level structure of an action cache over a content-addressed store, what has to be in a key for cross-machine hits to be safe, and how eviction and poisoning failures present themselves.
- 06 Scheduling Actions Across a Dependency Graph How a build executor chooses among the actions that are currently runnable, why the longest path through the graph bounds the achievable speedup, and where local and distributed execution diverge.
- 07 Discovered Dependencies and Depfile Header Tracking Compilers know which headers they include and the build graph does not, so the compile step is made to write its own dependency rule. How that file is produced, parsed, and kept from going stale.
- 08 Remote Execution and Content-Addressed Input Trees How an action is expressed as a value with a digest, how its input tree is uploaded and reconstructed on a worker, and how partial uploads, timeouts and retries are handled.
- 09 Incremental Correctness Under Source Mutation Every incremental build assumes the source tree holds still while it runs. What an edit arriving mid-build does to the graph, how tools detect it, and the snapshot technique that removes the assumption.
- 10 Bit-Reproducible Builds and Nondeterministic Actions The specific places nondeterminism enters a compile and an archive, the flags that normalise them, and why a byte-identical rebuild is a prerequisite for trusting a shared cache.