github kunobi-ninja/kache v1.1.0
v1.1.0: cache correctness, incremental builds, read-only reuse

2 hours ago

Kache 1.1.0 fixes stale cache hits in Rust and C/C++, improves Rust edit loops, and adds reuse from an authorized local cache mounted read-only. It also repairs daemon upgrades and recovery when a cache volume fills up.

Install or update:

cargo install kache --locked --version 1.1.0

New installations can run kache init, then use Cargo as usual. Other installation methods.

Highlights

  • Cache keys now account for more source, build-script and native-library inputs. Inputs changed during compilation prevent affected results from being stored.
  • Rust edit loops retain incremental state after ordinary compile errors. Learning units seed that state from one compile's emitted dependency information.
  • Read-only consumers can restore remote entries from a stopped daemon, and writable jobs can restore from a trusted local fallback mounted read-only.

Added

  • Local fallback: writable jobs can reuse an authorized host cache without modifying it. Use a read-only mount and keep it within the same trust domain. #1470 by @jleni, adopted from @temporaryfix.
  • Build scripts: enable hermetic cached runs by setting build_script_hermetic = true in [cache]. This remains off by default. #1444 by @AlJohri.
  • Build explanations: kache explain <crate> names changed compiler-reported environment inputs without logging their values. Configured Cargo target directories can reuse matching donor units. #1443 by @jleni.

Fixed

  • Cache correctness: settled-timestamp checks, workspace-tree guards and build-script declarations prevent several stale Rust and C/C++ hits. Results are withheld when relevant inputs change during compilation. #1488, #1491 by @jleni.
  • Native outputs: restored C/C++ objects now trigger Make relinking, dependency paths follow the consumer checkout, and corrected native-library keys account for repeated link specifications and Apple install names. #1481, #1496 by @jleni.
  • Build-script launchers: symlinked installations, including Homebrew paths, produce working executable pins. #1496 by @jleni.
  • Remote access: read-only sessions keep their write restriction when starting a daemon. Upload workers process jobs concurrently, and accepted GC requests are no longer replayed after ambiguous timeouts. #1479 by @jleni.
  • Cleanup: busy Cargo profiles preserve recent-use evidence. Opt-in live-unit receipts protect outputs Cargo still considers fresh. Full-disk recovery can request eviction after a refused store. #1480, #1485, #1491 by @jleni.
  • macOS debugging: adaptive-incremental executables retain their debug information. #1440 by @alanxone.
  • APT updates: package uploads finish before repository indexes advertise them. Failed package uploads leave the live indexes unchanged. #1536 by @jleni, contributed by Viktor (@viktorius007).

Performance

  • Workspace guards share tree-memo work and reuse settled small-file hashes after metadata changes. #1493, #1520 by @jleni.
  • Adaptive Rust units retain incremental state through ordinary errors and avoid a separate discovery compile when first learning their inputs. #1491, #1497 by @jleni.

Upgrade notes

  • The first upgrade rebuilds file-hash and C/C++ memo data. Expect a cold build for C/C++ units and affected Rust units from packages with build scripts under the corrected keys.
  • Existing cleanup settings now also apply to eligible targets in sibling Git worktrees. Free-space recovery stays off by default; cache.auto_recover_min_free_bytes enables it.
  • If the old daemon remains after an upgrade, run kache daemon restart. Using 1.0.x and 1.1.0 together can repeatedly replace the shared daemon.
  • A selected AWS profile now fails explicitly if it cannot supply credentials. It no longer falls through to a different workload identity.
  • With cache.ignore_env = true, enable hermetic runs through build_script_hermetic in the file; KACHE_BUILD_SCRIPT_HERMETIC now follows the environment-override policy.

New Contributors

Contributors

alanxone AlJohri jleni temporaryfix viktorius007

Full changelog: v1.0.0...v1.1.0

Don't miss a new kache release

NewReleases is sending notifications on new releases.