v0.21.0 Release Preparation
Status: release candidate qualified, published, and externally audited (2026-08-30). This record owns candidate identity, qualification requirements, and final local artifact evidence. It does not authorize publication.
Release Boundary
v0.21.0 contains the complete unpublished v0.20.0 compiler-foundation work and the v0.21.0 Map and Set milestone. The public surface adds interface prerequisites, dependency-local exact selections, keyed mapping literals, hashing, representation-neutral Map<K, V> and Set<T>, borrowed and owning iteration, and the line-frequency reference package. Compiler and editor requests now consume the same revision-bound semantic computation. The candidate adds no second native target, compatibility syntax, HashMap/HashSet alias, public bucket API, or compiler-owned table.
The public release notes are ../../releases/v0.21.0.md. The immutable publication evidence is ../releases/v0.21.0.md.
Candidate Identity
The release inputs agree on 0.21.0:
development/packaging/VERSION;development/packaging/MANIFEST.jsonand its archive name;- the
#packageversion indevelopment/std/index.nct; - installed compiler and language-server reporting derived from the validated home.
Qualification Contract
The clean release-content commit must pass:
- 1. two independent complete locked workspace test runs in distinct external Cargo targets;
- warnings-denied all-target Clippy in both external targets;
- formatting, manifest validation, generated documentation, and repository integrity checks;
- the explicit public-HTTPS dependency acquisition test;
- two independent optimized package builds with byte-identical archives and recursively identical installed homes;
- fresh extraction checks for version, doctor, help, initialization, locked/offline check and test, deterministic graph, native run, explicit build and execution, and framed LSP analysis;
- proof that the installed home remains unchanged and qualification leaves no additional repository-local Cargo artifacts.
Source Qualification
The exact release-content commit is df0cf643c51e109fa80fe793d15f67668c82d2d4 (Prepare v0.21.0 release candidate). Two complete locked workspace test runs in independent external Cargo targets each reported 1,445 passed, zero failed, and one ignored public-HTTPS test. Warnings-denied all-target Clippy passed in both targets.
The explicit HTTPS acquisition test git::tests::clones_resolves_and_materializes_without_external_git passed separately with public network access. Formatting, manifest validation, the 301-page documentation build, and git diff --check passed. Both external qualification targets were removed, and the existing repository-local development target remained unchanged at 1.7 GB.
Artifact Qualification
development/packaging/qualify-local-release.sh generated two optimized packages in independent temporary targets. Their compressed archives were byte-identical and their extracted .nocter/ homes matched recursively. The retained candidate is:
- archive:
dist/nocter-v0.21.0-arm64-darwin.tar.gz; - bytes: 8,170,000;
- SHA-256:
3648737369b23086c7e70a91b59998c6f25402818b8bfb21a76bd6e2fcca62e8; - executable: ARM64 Mach-O;
- installed identity: release
0.21.0, hostarm64-darwin, default targetarm64-darwin; - standard-library payload: exactly 96 tracked regular files.
Fresh extraction passed version, doctor, help, package initialization, locked/offline check and test, two byte-identical JSON package graphs, native run, explicit build and direct execution, and framed LSP checks over installed standard-library contract and implementation sources. The installed home was recursively unchanged after the smoke matrix.
Publication Boundary
The candidate was frozen for explicit publication authorization. Publication reused the retained archive without rebuilding it, updated public latest-release links in a separate commit, created and pushed an annotated v0.21.0 tag, uploaded exactly this archive, and verified the public download byte for byte. Qualification itself performed no publication action.