Skip to content

Releases: faustbrian/go-external-sort

v1.1.2

Choose a tag to compare

@faustbrian faustbrian released this 22 Oct 01:59
Immutable release. Only release title and notes can be modified.

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

Choose a tag to compare

@faustbrian faustbrian released this 07 Oct 08:08
Immutable release. Only release title and notes can be modified.
2540d76

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

Choose a tag to compare

@faustbrian faustbrian released this 01 Oct 11:25
Immutable release. Only release title and notes can be modified.
8d834b6

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

Choose a tag to compare

@faustbrian faustbrian released this 26 Aug 05:47

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-sort identity 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

Verify the checksum attestation with:

ssh-keygen -Y verify -f ALLOWED_SIGNERS -I brian@cline.sh -n golib-release -s SHA256SUMS.sig < SHA256SUMS