github kunobi-ninja/kache v0.3.0

latest releases: v0.15.0-rc.2, v0.14.2, v0.14.1...
3 months ago

⚠️ More information in our blog

Highlights

  • Reflink-first restores. Cache hits try a copy-on-write reflink before a hardlink or plain copy, giving cheap restores on APFS, Btrfs, and XFS without the single-filesystem limit of hardlinks.
  • C/C++ build caching. Initial support for single-source -c object compiles (cc/gcc/g++/clang/clang++), behind a conservative argument allow-list: any flag kache has not classified forces a safe passthrough rather than a silent miscache.
  • Fallback compiler-wrapper. Compiles kache declines (link steps, MSVC, unmodeled flags) can be handed to a secondary wrapper such as sccache instead of running uncached. Opt in via KACHE_FALLBACK or [cache] fallback.
  • Windows groundwork. Cross-platform daemon IPC and cache restore, Task Scheduler daemon install, portable file locking, Unicode-safe path normalization, and an exploratory Windows CI job. Not a finished port yet, but the foundation is in place.
  • Source path exclusions. cache.exclude glob patterns in .kache.toml bypass kache entirely for chosen source paths.
  • Correctness hardening. rustc cache-key fixes (--emit keying, path-portable dep-info, DWARF comp_dir remapping), path-independent C/C++ objects, output discovery from rustc artifact notifications, and LTO + stripped release builds.

What's Changed

  • docs: rewrite site to mirror README polish, flatten layout by @jleni in #46
  • Revise README installation instructions by @jleni in #48
  • feat(windows): swap to rustls-aws-lc and add exploratory CI (#45) by @jleni in #50
  • refactor(compiler): introduce Compiler trait, route rustc through it by @jleni in #53
  • refactor(link): try reflink before hardlink/copy by @jleni in #54
  • ci(coverage): bump threshold to 35% (push-only) + HTML artifact by @jleni in #55
  • fix(doctor): use where instead of which on Windows by @emmanuelm41 in #62
  • refactor(compiler): centralize per-artifact dispatch via ArtifactKind by @jleni in #56
  • fix(doctor): clean stale lock files with --fix on Windows by @emmanuelm41 in #63
  • build: enable LTO, codegen-units=1, and strip for release by @jleni in #66
  • refactor(compiler): post-restore actions + verify-then-sign + classify centralization by @jleni in #65
  • test(e2e): add end-to-end smoke test for cache lifecycle by @emmanuelm41 in #69
  • feat(compiler): C-family wrapper skeleton with passthrough + e2e by @jleni in #70
  • refactor(compiler): extract Platform trait for OS-specific concerns by @jleni in #72
  • fix(cc): pass through the cc-crate compiler-family probe by @jleni in #73
  • feat(windows): cross-platform daemon IPC and cache restore by @jleni in #64
  • feat(windows): add Task Scheduler support for daemon install by @emmanuelm41 in #76
  • test(e2e): add relocate phase to expose cache-key path leaks by @jleni in #74
  • test(e2e): binary-content inspection in [verify] (forbidden_substrings) by @jleni in #83
  • feat(path_normalizer): cross-platform path handling — Windows variants, Unicode safety, NFC normalization by @jleni in #84
  • feat(cc): C-family argument parser + refuse-to-cache detection (PR5-A) by @jleni in #86
  • feat(cc): single-source C/C++ object caching (PR5-B + PR5-C) by @jleni in #87
  • fix(daemon): socket roundtrip tests hang on macOS by @jleni in #89
  • ci: run the test suite and e2e harness on macOS by @jleni in #90
  • ci: fall back to GitHub-hosted macOS runners outside kunobi-ninja by @jleni in #91
  • feat(e2e): deterministic op-count metrics + assertions by @jleni in #92
  • test(e2e): differential + invalidation checks for C/C++ caching by @jleni in #93
  • fix(cc): allow-list flag classifier — close the silent-miscache hole by @jleni in #94
  • feat(cc): compiler-probe memoization + resolved-invocation cache key by @jleni in #97
  • fix(e2e): carry the toolchain pin into the relocate phase by @jleni in #98
  • fix(cc): make compiled objects path-independent (#78) by @jleni in #99
  • fix(rustc): path-portable dep-info — relocated cache hits stay fresh by @jleni in #100
  • fix(cache_key): key on --emit; add rustc key-correctness matrix by @jleni in #101
  • feat(rustc): discover outputs from rustc artifact notifications by @jleni in #102
  • fix(restore): compute artifact content before materializing it by @jleni in #103
  • fix(path-normalizer): remap the rustc CWD so DWARF comp_dir is clean by @jleni in #104
  • feat(cache): add source path exclusions by @jleni in #105
  • test(e2e): falsifiability — negative-control mode + direct dep-info assertion by @jleni in #106
  • test(e2e): add rust-debug debug-profile fixture by @jleni in #107
  • test(e2e): add workspace + cargo-check breadth fixtures by @jleni in #108
  • feat(config): fall back to a secondary compiler-wrapper (sccache) on passthrough by @jleni in #110

Full Changelog: v0.2.0...v0.3.0

Don't miss a new kache release

NewReleases is sending notifications on new releases.