Fleet changelogs · dev.ecs0.net
rdmpw3275m-changelog-20260926-2350-factor-llvm-lld-decoupling-devupdate-v216

rdmpw3275m-changelog-20260926-2350-factor-llvm-lld-decoupling-devupdate-v216

Factor Homebrew LLVM 23.1.2 upgrade, decoupled LLD/LLDB formula architecture, and Clang config into fleet setup and release dev_update.zsh v2.16.

Summary

Homebrew upgraded llvm (23.1.1 -> 23.1.2) and decoupled lld and lldb into standalone formulae. On rdmpw3275m (Cascade Lake Xeon), lld 23.1.2 was compiled and tuned for -march=cascadelake (356 cascadelake instructions, 0 westmere, 213s) and pinned to match llvm 23.1.2. To prevent multi-hour source builds if lldb is ever installed, lldb and lldb@* were classified as heavy compiler toolchains in Phase 4 TOOLCHAINS of dev_update.zsh, advancing it to v2.16 (TASK-20260926-74). Clang configuration files in /usr/local/etc/clang were verified against active Command Line Tools SDKs (MacOSX26.sdk).

Scope

Exact Files Touched

Architectural & Setup Factoring Analysis

  1. Decoupled LLD / LLDB:
    • lld: Standalone formula. Fast to build (~3.5 min on Cascade Lake 56-thread Xeon), links dynamically to libLLVM.23.1.dylib. Kept tunable in Phase 4 so Mach-O and ELF linkers run with native AVX-512 acceleration.
    • lldb: Standalone formula. Compiles for multiple hours with Python, Z3, and LLVM dependencies. Added to TOOLCHAINS = ["llvm", "llvm@*", "lldb", "lldb@*", ...] in dev_update.zsh v2.16 so it is skipped during regular fleet tuning passes unless --include-toolchains is explicitly specified.
  2. Clang Configuration Files (CLANG_CONFIG_FILE_SYSTEM_DIR & USER_DIR):
    • System configs live in /usr/local/etc/clang (Intel) / /opt/homebrew/etc/clang (Apple Silicon).
    • Generated configuration files (x86_64-apple-darwin25.cfg) correctly set -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX26.sdk.
    • Verified /usr/local/opt/llvm/bin/clang -v resolves SDK headers from /Library/Developer/CommandLineTools/SDKs/MacOSX26.sdk/usr/include.
    • If custom SDK paths or full Xcode SDKs are needed without CLT, user configs can be placed in ~/.config/clang/<target>.cfg.
  3. Keg-Only & Isolation Standard:
    • Homebrew llvm remains keg-only.
    • Global addition of Homebrew LLVM to PATH, LDFLAGS, or CPPFLAGS is strictly avoided to protect Apple Clang toolchain isolation, Universal2 lipo gates (x86_64 arm64), and Swift package compatibility.
    • CMake consumers locate LLVM using -DCMAKE_PREFIX_PATH="$(brew --prefix llvm)" or export LLVM_DIR="$(brew --prefix llvm)/lib/cmake/llvm".
  4. Z3 Solver Deprecation in LLVM 24:
    • Upstream PR #205370 removes Z3 solver support in LLVM 24. Documented for future formula updates when LLVM 24 is tagged.

Verification Evidence

How to Undo

  1. To revert script symlinks to v2.15: cd ~/dev/scripts && ln -sf dev_update_v2.15.zsh dev_update.zsh && ln -sf dev_update_v2.15.zsh devupdate.zsh && ln -sf dev_update_v2.15.zsh fleet_update.zsh && ln -sf dev_update_v2.15.zsh fleet_upgrade.zsh && ln -sf dev_update_v2.15.zsh updatedev.zsh
  2. To unpin lld: brew unpin lld

Outstanding Owner Actions