Skip to content

Releases: faustbrian/go-log

github.com/faustbrian/go-log v1.0.0

Choose a tag to compare

@faustbrian faustbrian released this 26 Aug 05:48

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.

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-log identity while preserving its documented API and behavior.
  • Execute API compatibility tooling against the isolated module graph so owned
    dependency source changes cannot conflict with release checksums.
  • Use the repository-pinned current apidiff revision for the canonical API
    compatibility gate.

Added

  • Standard *slog.Logger, JSON, and text constructors with ordered handler
    options.
  • Synchronous fan-out with inclusive per-handler level routing, isolated record
    clones, and joined sink errors.
  • Structural key and path redaction with configurable replacement values.
  • Concurrency-safe every-N and deterministic key sampling with counters.
  • Bounded asynchronous delivery with block, drop-newest, drop-oldest, and
    synchronous-fallback overflow policies.
  • Deadline-aware flush and repeatable shutdown with explicit delivery and loss
    accounting.
  • Concurrent capture handler, record snapshots, reset, and test assertions.
  • Permission-enforced local file rotation with bounded numbered backups.
  • Optional OpenTelemetry trace, span, and trace-flags correlation bridge.
  • Race, failure-injection, fuzz, allocation-budget, latency-budget, and
    benchmark coverage.

Fixed

  • Give every stack route an independently owned WithAttrs slice so one
    downstream handler cannot mutate attributes observed by another.
  • Deep-clone nested group slices for stack fan-out and bound attributes so
    group mutation cannot cross sink boundaries.
  • Preserve context values while stripping cancellation from async delivery, and
    make block overflow independent of cancellation as required by slog.Handler.
  • Normalize capture output by ignoring zero and empty-group attributes, inlining
    empty-key groups, and deep-cloning nested groups in returned snapshots.
  • Return successful repeated shutdown deterministically once async draining has
    completed, even when a later caller supplies an already canceled context.
  • Deep-clone nested groups before invoking custom samplers so sampler mutation
    cannot alter the downstream record.
  • Isolate every redaction rule from nested group storage so a custom rule cannot
    mutate structure and bypass later secret rules.

Release integrity

  • Source commit: fc1898e72be8827f3c591f73d127c2642b96022e
  • Exact-head CI: https://github.com/faustbrian/go-log/actions/runs/32907574403
  • Release dry-run: urn:sha256:45fbbe38692303e7be9f542720c6ed5f72fbe352f86a2add4a2cccc82e26b2da
  • 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