github kunobi-ninja/kache v0.26.0
v0.26.0: automatic cache maintenance, leaner compiler wrappers

3 hours ago

Kache now reclaims space from its index automatically and repairs leaked blob references when the machine is quiet. This release also reduces C/C++ wrapper work and makes kache init verify that the replacement daemon is ready.

cargo install kache --locked --version 0.26.0
kache init

Highlights

  • Automatic maintenance compacts the index, repairs reference counts, and prunes unused prediction records.
  • Automatic GC drivers share a trigger and backoff, reducing repeated sweeps when a store cannot free space.
  • C/C++ preprocess memos distinguish sources with identical relative paths, avoiding repeated preprocessing across projects such as tree-sitter grammars.

Added

  • Maintenance: The daemon compacts index.db during quiet periods. cache.index_auto_compact is enabled by default; set it to false to disable automatic compaction. #1120 by @jleni.
  • Service: POST /v1/build-timelines accepts compressed build timeline records through the service's existing authentication gate. kache telemetry push uploads completed build timelines to that endpoint using the configured planner connection. #1130 by @jleni.

Fixed

  • Storage: Reimporting downloaded entries no longer leaks blob references. The daemon repairs existing reference-count drift during quiet periods so unowned blobs can be reclaimed. #1125 by @jleni.
  • GC: Automatic sweeps share the same size threshold and backoff. Wrappers ask a running daemon to collect instead of starting another worker. Explicit kache gc keeps its existing behavior. #1137 by @jleni.
  • Maintenance: GC removes stale key lock files and prunes input predictions unused for 30 days. Existing predictions receive a fresh timestamp on upgrade. #1139 by @jleni.
  • Daemon: kache init checks readiness without waiting for cache statistics and requires a fresh response after replacement. Recovery preserves service ownership and targets the selected cache coordinator. #1135 by @jleni.
  • Windows: A cache put can recover when another process publishes or removes the same blob during its initial publication attempt. #1136 by @jleni.

Performance

  • C/C++: Preprocess memos include source content in their identity, preventing collisions between different sources at the same relative path. Prefix-map rewriting skips bytes that cannot start a match. #1132 by @jleni.
  • C/C++: Batched header memo lookups, faster include-shadow checks, and fewer scheduling-hint flushes reduce work on each compile. #1124 by @jleni.
  • Rust: Cold builds can defer input discovery for proc-macro dependents. Presence checks distinguish compilation units sharing a crate name, and older stores gain the crate-name index. #1121, #1133 by @jleni.

Contributors

jleni

Full changelog: v0.25.0...v0.26.0

Don't miss a new kache release

NewReleases is sending notifications on new releases.