Package managers have been upgrading their default LLVM version to 15. This raises several compatibility and performance issues for CI, and we currently are using workaounds
- Mac's default clang 13's LTO cannot read Brew installed llvm static libs because they are compiled with llvm 15 (https://github.com/apache/arrow/pull/14187#issuecomment-1253322948). Workaround: Use brew installed clang:
- Conda's packaging of LLVM 15 on Windows is not portable. It required a VS2019 Enterprise version: https://github.com/conda-forge/llvmdev-feedstock/issues/175. Workaround: Pin LLVM to 14 for Conda with Windows.
- Brew's LLVM15 enables z3 by default and it's shared linked. It breaks Java jar builds on MacOS: https://github.com/apache/arrow/pull/14261#issuecomment-1263024112. Workaround: Pin LLVM to 14 for all MacOS tasks.
- LLVM 15 is noticably slower to build than LLVM 14 for brew and MacOS. Workaround: Pin LLVM to 14 for all MacOS tasks.
We need to find a way to resolve these workarounds for LLVM 15.
Edit: The current mac os runner we use `macos-latest` has llvm@14 preinstalled. So pinning to 14 can save build time and fix dependency issues. We can move to llvm@15 on mac once the github images support them by default.