github mozilla/sccache v0.19.0

4 hours ago

sccache 0.19.0

Summary

sccache 0.19.0 is mostly a correctness and robustness release: multi-arch caching no longer
risks stale universal objects, remote storage errors are no longer hidden as cache misses, the
multi-level cache tolerates unavailable optional levels, and distributed compilation got a long
list of fixes.

Highlights:

  • Cache-key correctness: with SCCACHE_CACHE_MULTIARCH, gcc/clang compilations with several
    -arch values are now preprocessed once per architecture, so code guarded by __aarch64__,
    __SSE2__ and the like reaches the hash. Older single-pass preprocessor cache entries are not
    reused, and multi-arch compilations are no longer distributed (#2871). Include validation in
    the preprocessor cache is fixed (#2740).
  • Rust: dep-info is written locally instead of being restored from the cache, so an entry
    produced in another checkout or on another machine no longer points cargo at paths that don't
    exist (#2894). .rmeta artifact notifications are streamed to cargo before the compile
    finishes, including on cache misses and in client-side mode, so pipelining isn't held back
    (#2875). Rust outputs are computed while the rest of the hashing runs (#2465).
  • MSVC: C++20 named modules built with clang-cl are cached (#2876), the CL and _CL_
    environment variables are honored (#2886), /Tc and /Tp are handled as input arguments
    (#2904), and a -Fd pointing to a directory no longer turns a successful compile into a fatal
    error (#2933).
  • Storage: remote read errors (credentials, network) are reported as cache errors instead of
    silently counted as misses (#2928). A multi-level cache can start when a level that its write
    policy treats as optional is unavailable (#2890), and client-side raw hits are backfilled into
    faster levels with per-level stats (#2913, #2915). TLS trust roots are restored after the
    reqwest 0.13 upgrade (#2917). WebDAV gained SCCACHE_WEBDAV_DISABLE_CREATE_DIR (#2872).
  • Distributed compilation: Rust toolchains are packaged more selectively and work with distro
    toolchains in lib64 (#2852), crates without a metadata hash are packaged correctly (#2921),
    evicted toolchain archives are repackaged (#2893), job IDs no longer collide across scheduler
    restarts (#2895), the Rust sysroot is part of the weak toolchain key (#2900), and the overlay
    builder resolves toolchain and input paths from inside a chroot (#2908). Remote compile
    failures now report the real exit code instead of "killed by signal" (#2932).
  • Stats: --show-stats now shows the effective cache mode (#2914), and Rust compilations
    that couldn't be cached are broken down by crate type (#2897).

Welcome to 14 new contributors!

Features

Compiler support

Fixes

Dependencies

Tests & CI

Cleanup

New Contributors

Full Changelog: v0.18.0...v0.19.0

Don't miss a new sccache release

NewReleases is sending notifications on new releases.