Field Guide · concept

A build system is the tooling that transforms source code plus its dependencies into a runnable artifact — compiling, linking, and packaging — ideally as a deterministic function of its inputs.1

source dependencies build artifact
A build is a function from source and dependencies to a runnable artifact.

What a build does

A build transforms source into something runnable. The exact steps vary by language but the idea is universal: a compiler translates source into machine code or bytecode, and a linker stitches the pieces into an executable. Make and its descendants are the classic orchestrators — a Makefile declares targets and their dependencies, and make rebuilds only what changed.1 That principle (describe outputs in terms of inputs, rebuild only the stale parts) underlies nearly every build tool since. Modern ecosystems wrap this per language: go build, cargo build, npm/yarn, Maven, and Gradle each know their language’s conventions so you rarely hand-write build steps.

Reproducibility

The common thread is that a build is a function from source (plus dependencies) to an artifact, and the more deterministic that function, the more you can trust and automate it. Reproducible builds mean the same source and the same pinned dependencies always produce a bit-for-bit identical artifact, regardless of who builds it or when. That depends on pinned inputs, which is why a build system works hand in hand with a package manager and its lockfiles — without pinned inputs, you can’t have a reproducible output. Many builds also support cross-compilation, emitting a static binary for other platforms from one machine.

Where it fits

The build sits at the heart of a CI/CD pipeline: on every push from version control, the build runs, the tests follow, and a successful run yields a versioned artifact ready to release under semantic versioning. A deterministic build is what makes that whole chain trustworthy.

Sources

  1. Build automation — Wikipedia, for build tooling, Make, and reproducible builds.  2

See also