Contributing

Updated Oct 19, 2026

Maintainer workflows and repository gates are documented in the contributing guide.

Build standard

Development Make targets (make test, make lint, make typecheck and the debug build) use the parallel rustc frontend (-Zthreads=8). On supported Linux targets they use the repository's target-aware Clang wrappers with mold. Install clang with your system package manager if needed, then run make install-build-tools to install the pinned Rust components and, on supported Linux hosts, mold and ld.mold 2.41.0. macOS keeps its platform linker because the pinned linker is installed only on Linux. LLVM is the development codegen default; Cranelift is currently excluded after an unwind-test failure on the pinned toolchain. See ADR 001.

Pass additional Rust policy flags to Make through RUST_FLAGS. Make assigns each recipe's RUSTFLAGS from that variable and the selected route flags; it does not retain inherited RUSTFLAGS. It filters development-owned flags from inherited CARGO_ENCODED_RUSTFLAGS before composing the selected route. Coverage assigns its own flags and selects LLVM for instrumentation. make release selects the LLVM release profile and omits the development frontend and mold flags, so it uses the platform linker. A bare cargo build --release uses discovered configuration unless an environment flag source is assigned, for example RUSTFLAGS="" cargo build --release.