|
name: Tail calling interpreter |
|
on: |
|
pull_request: |
|
paths: &paths |
|
- '.github/workflows/tail-call.yml' |
|
- 'Python/bytecodes.c' |
|
- 'Python/ceval.c' |
|
- 'Python/ceval_macros.h' |
|
- 'Python/generated_cases.c.h' |
|
push: |
|
paths: *paths |
|
workflow_dispatch: |
|
|
|
permissions: |
|
contents: read |
|
|
|
concurrency: |
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} |
|
cancel-in-progress: true |
|
|
|
env: |
|
FORCE_COLOR: 1 |
|
LLVM_VERSION: 21 |
|
|
|
jobs: |
|
macos: |
|
name: ${{ matrix.target }} |
|
runs-on: ${{ matrix.runner }} |
|
timeout-minutes: 60 |
|
strategy: |
|
fail-fast: false |
|
matrix: |
|
include: |
|
- target: x86_64-apple-darwin/clang |
|
runner: macos-26-intel |
|
- target: aarch64-apple-darwin/clang |
|
runner: macos-26 |
|
steps: |
|
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 |
|
with: |
|
persist-credentials: false |
|
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 |
|
with: |
|
python-version: '3.11' |
|
- name: Install dependencies |
|
run: | |
|
brew update |
|
brew install llvm@${{ env.LLVM_VERSION }} |
|
- name: Build |
|
run: | |
|
export SDKROOT="$(xcrun --show-sdk-path)" |
|
export PATH="/usr/local/opt/llvm@${{ env.LLVM_VERSION }}/bin:$PATH" |
|
export PATH="/opt/homebrew/opt/llvm@${{ env.LLVM_VERSION }}/bin:$PATH" |
|
CC=clang-${{ env.LLVM_VERSION }} ./configure --with-tail-call-interp |
|
make all --jobs 4 |
|
- name: Test |
|
run: | |
|
./python.exe -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3 |
|
|
|
linux: |
|
name: ${{ matrix.target }} |
|
runs-on: ${{ matrix.runner }} |
|
timeout-minutes: 60 |
|
strategy: |
|
fail-fast: false |
|
matrix: |
|
include: |
|
- target: x86_64-unknown-linux-gnu/gcc |
|
runner: ubuntu-26.04 |
|
configure_flags: --with-pydebug |
|
- target: x86_64-unknown-linux-gnu/gcc-free-threading |
|
runner: ubuntu-26.04 |
|
configure_flags: --disable-gil |
|
- target: aarch64-unknown-linux-gnu/gcc |
|
runner: ubuntu-26.04-arm |
|
configure_flags: --with-pydebug |
|
steps: |
|
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 |
|
with: |
|
persist-credentials: false |
|
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 |
|
with: |
|
python-version: '3.11' |
|
- name: Build |
|
run: | |
|
# On ubuntu-26.04 image, clang is clang-21 by default |
|
CC=clang-${{ env.LLVM_VERSION }} ./configure --with-tail-call-interp ${{ matrix.configure_flags }} |
|
make all --jobs 4 |
|
- name: Test |
|
run: | |
|
./python -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3 |