Releases: MeshInspector/toolchains
Release list
ld64.lld 22.1.8 PGO for macOS (x86_64 and arm64)
ld64.lld 22.1.8, the linker used for the MeshLib Python bindings on macOS, built with -O3 and IR-PGO by the same Clang 22.1.8 from our llvm-pgo kegs that calls it.
Homebrew stopped bottling lld for Intel macOS when it became a Tier 3 configuration, and neither the llvm-pgo keg nor the bottled llvm@22 contains ld64.lld, so it is built here instead.
| asset | arch | built on | SDK | minos |
size |
|---|---|---|---|---|---|
ld64.lld-22.1.8-pgo.x86_64-macos12 |
x86_64 | macOS 12.7.6, Xeon E5-1650 v2 | 12.3 | 12.0 | 59.2 MiB |
ld64.lld-22.1.8-pgo.arm64-macos13 |
arm64 | macOS 13.4.1, M1 Pro | 13.3 | 13.0 | 54.0 MiB |
Both link only /usr/lib/libSystem.B.dylib, libz.1.dylib and libc++.1.dylib: no keg-only Homebrew libraries, so a plain download is enough (LLVM_ENABLE_ZSTD, LIBXML2 and TERMINFO are off).
Profile and gain
The profile is collected by linking a Mach-O dylib of ~165 objects twice, plainly and with ThinLTO, which is the shape of a bindings link. Measured against a plain -O3 build of the same sources by the same compiler, min of 5 links each:
| x86_64 | arm64 | |
|---|---|---|
| plain link | 0.18 s -> 0.17 s | 0.05 s -> 0.05 s |
| ThinLTO link | 6.50 s -> 4.98 s (-23%) | 1.67 s -> 1.41 s (-16%) |
Verified
Each binary was installed on the hosted runners and used to link a ThinLTO dylib with the keg's Clang: macos-15-intel (15.7.9) and macos-26-intel (26.6.1) for x86_64, macos-15 (15.7.7) for arm64. A binary built against the older SDK runs on the newer systems, which is why the build happens on the oldest machines we have.
Install
curl -fsSL -o /usr/local/Cellar/llvm-pgo/22.1.8_2/bin/ld64.lld \
https://github.com/MeshInspector/toolchains/releases/download/lld-22.1.8-pgo-macos/ld64.lld-22.1.8-pgo.x86_64-macos12
chmod +x /usr/local/Cellar/llvm-pgo/22.1.8_2/bin/ld64.lld
Placing it next to the keg's clang++ is enough for -fuse-ld=lld to find it; sha256.txt carries the checksums (shasum -a 256 -c sha256.txt after cd into the download directory).
Built by .github/workflows/build-lld-macos.yml.
clang 22.0.0git PGO for emsdk 4.0.19
Drop-in replacement for /emsdk/upstream/bin in emscripten/emsdk:4.0.19: the same llvm-project revision emsdk ships (12f392cff10fcc70b4ec4f01ab386922742e9136, clang 22.0.0git), rebuilt with -O3 + IR-PGO + ThinLTO instead of upstream's ThinLTO-only release configuration. Built inside the emscripten/emsdk:4.0.19 image itself (Ubuntu jammy, glibc 2.35). Training: emscripten system libraries for wasm32 and wasm64 via embuilder, plus a slice of LLVM itself for the frontend and middle-end. Install prefix inside the tarball: llvm-emsdk-4.0.19-pgo/.
clang 18.1.8 PGO dylib (Linux)
clang/lld 18.1.8 built with -O3 + IR-PGO (no LTO), RTTI, and distro-style libLLVM.so/libclang-cpp.so in a rockylinux:8 container (glibc 2.28). Stage1 gcc-toolset-11; training = compiling LLVMSupport/Core/Analysis. Install prefix inside the tarball: llvm-pgo-dylib-18.1.8/.
llvm-pgo 22.1.8_2 (x86_64, /usr/local)
PGO-optimized LLVM/Clang 22.1.8 keg for x86_64 macOS, prefix /usr/local.
Built on a MeshInspector self-hosted Intel runner from a local-tap copy of homebrew-core's llvm.rb (llvmorg-22.1.8) with ENV.O3 and the formula's arm-only PGO gate removed, installed via brew install --build-bottle to enable the PGO+ThinLTO pipeline. z3 excluded; superenv baseline -march=nehalem. ~30% faster at compiling C++ than plain builds of the same version.
sha256: 8f1f1d97e4a5391c7f871bc5cf9601a9b4a1262e6e61f1538327bb48d7ef71ed
Usage on a GitHub-hosted Intel macOS runner:
curl -fsSL -o /tmp/k.tar.gz https://github.com/MeshInspector/toolchains/releases/download/llvm-pgo-22.1.8_2-x64/llvm-pgo-22.1.8_2.x86_64_usr-local.tar.gz
echo "8f1f1d97e4a5391c7f871bc5cf9601a9b4a1262e6e61f1538327bb48d7ef71ed /tmp/k.tar.gz" | shasum -a 256 -c -
tar -xzf /tmp/k.tar.gz -C /usr/local/Cellar
ln -sfn ../Cellar/llvm-pgo/22.1.8_2 /usr/local/opt/llvm-pgo
brew install --quiet zstd xz # runtime deps (python@3.14 only needed for lldb)
External brew deps referenced by the keg: see deps.txt.
llvm-pgo 22.1.8_2 (arm64, /opt/homebrew)
PGO-optimized LLVM/Clang 22.1.8 keg for arm64 macOS, prefix /opt/homebrew.
Built on a MeshInspector self-hosted runner from a local-tap copy of homebrew-core's llvm.rb (llvmorg-22.1.8) with ENV.O3, installed via brew install --build-bottle to enable the formula's PGO+ThinLTO pipeline (stage-1 clang -> instrumented stage-2 -> training on the clang/LLVM test suites -> final build with profile). z3 support excluded. ~25-30% faster at compiling C++ than plain builds of the same version.
sha256: 94f76fb55ec64490605d0e68115259426a428a78f269f7e9160726d90a22e197
Usage on a GitHub-hosted arm64 macOS runner:
curl -fsSL -o /tmp/k.tar.gz https://github.com/MeshInspector/toolchains/releases/download/llvm-pgo-22.1.8_2-arm64/llvm-pgo-22.1.8_2.arm64_opt-homebrew.tar.gz
echo "94f76fb55ec64490605d0e68115259426a428a78f269f7e9160726d90a22e197 /tmp/k.tar.gz" | shasum -a 256 -c -
tar -xzf /tmp/k.tar.gz -C /opt/homebrew/Cellar
ln -sfn ../Cellar/llvm-pgo/22.1.8_2 /opt/homebrew/opt/llvm-pgo
brew install --quiet zstd xz # runtime deps (python@3.14 only needed for lldb)
External brew deps referenced by the keg: see deps.txt.
clang 22.1.8 PGO (RockyLinux 8)
clang/lld 22.1.8 built with -O3 + IR-PGO + ThinLTO in a rockylinux:8 container (glibc 2.28). Stage1 gcc-toolset-11; training = compiling LLVMSupport/Core/Analysis. Install prefix inside the tarball: llvm-pgo-22.1.8/.
clang 22.1.8 PGO dylib (Linux)
clang/lld 22.1.8 built with -O3 + IR-PGO (no LTO), RTTI, and distro-style libLLVM.so/libclang-cpp.so in a rockylinux:8 container (glibc 2.28). Stage1 gcc-toolset-11; training = compiling LLVMSupport/Core/Analysis. Install prefix inside the tarball: llvm-pgo-dylib-22.1.8/.