Most supported operating systems ship with clang-17 (or later), so bump the minimum to that and allow new code to drop workarounds for previous clang bugs.
(Apart from dropping the small workaround, this bump allows the ci_native_nowallet_libbitcoinkernel
CI to run on riscv64 without running into an ICE with clang-16.)
This patch will only be released in version 31.x, next year (2026).
For reference:
- https://packages.debian.org/bookworm/clang-19
- https://packages.ubuntu.com/noble/clang (clang-18)
- CentOS-like 8/9/10 ship clang-17 (and later) via Stream
- FreeBSD 12/13 ship clang-17 (and later) via packages
- OpenSuse Tumbleweed ships with https://software.opensuse.org/package/clang (clang21); No idea about OpenSuse Leap
On operating systems where the clang version is not shipped by default, the user would have to use GCC, or install clang in a different way. For example:
- https://packages.debian.org/bookworm/g++ (g++-12)
- https://packages.ubuntu.com/jammy/g++ (g++-11)
- https://apt.llvm.org/, or nix, or guix, or compile clang from source, …
Ubuntu 22.04 LTS does not ship with clang-16 (the previous minimum required), nor with clang-17, so one of the above workarounds is needed there.
macOS 14 is unaffected, and the previous minimum requirement of Xcode15.0 remains, see also https://github.com/bitcoin/bitcoin/blob/919e6d01e93a57d991ed456bc67c43605583ada8/depends/hosts/darwin.mk#L3-L4. (Modulo compiling the fuzz tests, which requires https://github.com/bitcoin/bitcoin/blob/919e6d01e93a57d991ed456bc67c43605583ada8/.github/workflows/ci.yml#L149)