Source on Codeberg (opens in a new tab)

Post-quantum crypto, workload identity, and the Go 1.25 gap closed

On main since rc2

Release notes

The standard library grew from 303 modules to 354, and from 2,219 public functions to 2,982, in three deliberate directions.

Forward-looking crypto and identity

ML-KEM-768 and ML-KEM-1024 (FIPS 203, up to Security Level 5) for post-quantum key encapsulation, mTLS with SPIFFE workload identity, a CBOR codec, OpenTelemetry across all three signals, and SLSA build provenance. The SPIFFE claim is stated precisely: svid_verify checks X.509-SVID fields (expiry, issuer, format), and signature and chain verification stay with the caller against the trust bundle. A WebAuthn module landed in the same wave and is covered separately below, because an audit of it is the more instructive story.

A gap analysis against Go 1.25

Produced seven modules where Kern was behind: std.context for request-scoped cancellation, deadlines and value propagation; std.unique for handle-based string interning; std.synctest with a fake clock and virtual time for deterministic concurrency tests; std.fips for FIPS 140-3 algorithm, key and TLS policy checking; net.csrf using Fetch Metadata rather than tokens; and data.json_stream for token-by-token and NDJSON processing. Both the CSRF and FIPS modules bridge into the SIEM event pipeline with CWE-117 log sanitization, so a policy violation is an alert, not a log line someone might read.

Domain work

Landed too: DSP, geospatial, acoustic and DAS fiber-monitoring modules, a PDF writer with images, text metrics and alignment, and MIME multipart attachments for mail. Those arrived with adversarial tests that immediately found two real bugs of their own, an ifft that mutated its input and a swapped polynomial in the WGS84 to RD projection, both fixed.