Release candidate. First cut of the 0.3.0 line — please field-test before the final release.
Headline: C/C++ object caching, the cross-platform groundwork (Platform trait, Windows-aware path normalization + daemon IPC), the declarative e2e harness, and a batch of Rust-cache cross-machine / cross-path correctness fixes.
⚠️ Cache invalidation.
CACHE_KEY_VERSIONadvanced 4 → 6 across this release. Every existing cache entry becomes unreachable on upgrade — the first build after upgrading is a one-time full rebuild. This is expected.
Scope. Executable caching (
KACHE_CACHE_EXECUTABLES) with its macOS OSO debug-map handling, and Windows release binaries, are deferred to a later milestone.
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
whereinstead ofwhichon 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
relocatephase 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
Full Changelog: v0.2.0...v0.3.0-rc1