Skip to content

v0.3.0-rc1

Pre-release
Pre-release

Choose a tag to compare

@jleni jleni released this 18 May 12:52
· 413 commits to main since this release
3f78b02

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_VERSION advanced 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 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

Full Changelog: v0.2.0...v0.3.0-rc1