Releases: faustbrian/go-cache
Release list
github.com/faustbrian/go-cache v1.0.0
1.0.0 - 2026-08-25
Changed
-
Upgrade
moby/go-archiveandgolang.org/x/cryptoto their current
security-fixed releases and reconcile the resulting indirect dependency
graph. -
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.
Documentation
-
Replace obsolete standalone-repository links and workflow claims with
monorepo-canonical targets and current release guidance. -
Link the package README to the repository-wide Golib documentation portal.
Changed
-
Publish the module from its standalone
github.com/faustbrian/go-cacheidentity while preserving its documented API and behavior. -
Replace obsolete owned-module pseudo-version pins with the monorepo's local
v0.0.0source-proxy coordinates; release tooling continues to emit exact
v1.0.0dependency versions. -
Guard schema-prefix allocation arithmetic against the platform integer limit
after enforcing the configured payload boundary. -
Remove unused CLI-related indirect dependencies from canonical module
metadata. -
Pin owned sibling modules to exact resolvable main pseudo-versions so
standalone and clean external consumers use immutable dependency content. -
OpenTelemetry API and metric SDK dependencies now use 1.44.x consistently
after adding the service lifecycle adapter. -
Wait for Redis and Valkey readiness logs as well as listening sockets before
running backend conformance tests.
Compatibility
- Added a pinned module export baseline so incompatible public API changes
fail the canonical repository gate.
Added
- A
cacheservicelifecycle adapter for explicit cache and Valkey resources,
opt-in startup validation and readiness, and shared or transferred shutdown
ownership. - Atomic Valkey
SetIfOwnedpublication guarded by an active lease owner and
fencing token, with fail-closed ownership errors and typed cache support. - Atomic
SetNegativeIfOwnedpublication for authoritative absence under the
same active lease and fencing-token guarantee. - Typed cache API with explicit hit, miss, stale, and negative results.
- Bounded cache-aside loading, cancellation, panic cleanup, negative caching,
stale policies, and refresh jitter. - Versioned hashed key spaces and strict versioned JSON codec.
- Bounded memory, native go-redis/v9, and native valkey-go backends.
- Shared backend conformance suite and Testcontainers integration matrix.
- Redacted semantic events with OpenTelemetry and slog adapters.
- Exact production coverage, race, fuzz, leak, safety, benchmark, docs, and
release automation. - Authenticated and certificate-verified TLS integration coverage for every
supported Redis and Valkey version. - Operation-model backend fuzzer, minimized corpus, recovery tests, duplicate
OTel construction test, and observer allocation benchmark. - Semantic truth table, backend matrix, ownership/threat model, findings
report, operations guide, and release verdict.
Fixed
- Reject versioned JSON payloads whose schema-prefix allocation would overflow
the platform integer size. - Require Redis protocol readiness and an actual
NOAUTHresponse before
authenticated backend assertions begin. - Run fuzz smoke campaigns for a deterministic execution count so the Go fuzz
harness cannot report its own duration deadline as an application failure. - Preserve successful same-instance
Set, conditional mutation, andDelete
precedence over foreground loads and stale background refreshes. - Reject recursive same-cache loading with
ErrRecursiveLoadinstead of
waiting on the active flight. - Use relative server expiry so an injected clock is not confused with the
Redis or Valkey server wall clock. - Apply a portable 1 ms minimum server TTL instead of allowing Valkey
PX 0. - Strip process-local monotonic readings from portable deadlines so memory and
serialized backends use the same wall-clock interpretation. - Reject negative-cache deadline overflow before accessing the backend.
- Treat expired memory records as absent during deletion, matching Redis and
Valkey. - Require backend conformance to prove that read, write, and delete outages
remain errors rather than misses or rejected mutations. - Keep backend conformance failure messages compatible with standard Go error
style so strict static analysis remains clean for downstream test suites.
Release integrity
- Source commit:
af6aaed3c69848b5d3bcc65c9de1efd8f88c17f6 - Exact-head CI: https://github.com/faustbrian/go-cache/actions/runs/32907428658
- Release dry-run: urn:sha256:5968caaa34dd8dc49042777a506b87de3b6a650de3b68f4e269b2f937fc785e5
- 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