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 initHighlights
- 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.dbduring quiet periods.cache.index_auto_compactis enabled by default; set it tofalseto disable automatic compaction. #1120 by @jleni. - Service:
POST /v1/build-timelinesaccepts compressed build timeline records through the service's existing authentication gate.kache telemetry pushuploads 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 gckeeps 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 initchecks 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
Full changelog: v0.25.0...v0.26.0