Skip to content

[3.14] GH-136895: Update JIT builds to use LLVM 21 (GH-140329)#146420

Open
mcepl wants to merge 3 commits intopython:3.14from
openSUSE-Python:3.14-llvm21-compat
Open

[3.14] GH-136895: Update JIT builds to use LLVM 21 (GH-140329)#146420
mcepl wants to merge 3 commits intopython:3.14from
openSUSE-Python:3.14-llvm21-compat

Conversation

@mcepl
Copy link
Contributor

@mcepl mcepl commented Mar 25, 2026

Backport of GH-140329 to 3.14, with the addition of:

  • JIT: harden LLVM 20 upgrade with defensive improvements
  • Enable x86_64 trampoline support on all x86_64 platforms, not just
    macOS. While currently only macOS emits X86_64_RELOC_BRANCH
    relocations, this ensures the trampoline infrastructure is ready if
    future LLVM changes produce out-of-range calls on other x86_64
    platforms.

  • Add error handling to extract_tarball() in get_external.py so that
    corrupted or incomplete downloads produce a clear error message
    instead of an opaque traceback.

  • Replace hardcoded LLVM version check in get_externals.bat with
    a prefix-based 'llvm-' match using findstr, so future LLVM version
    bumps only require changing the version string in one place.

Also, bump the JIT toolchain from LLVM 20 to LLVM 21 (21.1.8). Updated across
CI workflows, build scripts, documentation, and the externals tag.

mcepl added 3 commits March 25, 2026 15:14
- Enable x86_64 trampoline support on all x86_64 platforms, not just
  macOS. While currently only macOS emits X86_64_RELOC_BRANCH
  relocations, this ensures the trampoline infrastructure is ready if
  future LLVM changes produce out-of-range calls on other x86_64
  platforms.

- Add error handling to extract_tarball() in get_external.py so that
  corrupted or incomplete downloads produce a clear error message
  instead of an opaque traceback.

- Replace hardcoded LLVM version check in get_externals.bat with a
  prefix-based 'llvm-' match using findstr, so future LLVM version
  bumps only require changing the version string in one place.
Bump the JIT toolchain from LLVM 20 to LLVM 21 (21.1.8). Updated
across CI workflows, build scripts, documentation, and the externals
tag.
@mcepl mcepl force-pushed the 3.14-llvm21-compat branch from b6c50f4 to 539f0f1 Compare March 25, 2026 14:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant