-
-
Notifications
You must be signed in to change notification settings - Fork 34.1k
Refactor jit.yml #144577
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Refactor jit.yml #144577
Changes from all commits
ce2c0ca
e95dde9
264adc1
399b7e8
9d10edc
68e6cff
7bc9fa7
c6c0d2f
5ce6890
5698667
59c1bc0
e0bbb57
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,7 +1,7 @@ | ||
| name: JIT | ||
| on: | ||
| pull_request: | ||
| paths: | ||
| paths: &paths | ||
| - '**jit**' | ||
| - 'Python/bytecodes.c' | ||
| - 'Python/optimizer*.c' | ||
|
|
@@ -12,16 +12,7 @@ on: | |
| - '!**/*.md' | ||
| - '!**/*.ini' | ||
| push: | ||
| paths: | ||
| - '**jit**' | ||
| - 'Python/bytecodes.c' | ||
| - 'Python/optimizer*.c' | ||
| - 'Python/executor_cases.c.h' | ||
| - 'Python/optimizer_cases.c.h' | ||
| - '**_testinternalcapi**' | ||
| - '!Python/perf_jit_trampoline.c' | ||
| - '!**/*.md' | ||
| - '!**/*.ini' | ||
| paths: *paths | ||
| workflow_dispatch: | ||
|
|
||
| permissions: | ||
|
|
@@ -33,12 +24,13 @@ concurrency: | |
|
|
||
| env: | ||
| FORCE_COLOR: 1 | ||
| LLVM_VERSION: 21 | ||
|
|
||
| jobs: | ||
| interpreter: | ||
| name: Interpreter (Debug) | ||
| runs-on: ubuntu-24.04 | ||
| timeout-minutes: 90 | ||
| timeout-minutes: 60 | ||
| steps: | ||
| - uses: actions/checkout@v6 | ||
| with: | ||
|
|
@@ -50,27 +42,22 @@ 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: | ||
| target: | ||
| - 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: | ||
| - 21 | ||
| include: | ||
| - target: i686-pc-windows-msvc/msvc | ||
| architecture: Win32 | ||
|
|
@@ -81,131 +68,137 @@ 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: | ||
| persist-credentials: false | ||
| - 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 }} | ||
| ./PCbuild/rt.bat ${{ matrix.debug && '-d' || '' }} -p ${{ matrix.architecture }} -q --multiprocess 0 --timeout 4500 --verbose2 --verbose3 | ||
|
|
||
| - name: macOS | ||
| if: runner.os == 'macOS' | ||
| - name: Test | ||
| run: | | ||
| brew update | ||
| brew install llvm@${{ matrix.llvm }} | ||
| 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): | ||
| export CFLAGS_JIT='-Werror=unguarded-availability' | ||
| export MACOSX_DEPLOYMENT_TARGET=10.15 | ||
| ./configure --enable-experimental-jit --enable-universalsdk --with-universal-archs=universal2 ${{ matrix.debug && '--with-pydebug' || '' }} | ||
| make all --jobs 4 | ||
| ./python.exe -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3 | ||
| ./PCbuild/rt.bat ${{ matrix.debug && '-d' || '' }} -p ${{ matrix.architecture }} -q --multiprocess 0 --timeout 4500 --verbose2 --verbose3 | ||
|
|
||
| - name: Linux | ||
| if: runner.os == 'Linux' | ||
| 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 ${{ matrix.debug && '--with-pydebug' || '' }} | ||
| make all --jobs 4 | ||
| ./python -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3 | ||
| macos: | ||
| name: ${{ matrix.target }} (${{ matrix.debug && 'Debug' || 'Release' }}) | ||
|
|
||
| jit-with-disabled-gil: | ||
| name: Free-Threaded (Debug) | ||
| needs: interpreter | ||
| runs-on: ubuntu-24.04 | ||
| timeout-minutes: 90 | ||
| runs-on: ${{ matrix.runner }} | ||
| timeout-minutes: 60 | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| llvm: | ||
| - 21 | ||
| 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: Build with JIT enabled and GIL disabled | ||
| - name: Install LLVM | ||
| run: | | ||
| brew update | ||
| brew install llvm@${{ env.LLVM_VERSION }} | ||
| - 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" | ||
| ./configure --enable-experimental-jit --with-pydebug --disable-gil | ||
| 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): | ||
| export CFLAGS_JIT='-Werror=unguarded-availability' | ||
| 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: Run tests | ||
| - name: Test | ||
| run: | | ||
| ./python -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3 | ||
| continue-on-error: true | ||
| ./python.exe -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3 | ||
|
|
||
| no-opt-jit: | ||
| name: JIT without optimizations (Debug) | ||
| needs: interpreter | ||
| runs-on: ubuntu-24.04 | ||
| timeout-minutes: 90 | ||
| linux: | ||
| name: ${{ matrix.target }} (${{ matrix.debug && 'Debug' || 'Release' }}) | ||
|
|
||
| runs-on: ${{ matrix.runner }} | ||
| timeout-minutes: 60 | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| llvm: | ||
| - 21 | ||
| 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 with JIT | ||
| - 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" | ||
| ./configure --enable-experimental-jit --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" | ||
| ./configure --enable-experimental-jit ${{ matrix.debug && '--with-pydebug' || '' }} | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, that is intentional. In |
||
| make all --jobs 4 | ||
| - name: Run tests without optimizations | ||
| - name: Test | ||
| run: | | ||
| PYTHON_UOPS_OPTIMIZE=0 ./python -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3 | ||
| ./python -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3 | ||
|
|
||
| linux-extras: | ||
| name: ${{ matrix.name }} | ||
|
|
||
| tail-call-jit: | ||
| name: JIT with tail calling interpreter | ||
| needs: interpreter | ||
| runs-on: ubuntu-24.04 | ||
| timeout-minutes: 90 | ||
| timeout-minutes: 60 | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| llvm: | ||
| - 21 | ||
| include: | ||
| - name: Free-Threaded (Debug) | ||
| configure_flags: --enable-experimental-jit --with-pydebug --disable-gil | ||
| continue_on_error: true | ||
| - 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: | ||
| persist-credentials: false | ||
| - 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 | ||
| continue-on-error: ${{ matrix.continue_on_error }} | ||

There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Comparing
tail-call.yml, that one exports a couple of paths and setsCC:Do we need this here? Or do we not need it there?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
JIT auto finds required clang, so we dont need CC