github kunobi-ninja/kache v0.20.0
v0.20.0: keys that match the object

5 hours ago

C and C++ cache keys now refuse hits that would restore the wrong object, and they accept a few more compiles that used to pass through. Rust entries are unchanged. After upgrade, existing C/C++ entries are rebuilt once.

cargo install kache

Highlights

  • Objects that embed a checkout path in a string literal no longer restore into a different tree.
  • Compiles whose assembler reads files the key cannot see (.incbin, .include) are not cached.
  • macOS static archives with DWARF (ring and similar) hash as structure, not as a path-bound archive.
  • Native macOS cache keys work when SDKROOT is a filesystem SDK (nixpkgs Darwin).
  • Several C flags that only needed a classifier row now cache: -mavxvnni, the stack-protector family, -f[no-]unroll-loops, -f[no-]asynchronous-unwind-tables, and --.

Fixes

  • C/C++ string literals: -ffile-prefix-map does not rewrite ordinary strings. If a preprocessor expansion still contains the checkout root, that compile is keyed to this checkout. (#1012)
  • Assembler inputs: .incbin / assembler .include are not in the depfile. Those translation units compile uncached instead of serving a stale object. (#1022)
  • Mach-O DWARF archives: members with clang-shaped DWARF join the portable archive hash, so rlibs stop re-keying per checkout. (#1021)
  • macOS SDK identity: if xcrun --sdk <path> fails and the path is an SDK directory, kache reads SystemVersion.plist instead of failing closed. (#1025)
  • Classifier: nightly-unsupported flags listed above are now CC_FLAGS rows. Link mode, -E to stdout, and Windows linker identity are still passthrough. (#1031)

Full changelog: v0.19.0...v0.20.0

Don't miss a new kache release

NewReleases is sending notifications on new releases.