Building from source

Updated Oct 18, 2026

The repository's Cargo defaults and the Makefile development targets (make test, make lint, make typecheck and the debug build) use the parallel rustc frontend (-Zthreads=8) and, on Linux, the mold linker. On Linux, install mold before building, because the configuration names it and a build without it fails at link time. A release build (make release) and the coverage build use neither: they assign their own RUSTFLAGS, which displaces the configuration's flags, so a shipped artefact keeps the platform linker. To build with the platform linker directly, assign an empty RUSTFLAGS:

RUSTFLAGS="" cargo build --release

The decision is recorded in ADR 005. The contract tests that guard these defaults run make -n, so a direct cargo test needs GNU make on the PATH. The tests fail when make is missing instead of skipping, so a missing tool cannot read as a pass.

See the 0.2.0 migration guide for what the new build defaults change for an existing checkout.