Repository navigation
Releases: faustbrian/go-external-sort
Release list
v1.1.2
Changed
- Publish the current source and documentation with a fresh immutable tag.
- Build with Go 1.27.3 to address GO-2026-6809 in
crypto/x509.
Consumers should use Go 1.27.3 or newer.
v1.1.1
Compatible maintenance release refreshing shared CI and encrypted-storage
security guidance. Document admitted integer-conversion bounds without
changing sorting APIs, runtime behavior, or private chunk formats.
The configured CLI and separate native security qualification remain
distinct verification paths. Go 1.27.0 remains required.
v1.1.0
Require Go 1.27.0; upgrade consumer toolchains before adopting v1.1.0.
The sorting API, runtime behavior, and private chunk formats remain
unchanged. This minor release signals the toolchain transition and keeps
shared CI and its checked-out tooling on matching immutable versions.
github.com/faustbrian/go-external-sort v1.0.0
1.0.0 - 2026-08-25
Changed
-
Exclude intentional nested modules from root local-proxy archives so local,
bootstrap, CI, and public module checksums describe the same source
boundary. -
Track the pinned documentation-tool lockfile so clean CI checkouts install
the exact validated cspell dependency. -
Reconcile standalone dependency checksums against deterministic current
module archives so CI, local verification, and release consumers resolve
identical content. -
Harden standalone documentation validation with deterministic spelling and
link checks, package-specific documentation gates, and repository-local
contributor guidance.
Changed
- Publish the module from its standalone
github.com/faustbrian/go-external-sortidentity while preserving its documented API and behavior.
Documentation
- Link the package README to the repository-wide Golib documentation portal.
Fixed
- Bind all temporary create, open, and removal operations to a revalidated
rooted directory handle so parent-path replacement cannot redirect cleanup
outside the configured storage root. - Bind encrypted records to a random per-store identity so ciphertext from a
different store is rejected even when callers reuse a key and the chunk,
ordinal, and record-size metadata match. - Allocate authenticated, process-unique nonce domains across concurrent stores
and return an owned cleanup handle when construction residue cannot be
removed immediately. - Reject overlapping and callback-reentrant lifecycle calls without racing,
deleting active iteration state, or weakening idempotent close semantics. - Reject whole-record truncation and trailing encrypted bytes instead of
accepting a shortened or extended chunk as complete, while reporting
underlying read failures as typed storage errors and sealing a store when
failed temporary-file cleanup would otherwise permit artifact accumulation.
Added
- Bounded lexicographic external sorting for caller-defined fixed-size records.
- Per-record AES-256-GCM temporary-storage encryption with authenticated chunk
and ordinal binding. - Explicit record, in-memory chunk, byte, and 64-file merge limits.
- Owner-only temporary storage, typed fail-closed errors, duplicate
preservation, deterministic cleanup, fuzzing, benchmarks, and exact
statement-coverage evidence. - Exact boundary and mutation coverage for resource ceilings, merge
termination, authenticated framing, cross-chunk substitution, nonce
consumption, and ordering helpers. - Hostile-filesystem, cross-store corruption, concurrent lifecycle, process
termination, bounded-resource, and merge-history fuzz campaigns, plus a safe
caller-owned Kubernetes cleanup runbook.
Release integrity
- Source commit:
b1ad3707517fae229fe0c10cf0d5f81daebd9adf - Exact-head CI: https://github.com/faustbrian/go-external-sort/actions/runs/32907572240
- Release dry-run: urn:sha256:77f1d4450dce66221ba28e3a857eb3d7875f8a39f208a2e719f4d8e79b99d9f1
- Assets include a CycloneDX SBOM, SLSA v1 in-toto provenance, and SSH-signed checksums.
Verify the checksum attestation with:
ssh-keygen -Y verify -f ALLOWED_SIGNERS -I brian@cline.sh -n golib-release -s SHA256SUMS.sig < SHA256SUMS