Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 35.2k
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
Uh oh!
There was an error while loading. Please reload this page.
Refactor jit.yml #144577
Changes from all commits
ce2c0cae95dde9264adc1399b7e89d10edc68e6cff7bc9fa7c6c0d2f5ce6890569866759c1bc0e0bbb57File filter
Filter by extension
Conversations
Uh oh!
There was an error while loading. Please reload this page.
Jump to
Uh oh!
There was an error while loading. Please reload this page.
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. MemberAuthor 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 }} | ||
Uh oh!
There was an error while loading. Please reload this page.

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