3.7 KiB
ConfigKit v0.6.0
This minor release reduces avoidable configuration-loading and inspection work, adopts ReleaseKit for source publication, and raises the consumer Go minimum to 1.26.0. The public configuration model remains unchanged from v0.5.0.
Changes
- Reduce temporary path allocations by sizing pointer-formatting buffers, combining final metadata traversal, reusing parsed sensitivity paths, and avoiding path construction when detecting inheritance. Effective and historical metadata indexes retain independently owned paths.
- Replace repeated resolution-coverage, metadata-update, CLI-overlap, and sensitivity-propagation scans with private indexes and incremental processing. Preserve diagnostic ordering, history, contextual path shapes, and redaction.
- Make presence-only metadata queries avoid materializing provenance. Prepare resolution replay descriptors and immutable mapping and inheritance-history lookups for inspection, and use ordered membership indexes for provenance collections. Returned records remain detached; explanations still replay complete trees and render on demand.
- Add a maintained public-API startup construction benchmark. The initial path formatting and metadata traversal experiments reproduced allocation reductions across local and downstream workloads. Later algorithmic improvements were validated behaviorally without a new benchmark campaign. Busy-host timings were inconclusive; no fixed speedup or allocation threshold is promised.
- Replace ConfigKit-owned release scripts with a small profile and the module-selected ReleaseKit v0.3.0 tool. The release procedure documents candidate preparation, tag-only publication, and failed-push recovery. Existing release checks and the successful-tag-push completion point remain unchanged; CI is not a gate.
- Adopt release policy 1.6, distinguishing the consumer Go minimum from the validation toolchain. Retire completed planning and measurement records into Git history while preserving performance candidates.
Compatibility and upgrade
The consumer minimum increases from Go 1.25.0 to Go 1.26.0. Install Go 1.26.0
or newer before upgrading, and update application build and CI environments that
still use Go 1.25. The go.mod directive records the consumer minimum; using a
newer validation patch does not itself raise that minimum. See the
consumer minimum policy.
Select this version and rebuild:
go get gitea.maximumdirect.net/eric/ConfigKit@v0.6.0
No application-code or configuration migration is required from v0.5.0. Public Go signatures, strict within-tier composition, recursive tier precedence, sibling inheritance, presence/null distinctions, provenance, secret handling, and synchronous completion retain their existing contracts. See the configuration contract and consumer guide.
The YAML dependency remains go.yaml.in/yaml/v4 v4.0.0-rc.6. ReleaseKit is a
declared Go tool dependency for maintainer commands, not a library runtime
import; its requirements participate in ConfigKit's module graph. Linux amd64
and arm64 remain release-validated targets, and macOS remains best-effort.
Maintainers should use the current release procedure instead of the retired
scripts/release.sh and scripts/release-check.sh commands.