https://github.com/python/cpython/commit/5f1c450db108ba0bd283eaf4d742accef3ca8316
commit: 5f1c450db108ba0bd283eaf4d742accef3ca8316
branch: 3.14
author: Savannah Ostrowski <[email protected]>
committer: savannahostrowski <[email protected]>
date: 2026-02-23T09:01:49-08:00
summary:

[3.14] Refactor jit.yml (GH-144577) (#145126)

Co-authored-by: Hugo van Kemenade <[email protected]>

files:
M .github/workflows/jit.yml

diff --git a/.github/workflows/jit.yml b/.github/workflows/jit.yml
index 22e1a160bca162..1cdd746e0af5cb 100644
--- a/.github/workflows/jit.yml
+++ b/.github/workflows/jit.yml
@@ -1,7 +1,7 @@
 name: JIT
 on:
   pull_request:
-    paths:
+    paths: &paths
       - '**jit**'
       - 'Python/bytecodes.c'
       - 'Python/optimizer*.c'
@@ -9,13 +9,7 @@ on:
       - '!**/*.md'
       - '!**/*.ini'
   push:
-    paths:
-      - '**jit**'
-      - 'Python/bytecodes.c'
-      - 'Python/optimizer*.c'
-      - '!Python/perf_jit_trampoline.c'
-      - '!**/*.md'
-      - '!**/*.ini'
+    paths: *paths
   workflow_dispatch:
 
 permissions:
@@ -27,12 +21,13 @@ concurrency:
 
 env:
   FORCE_COLOR: 1
+  LLVM_VERSION: 19
 
 jobs:
   interpreter:
     name: Interpreter (Debug)
     runs-on: ubuntu-24.04
-    timeout-minutes: 90
+    timeout-minutes: 60
     steps:
       - uses: actions/checkout@v6
         with:
@@ -44,11 +39,12 @@ jobs:
       - name: Test tier two interpreter
         run: |
           ./python -m test --multiprocess 0 --timeout 4500 --verbose2 
--verbose3
-  jit:
+
+  windows:
     name: ${{ matrix.target }} (${{ matrix.debug && 'Debug' || 'Release' }})
-    needs: interpreter
+
     runs-on: ${{ matrix.runner }}
-    timeout-minutes: 90
+    timeout-minutes: 60
     strategy:
       fail-fast: false
       matrix:
@@ -56,15 +52,9 @@ jobs:
           - i686-pc-windows-msvc/msvc
           - x86_64-pc-windows-msvc/msvc
           - aarch64-pc-windows-msvc/msvc
-          - x86_64-apple-darwin/clang
-          - aarch64-apple-darwin/clang
-          - x86_64-unknown-linux-gnu/gcc
-          - aarch64-unknown-linux-gnu/gcc
         debug:
           - true
           - false
-        llvm:
-          - 19
         include:
           - target: i686-pc-windows-msvc/msvc
             architecture: Win32
@@ -75,18 +65,6 @@ jobs:
           - target: aarch64-pc-windows-msvc/msvc
             architecture: ARM64
             runner: windows-11-arm
-          - target: x86_64-apple-darwin/clang
-            architecture: x86_64
-            runner: macos-15-intel
-          - target: aarch64-apple-darwin/clang
-            architecture: aarch64
-            runner: macos-14
-          - target: x86_64-unknown-linux-gnu/gcc
-            architecture: x86_64
-            runner: ubuntu-24.04
-          - target: aarch64-unknown-linux-gnu/gcc
-            architecture: aarch64
-            runner: ubuntu-24.04-arm
     steps:
       - uses: actions/checkout@v6
         with:
@@ -94,19 +72,46 @@ jobs:
       - uses: actions/setup-python@v6
         with:
           python-version: '3.11'
-
       # PCbuild downloads LLVM automatically:
-      - name: Windows
-        if: runner.os == 'Windows'
+      - name: Build
         run: |
           ./PCbuild/build.bat --experimental-jit ${{ matrix.debug && '-d' || 
'' }} -p ${{ matrix.architecture }}
+      - name: Test
+        run: |
           ./PCbuild/rt.bat ${{ matrix.debug && '-d' || '' }} -p ${{ 
matrix.architecture }} -q --multiprocess 0 --timeout 4500 --verbose2 --verbose3
 
-      - name: macOS
-        if: runner.os == 'macOS'
+  macos:
+    name: ${{ matrix.target }} (${{ matrix.debug && 'Debug' || 'Release' }})
+
+    runs-on: ${{ matrix.runner }}
+    timeout-minutes: 60
+    strategy:
+      fail-fast: false
+      matrix:
+        target:
+          - x86_64-apple-darwin/clang
+          - aarch64-apple-darwin/clang
+        debug:
+          - true
+          - false
+        include:
+          - target: x86_64-apple-darwin/clang
+            runner: macos-15-intel
+          - target: aarch64-apple-darwin/clang
+            runner: macos-14
+    steps:
+      - uses: actions/checkout@v6
+        with:
+          persist-credentials: false
+      - uses: actions/setup-python@v6
+        with:
+          python-version: '3.11'
+      - name: Install LLVM
         run: |
           brew update
-          brew install llvm@${{ matrix.llvm }}
+          brew install llvm@${{ env.LLVM_VERSION }}
+      - name: Build
+        run: |
           export SDKROOT="$(xcrun --show-sdk-path)"
           # Set MACOSX_DEPLOYMENT_TARGET and -Werror=unguarded-availability to
           # make sure we don't break downstream distributors (like uv):
@@ -114,54 +119,63 @@ jobs:
           export MACOSX_DEPLOYMENT_TARGET=10.15
           ./configure --enable-experimental-jit --enable-universalsdk 
--with-universal-archs=universal2 ${{ matrix.debug && '--with-pydebug' || '' }}
           make all --jobs 4
+      - name: Test
+        run: |
           ./python.exe -m test --multiprocess 0 --timeout 4500 --verbose2 
--verbose3
 
-      - name: Linux
-        if: runner.os == 'Linux'
+  linux:
+    name: ${{ matrix.target }} (${{ matrix.debug && 'Debug' || 'Release' }})
+
+    runs-on: ${{ matrix.runner }}
+    timeout-minutes: 60
+    strategy:
+      fail-fast: false
+      matrix:
+        target:
+          - x86_64-unknown-linux-gnu/gcc
+          - aarch64-unknown-linux-gnu/gcc
+        debug:
+          - true
+          - false
+        include:
+          - target: x86_64-unknown-linux-gnu/gcc
+            runner: ubuntu-24.04
+          - target: aarch64-unknown-linux-gnu/gcc
+            runner: ubuntu-24.04-arm
+    steps:
+      - uses: actions/checkout@v6
+        with:
+          persist-credentials: false
+      - uses: actions/setup-python@v6
+        with:
+          python-version: '3.11'
+      - name: Build
         run: |
-          sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh 
${{ matrix.llvm }}
-          export PATH="$(llvm-config-${{ matrix.llvm }} --bindir):$PATH"
+          sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh 
${{ env.LLVM_VERSION }}
+          export PATH="$(llvm-config-${{ env.LLVM_VERSION }} --bindir):$PATH"
           ./configure --enable-experimental-jit ${{ matrix.debug && 
'--with-pydebug' || '' }}
           make all --jobs 4
+      - name: Test
+        run: |
           ./python -m test --multiprocess 0 --timeout 4500 --verbose2 
--verbose3
 
-  # XXX: GH-133171
-  # jit-with-disabled-gil:
-  #   name: Free-Threaded (Debug)
-  #   needs: interpreter
-  #   runs-on: ubuntu-24.04
-  #   timeout-minutes: 90
-  #   strategy:
-  #     fail-fast: false
-  #     matrix:
-  #       llvm:
-  #         - 19
-  #   steps:
-  #     - uses: actions/checkout@v6
-  #       with:
-  #         persist-credentials: false
-  #     - uses: actions/setup-python@v6
-  #       with:
-  #         python-version: '3.11'
-  #     - name: Build with JIT enabled and GIL disabled
-  #       run: |
-  #         sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh 
${{ matrix.llvm }}
-  #         export PATH="$(llvm-config-${{ matrix.llvm }} --bindir):$PATH"
-  #         ./configure --enable-experimental-jit --with-pydebug --disable-gil
-  #         make all --jobs 4
-  #     - name: Run tests
-  #       run: |
-  #         ./python -m test --multiprocess 0 --timeout 4500 --verbose2 
--verbose3
-  tail-call-jit:
-    name: JIT with tail calling interpreter
-    needs: interpreter
+  linux-extras:
+    name: ${{ matrix.name }}
+
     runs-on: ubuntu-24.04
-    timeout-minutes: 90
+    timeout-minutes: 60
     strategy:
       fail-fast: false
       matrix:
-        llvm:
-          - 19
+        include:
+
+          - name: JIT without optimizations (Debug)
+            configure_flags: --enable-experimental-jit --with-pydebug
+            test_env: "PYTHON_UOPS_OPTIMIZE=0"
+          - name: JIT with tail calling interpreter
+            configure_flags: --enable-experimental-jit --with-tail-call-interp 
--with-pydebug
+            use_clang: true
+            run_tests: false
     steps:
       - uses: actions/checkout@v6
         with:
@@ -169,9 +183,16 @@ jobs:
       - uses: actions/setup-python@v6
         with:
           python-version: '3.11'
-      - name: Build with JIT and tailcall
+      - name: Build
         run: |
-          sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh 
${{ matrix.llvm }}
-          export PATH="$(llvm-config-${{ matrix.llvm }} --bindir):$PATH"
-          CC=clang-${{ matrix.llvm }} ./configure --enable-experimental-jit 
--with-tail-call-interp --with-pydebug
+          sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh 
${{ env.LLVM_VERSION }}
+          export PATH="$(llvm-config-${{ env.LLVM_VERSION }} --bindir):$PATH"
+          if [ "${{ matrix.use_clang }}" = "true" ]; then
+            export CC=clang-${{ env.LLVM_VERSION }}
+          fi
+          ./configure ${{ matrix.configure_flags }}
           make all --jobs 4
+      - name: Test
+        if: matrix.run_tests != false
+        run: |
+          ${{ matrix.test_env }} ./python -m test --multiprocess 0 --timeout 
4500 --verbose2 --verbose3

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to