|
| 1 | +# Changelog |
| 2 | + |
| 3 | +Versions below refer to **toolchains_llvm**, not LLVM or Bazel. Historical |
| 4 | +entries record notable user-facing feature introductions, checked against |
| 5 | +the first release tag containing their implementation. They are not an |
| 6 | +exhaustive list of fixes, dependency updates, or newly catalogued LLVM archives. |
| 7 | +See the [GitHub releases](https://github.com/bazel-contrib/toolchains_llvm/releases) |
| 8 | +for release artifacts and the [README](README.md) for configuration and requirements. |
| 9 | + |
| 10 | +## 1.11.0 |
| 11 | + |
| 12 | +### Added |
| 13 | + |
| 14 | +- Generic, checksum-pinned downloadable linkers selected by name through |
| 15 | + `linker`, with `linker_version` / `linker_versions` supporting exact versions |
| 16 | + and `first` / `latest` requirements. The built-in catalogue initially contains |
| 17 | + mold; other linker names can be supplied through inline or JSONC catalogues. |
| 18 | +- Linker catalogue controls, including custom entries, disabling the built-in |
| 19 | + catalogue, and the `linker_features` capability list. |
| 20 | +- Optional mold version inference from an explicitly injected mold Bazel |
| 21 | + module. Depending on that module is not required to use a catalogued mold |
| 22 | + release with an explicit version or requirement. |
| 23 | +- Feature-based toolchain overrides with signed predicates such as |
| 24 | + `features = ["thin_lto", "-msan"]`, optional target filters, default fallback, |
| 25 | + ambiguity checks, and configurable merge/reset behavior. Matching uses |
| 26 | + configuration-level `--features` / `--host_features`, not rule-local features. |
| 27 | +- Linker-managed macOS ThinLTO through configuration-level `--features=thin_lto`, |
| 28 | + including independent `--host_features` handling for build tools. Linux's |
| 29 | + existing distributed ThinLTO path is unchanged. |
| 30 | +- Python-based distribution updater that refreshes both the LLVM catalogue and |
| 31 | + the mold catalogue, retaining the BCR mold version and the three newest stable |
| 32 | + releases. `utils/update_distributions.sh` remains the shell entry point. |
| 33 | + |
| 34 | +### Fixed |
| 35 | + |
| 36 | +- Retain xz, zstd, and gzip archive metadata, but automatically select only xz |
| 37 | + or gzip until Bazel can extract LLVM's large-window zstd archives. Both |
| 38 | + distribution helper scripts now retain all formats instead of dropping xz |
| 39 | + when an equivalent zstd asset exists. |
| 40 | +- Warn when LLVM 23 on macOS uses its bundled linker with the known SDK/TAPI |
| 41 | + incompatibility, suggesting the native `auto` linker override. |
| 42 | +- Include `libLTO.dylib` in Apple linker sandbox inputs and omit redundant `-lm` |
| 43 | + on macOS. |
| 44 | +- Apply MSan instrumentation to C compilation as well as C++, and fail loudly |
| 45 | + when MSan is requested on an unsupported target, including macOS. |
| 46 | +- Correct the README's archive-selection policy and distribution updater |
| 47 | + dependencies; exercise both distribution scripts in Linux/macOS CI. |
| 48 | + |
| 49 | +## [1.10.0](https://github.com/bazel-contrib/toolchains_llvm/tree/v1.10.0) |
| 50 | + |
| 51 | +- Configurable linker selection: empty/default for the linker bundled with |
| 52 | + LLVM, `auto` for the execution platform's native linker, or an explicit |
| 53 | + absolute path. |
| 54 | + |
| 55 | +## [1.9.1](https://github.com/bazel-contrib/toolchains_llvm/tree/v1.9.1) |
| 56 | + |
| 57 | +- Experimental C++ named modules, including `clang-scan-deps` integration. |
| 58 | + |
| 59 | +## [1.9.0](https://github.com/bazel-contrib/toolchains_llvm/tree/v1.9.0) |
| 60 | + |
| 61 | +- Explicit LLVM prerelease selection and prerelease-aware requirements. |
| 62 | +- External JSONC distribution files and disabling the built-in LLVM catalogue. |
| 63 | +- Direct zstd archive recognition. |
| 64 | +- LeakSanitizer integration. |
| 65 | + |
| 66 | +## [1.8.0](https://github.com/bazel-contrib/toolchains_llvm/tree/v1.8.0) |
| 67 | + |
| 68 | +- JSONC distribution buckets and the named distribution helper scripts. |
| 69 | +- Per-target toolchain roots through `target_toolchain_roots`. |
| 70 | +- `extra_linker_files` and per-target extra-file extension tags. |
| 71 | +- Expanded dynamic-libstdc++/Yocto sysroot layouts and SDK libc++ on Darwin. |
| 72 | +- MSan with an instrumented libc++ overlay and the current sanitizer feature |
| 73 | + integration. |
| 74 | +- Bare-metal RISC-V 64-bit targets. |
| 75 | + |
| 76 | +## [1.7.0](https://github.com/bazel-contrib/toolchains_llvm/tree/v1.7.0) |
| 77 | + |
| 78 | +- Custom rules-based C++ features via `extra_known_features` and |
| 79 | + `extra_enabled_features`. |
| 80 | +- RISC-V 64-bit Linux targets. |
| 81 | + |
| 82 | +## [1.6.0](https://github.com/bazel-contrib/toolchains_llvm/tree/v1.6.0) |
| 83 | + |
| 84 | +- `first` / `latest` LLVM version requirements and environment-derived version |
| 85 | + requirements. |
| 86 | +- Additive `extra_*` flag attributes. |
| 87 | + |
| 88 | +## [1.5.0](https://github.com/bazel-contrib/toolchains_llvm/tree/v1.5.0) |
| 89 | + |
| 90 | +- `extra_llvm_distributions`, including full URL/path entries. |
| 91 | +- Header parsing and fastbuild compiler flags. |
| 92 | +- Bare-metal x86-64 and RISC-V 32-bit targets. |
| 93 | + |
| 94 | +## [1.4.0](https://github.com/bazel-contrib/toolchains_llvm/tree/v1.4.0) |
| 95 | + |
| 96 | +- More convenience tool aliases. |
| 97 | +- WebAssembly WASI Preview 1 and Linux ARMv7 targets. |
| 98 | + |
| 99 | +## [1.3.0](https://github.com/bazel-contrib/toolchains_llvm/tree/v1.3.0) |
| 100 | + |
| 101 | +- Initial `dynamic-stdc++` support. |
| 102 | +- C-only compiler flags. |
| 103 | +- Additional exported Clang tools/libraries. |
| 104 | +- WebAssembly `wasm32-unknown-unknown` and `wasm64-unknown-unknown` targets. |
| 105 | + |
| 106 | +## [1.2.0](https://github.com/bazel-contrib/toolchains_llvm/tree/v1.2.0) |
| 107 | + |
| 108 | +- Custom platform constraints and optional libunwind linking. |
| 109 | + |
| 110 | +## [1.1.0](https://github.com/bazel-contrib/toolchains_llvm/tree/v1.1.0) |
| 111 | + |
| 112 | +- `llvm-profdata` support for coverage data merging. |
| 113 | + |
| 114 | +## [1.0.0](https://github.com/bazel-contrib/toolchains_llvm/tree/1.0.0) |
| 115 | + |
| 116 | +- Strict header dependencies through `layering_check`. |
| 117 | +- Additional compiler sandbox inputs through `extra_compiler_files`. |
| 118 | +- Explicit execution-platform configuration distinct from the configuring host. |
| 119 | + |
| 120 | +## [0.9](https://github.com/bazel-contrib/toolchains_llvm/tree/0.9) |
| 121 | + |
| 122 | +- Bzlmod integration. |
| 123 | +- Per-host LLVM versions through `llvm_versions`. |
| 124 | + |
| 125 | +## [0.8.1](https://github.com/bazel-contrib/toolchains_llvm/tree/0.8.1) |
| 126 | + |
| 127 | +- Apple Silicon host support using LLVM 15 distributions. |
| 128 | + |
| 129 | +## [0.8](https://github.com/bazel-contrib/toolchains_llvm/tree/0.8) |
| 130 | + |
| 131 | +- `target_settings` for toolchain selection. |
| 132 | +- An `llvm-symbolizer` target. |
| 133 | + |
| 134 | +## [0.7](https://github.com/bazel-contrib/toolchains_llvm/tree/0.7) |
| 135 | + |
| 136 | +- Per-platform download URLs/checksums and mirror configuration. |
| 137 | +- C++ standard and standard-library selection, and flag overrides. |
| 138 | +- Convenience `clang-format`, `llvm-cov`, and `omp` targets. |
| 139 | + |
| 140 | +## [0.6](https://github.com/bazel-contrib/toolchains_llvm/tree/0.6) |
| 141 | + |
| 142 | +- Bring Your Own LLVM through `toolchain_roots` and a separate LLVM distribution |
| 143 | + repository. |
| 144 | +- Target-aware cross-compilation and AArch64 support. |
| 145 | +- Authenticated downloads. |
| 146 | +- Inheritance of Bazel's Unix toolchain configuration, including Linux ThinLTO. |
| 147 | + |
| 148 | +## [0.4.4](https://github.com/bazel-contrib/toolchains_llvm/tree/0.4.4) |
| 149 | + |
| 150 | +- Toolchain registration support. |
| 151 | + |
| 152 | +## [0.4](https://github.com/bazel-contrib/toolchains_llvm/tree/0.4) |
| 153 | + |
| 154 | +- Custom sysroots. |
| 155 | + |
| 156 | +## [0.2](https://github.com/bazel-contrib/toolchains_llvm/tree/0.2) |
| 157 | + |
| 158 | +- Automatic OS/distribution detection and explicit distribution selection. |
| 159 | + |
| 160 | +## [0.1](https://github.com/bazel-contrib/toolchains_llvm/tree/0.1) |
| 161 | + |
| 162 | +- Initial WORKSPACE-based LLVM toolchain. |
| 163 | +- Explicit LLVM version selection. |
| 164 | +- Absolute-path/sandbox configuration. |
| 165 | + |
| 166 | +## Interpreting availability |
| 167 | + |
| 168 | +- Introduction does not imply support for every Bazel version, LLVM release, |
| 169 | + platform, or later-added option. Consult the current README for requirements. |
| 170 | +- Dynamic libstdc++ first appeared in 1.3.0; its expanded sysroot/Yocto support |
| 171 | + arrived in 1.8.0. |
| 172 | +- MSan's instrumented-libc++ integration dates to 1.8.0. The C-instrumentation |
| 173 | + and unsupported-target fixes above do not make MSan a new 1.11.0 feature. |
| 174 | +- Linux ThinLTO is inherited from Bazel/rules_cc, so its behavior also depends |
| 175 | + on those versions. The 1.11.0 addition is the macOS integration. |
| 176 | +- Native and explicit-path linker selection shipped in 1.10.0. Downloadable |
| 177 | + catalogued linkers are a separate addition in 1.11.0. |
| 178 | +- Zstd recognition arrived in 1.9.0; it does not guarantee that Bazel can |
| 179 | + extract every zstd archive. The 1.11.0 compatibility fix deliberately |
| 180 | + excludes zstd from automatic selection while retaining its metadata. |
0 commit comments