{"slug": "kache-v0-21-caching-c-c-links-nvcc-objects-and-the-clang-cl-flags-firefox-uses", "title": "Kache v0.21:caching C/C++ links,nvcc objects,and the Clang-CL flags Firefox uses", "summary": "Kache v0.21.0 was released by the kunobi-ninja project, adding opt-in caching for C/C++ whole-program links, single-source nvcc -c compiles, and clang-cl flags used by Firefox Windows builds. The release also introduces the KACHE_TRUST_DOMAIN environment variable to isolate a persistent local store under $KACHE_CACHE_DIR/<label>/ and reads host defaults from /etc/kache/config.toml. Kache 0.21.0 ships via cargo install, Homebrew, Scoop, and GitHub release binaries.", "body_md": "[pecorino-bot](/pecorino-bot)released this\n\n[1 commit](/kunobi-ninja/kache/compare/v0.21.0...main)to main since this release\n\nThis release caches more of a real C/C++ compile: opt-in whole-program links, preprocessor `-E` to stdout, and the clang-cl flags Firefox Windows actually passes. Single-source `nvcc -c` is cached. A machine can set defaults under the job file, and a trusted node disk can isolate stores with `KACHE_TRUST_DOMAIN`.\n\n```\ncargo install kache --locked --version 0.21.0\n```\n\nHomebrew, Scoop, and the [GitHub release binaries](https://github.com/kunobi-ninja/kache/releases/tag/v0.21.0) also ship 0.21.0.\n\n## Highlights\n\n- **Links and `-E`:** C/C++ whole-program links cache when you opt in.`-E` without`-o` stores the expansion and reprints it on stdout.\n- **Windows C++:** clang-cl`-Oy` ,`-Zl` ,`/fp:fast` , and`/clang:…` are keyed, so those Firefox TUs stop passing through.\n- **CUDA and the machine:**`nvcc -c` is cached.`/etc/kache/config.toml` is the host layer.`KACHE_TRUST_DOMAIN` scopes a persistent local store.\n\n## Added\n\n- \n**cc:** Whole-program links and their sidecars cache when`KACHE_CACHE_CC_LINKS` is on. Off by default. Restored binaries are signed on macOS;`.dSYM` directories store as`{name}.dsym.tar` . Include search treats a file in the middle of a`-I` path like a missing directory. Closed-set`-m` flags are keyed. Windows cargo-linker wrappers follow`MOZ_CARGO_WRAP_(HOST_)LD` . ([#1040](https://github.com/kunobi-ninja/kache/pull/1040) ,[#1044](https://github.com/kunobi-ninja/kache/pull/1044) by[@jleni](https://github.com/jleni) )\n\n```\n[cache]\ncache_cc_links = true\nexport KACHE_CACHE_CC_LINKS=1\n```\n\n- \n**cc:**`-E` without`-o` stores the expansion as a`stdout.i` blob and writes it back to process stdout on a hit. Named`-E -o file.i` already cached.`-o -` still passes through. ([#1053](https://github.com/kunobi-ninja/kache/pull/1053) by[@jleni](https://github.com/jleni) )\n- \n**nvcc:** Single-source`-c` compiles go through the local store and remote.`-march=native` ,`-arch=native` , and mode-changing`NVCC_PREPEND_FLAGS` /`NVCC_APPEND_FLAGS` refuse instead of sharing a key across machines. ([#1038](https://github.com/kunobi-ninja/kache/pull/1038) ,[#1042](https://github.com/kunobi-ninja/kache/pull/1042) ,[#1050](https://github.com/kunobi-ninja/kache/pull/1050) by[@jleni](https://github.com/jleni) )\n- \n**config:**`/etc/kache/config.toml` is read under the chosen file. Env still wins.`KACHE_HOST_CONFIG` points at another host file; empty turns the layer off.`kache doctor` names which host key a job overrides. ([#1039](https://github.com/kunobi-ninja/kache/pull/1039) by[@jleni](https://github.com/jleni) )\n- \n**cache:**`KACHE_TRUST_DOMAIN` isolates the store at`$KACHE_CACHE_DIR/<label>/` . One path component (`[A-Za-z0-9._-]` ). Invalid labels leave the path unchanged. Keep`KACHE_RUNTIME_DIR` on job scratch. Do not set this on public or fork jobs. ([#1046](https://github.com/kunobi-ninja/kache/pull/1046) by[@jleni](https://github.com/jleni) )\n\n```\nexport KACHE_CACHE_DIR=/var/cache/kache\nexport KACHE_TRUST_DOMAIN=github.kunobi-ninja.kache\nexport KACHE_RUNTIME_DIR=\"$RUNNER_TEMP/kache-runtime\"\n```\n\n- \n**telemetry:**`kache stats` and`kache telemetry write` report index/WAL size and last GC.`KACHE_RECORD_SESSIONS=1` appends session and GC logs under the cache dir. Off by default. ([#1041](https://github.com/kunobi-ninja/kache/pull/1041) by[@jleni](https://github.com/jleni) )\n\n## Fixed\n\n- **cc:** clang-cl`-Oy` (omit frame pointer),`-Zl` ,`/fp:fast` ,`/clang:<flag>` ,`-fcxx-exceptions` , and`-ffreestanding` are classified. ([#1048](https://github.com/kunobi-ninja/kache/pull/1048) ,[#1049](https://github.com/kunobi-ninja/kache/pull/1049) by[@jleni](https://github.com/jleni) )\n- **shims:** Homebrew compiler shims point at`opt/<formula>/bin/kache` , so they survive formula upgrades. Legacy keg links migrate. ([#1043](https://github.com/kunobi-ninja/kache/pull/1043) by[@achembarpu](https://github.com/achembarpu) ,[#1045](https://github.com/kunobi-ninja/kache/pull/1045) by[@jleni](https://github.com/jleni) )\n\n## Docs\n\n- CUDA getting-started for `nvcc -c` . ([#1042](https://github.com/kunobi-ninja/kache/pull/1042) by[@jleni](https://github.com/jleni) )\n- CI node-local store: `KACHE_TRUST_DOMAIN` and`KACHE_RUNTIME_DIR` . ([#1046](https://github.com/kunobi-ninja/kache/pull/1046) by[@jleni](https://github.com/jleni) )\n\n## New Contributors\n\n- [@achembarpu](https://github.com/achembarpu) made their first contribution in[#1043](https://github.com/kunobi-ninja/kache/pull/1043)\n\n## Contributors\n\n**Full changelog:** `v0.20.0...v0.21.0`", "url": "https://wpnews.pro/news/kache-v0-21-caching-c-c-links-nvcc-objects-and-the-clang-cl-flags-firefox-uses", "canonical_source": "https://github.com/kunobi-ninja/kache/releases/tag/v0.21.0", "published_at": "2026-09-14 08:29:53+00:00", "updated_at": "2026-09-14 09:08:22.032264+00:00", "lang": "en", "topics": ["developer-tools", "ai-infrastructure"], "entities": ["Kache", "kunobi-ninja", "jleni", "achembarpu", "Firefox", "CUDA", "clang-cl", "GitHub"], "alternates": {"html": "https://wpnews.pro/news/kache-v0-21-caching-c-c-links-nvcc-objects-and-the-clang-cl-flags-firefox-uses", "markdown": "https://wpnews.pro/news/kache-v0-21-caching-c-c-links-nvcc-objects-and-the-clang-cl-flags-firefox-uses.md", "text": "https://wpnews.pro/news/kache-v0-21-caching-c-c-links-nvcc-objects-and-the-clang-cl-flags-firefox-uses.txt", "jsonld": "https://wpnews.pro/news/kache-v0-21-caching-c-c-links-nvcc-objects-and-the-clang-cl-flags-firefox-uses.jsonld"}}