Skip to content

Release v0.6.0 — Vendoring surface, packaging, and hardening

Date: 2026-07-05 · Milestone completed: M8 (amalgamation, packaging, examples, dispatch hardening). Release template per REQ-DOC-010. Gate record: gates/M8.md.

Summary

The consumption product surface. Quiver is now installable and vendorable three ways, each CI-verified: an installable CMake package (find_package(Quiver CONFIG)), a source subproject (FetchContent/add_subdirectory), and a single-file amalgamation drop-in (quiver.h + quiver.cpp) built with one compiler command. Plus: four runnable examples, an end-to-end pipeline benchmark, vcpkg/Conan packaging skeletons, a tag-triggered release workflow with build-provenance attestation, and compile-time ISA pinning (QUIVER_PIN_ISA).

Completed requirements

M8 allocation per PRD 18: REQ-BUILD-009 (install/export), -010 (three consumption modes incl. a -fno-exceptions consumer), -013 (amalgamate + verify), -014 (LTO ledger field), -015 (packaging skeletons); REQ-DISP-013 (QUIVER_PIN_ISA); REQ-INT-005 (byte-determinism), -006 (examples); REQ-REPO-007/-011; REQ-CI-008/-009; REQ-BENCH-012; REQ-REL-003/-004; REQ-STD-006 (--check active). Deferred: AVX-512 performance ledger (R-06, no hardware, carried from M7); vcpkg/Conan registry submission (a release activity, REQ-BUILD-015).

API changes

None. All additions are build/tooling surface. Consumers gain quiver::quiver via find_package/FetchContent, or #include "quiver.h" from the amalgamation; the runtime dispatch behavior is unchanged (a pinned build fixes the tier at compile time, REQ-DISP-013).

Validation

quiver_amalgamate_verify compiles the generated pair under the shipped-library warning + no-exceptions baseline and runs the full unit suite against it, requiring byte-identical kernel outputs versus the normal build (REQ-BUILD-013). CI verifies all three consumption modes, a -fno-exceptions consumer, the drop-in single-command build, install-tree minimality, the compile-time pin (active_isa()==avx2 on x86), and the amalgamation on MSVC (default /arch, tier-2). The generator's determinism and REQ-STD-006 rules have unit tests.

ADR changes

ADR-018 (amalgamation strategy) realized, with an M8 amendment: the prescribed MSVC per-ISA narrowing is unnecessary for the default-/arch build (empirical windows-latest finding), so it is not implemented; /arch-consumer narrowing is a tier-2 deferral (risk R-17). REQ-STD-006 amended with the anonymous-namespace-collision rule the amalgamation requires.

Known limitations

No AVX-512 performance numbers (R-06, unchanged). Packaging skeletons are prepared, not registry-submitted. The amalgamation on MSVC is supported only with the default /arch (R-17). The version constant (config.h) trails the SemVer tags at 0.1.0 — a pre-existing drift whose reconciliation is the release-plan post-release bump (see the gate record §8).

Release artifacts not yet attached. release.yml ran on the v0.6.0 tag and correctly withheld the draft: the nightly's MSan-instrumented-libc++ leg has been broken since M3 (R-19), so the aggregate nightly fails and the publish job is skipped (the release checklist requires a green nightly). The amalgamation pair + SHA256SUMS + attestation are therefore not attached to this tag yet; the workflow is correct, the nightly MSan infra is the blocker (R-19). Generate the amalgamation locally with python3 tools/amalgamate/amalgamate.py --out-dir <dir> in the meantime.

Migration notes

None required — purely additive.