Skip to content

v0.17.0: volume shards, C/C++ cache, predicted rustc keys

Latest

Choose a tag to compare

@pecorino-bot pecorino-bot released this 06 Sep 22:01
· 1 commit to main since this release
Immutable release. Only release title and notes can be modified.
v0.17.0
76d2b18

Volume-local cache shards, C and C++ objects on the remote, and rustc keys taken from the inputs each unit actually used.

cargo install kache --locked
mise use -g github:kunobi-ninja/kache@0.17.0

Highlights

  • [cache.volumes] keeps a store on the same volume as the checkout. The wrapper looks there first; the daemon imports remote hits into that shard.
  • Unix shims are the default C/C++ path. Object files can go to the remote, and the preprocessor memo hits across checkouts.
  • rustc can key from the input closure a unit discovered, and look that key up before re-deriving it.
  • Untrusted CI can read a remote but cannot write it.
  • Local cache defaults to 5% of the disk. Hits can compile-and-compare.

Features

  • gc: Track retained target outputs and disk reclamation (#870)
  • telemetry: Dump cache counters as OTLP JSON for Kartero (#874)
  • remote: Suppress writes from untrusted CI (#875)
  • init: Set HOST_CC and HOST_CXX, not CC (#876)
  • cc: Default shim farm and Makefile/PKGBUILD docs (#879)
  • cc: Digest user include-dir names in the object key (#878)
  • rustc: Pin native link runtime and admit bundled WASM (#880)
  • cc: Publish C/C++ objects to the remote (#883)
  • wrapper: Machine-wide compile scheduler (#885)
  • gc: Default local_max_size to 5% of the cache disk (#882)
  • prefetch: Prefer identity manifests and drop guppy (#881)
  • wrapper: Compile-and-compare verify on hits (#884)
  • scheduler: Discover cgroup resource limits (#895)
  • report: Attribute wrapper time to nested trace phases (#917)
  • cc: Cache preprocessor-mode compiles that name their output (#935)
  • key: Remember the input closure each rustc unit discovers (#938)
  • key: Derive the rustc key from a recorded closure (#939)
  • key: Prove predictions end to end and count the evidence (#942)
  • report: Count prediction mismatches so the feature can qualify (#945)
  • config: Parse and match volume-local store shards (#948)
  • wrapper: Look up and store on the volume shard first (#957)
  • service: Keep candidate metadata and make the seed authoritative (#964)
  • Report the latest recorded build session (#966)
  • daemon: Import remote hits into the requesting volume shard (#962)

Fixes

  • store: Read the executable bit from the compiler output, not the staged blob (#877)
  • cache: Model frontend job count (#894)
  • key: Drop -C extra-filename from the dep-info pre-pass (#912)
  • cache: Key native Windows MSVC link inputs (#918)
  • cli: Honour the --since window and label it honestly (#923)
  • key: Drop joined -o spellings from the dep-info pre-pass (#934)
  • key: Verify guarded inputs across clock domains (#936)
  • clean: Don't report an unflushed file as unreclaimable (#937)
  • store: Advise once when ingest cannot hardlink across volumes (#946)
  • key: Let a predicted key ask the remote before re-deriving it (#947)
  • hardlink: Surface EXDEV/EPERM fallback reasons and doctor probe (#949)
  • key: Make sampled verification sample, and read the right report object (#955)
  • nix: Expose prebuilt compiler shims (#963)
  • perf-gate: Do not fail when the cold build slowed as much

Performance

  • prefetch: Overlap identity lookup with planning (#891)
  • cc: Make the preprocessor memo reachable (#927)
  • cc: Let the preprocessor memo cross checkouts (#928)
  • cc: Compare memo inputs as the expansion sees them (#929)
  • cc: Resolve include shadowing instead of enumerating it (#933)

Docs

  • Lead onboarding with kache init (#900)
  • Tighten the onboarding wording from #900 (#902)
  • Add the store diagrams and link the product page (#903)
  • remote: Bound a remote with the store's own policy (#921)
  • Guide README readers to Kunobi (#960)
  • Verify cache reuse across temporary worktrees (#967)

Internals

  • Extract shared cache entry formats (#950)
  • Extract local artifact storage (#953)
  • store: Share blob metadata validation (#959)
  • service: Move the planner store from SurrealDB to SQLite (#954)
  • Share filesystem measurements and file operations (#961)
  • wrapper: Share Rust cache-hit completion (#965)
  • fs: Share staged file publication (#969)

Full changelog: v0.16.1...v0.17.0