@@ -2,12 +2,14 @@ name: Tail calling interpreter
22on :
33  pull_request :
44    paths :
5+       - ' .github/workflows/tail-call.yml' 
56      - ' Python/bytecodes.c' 
67      - ' Python/ceval.c' 
78      - ' Python/ceval_macros.h' 
89      - ' Python/generated_cases.c.h' 
910  push :
1011    paths :
12+       - ' .github/workflows/tail-call.yml' 
1113      - ' Python/bytecodes.c' 
1214      - ' Python/ceval.c' 
1315      - ' Python/ceval_macros.h' 
@@ -35,22 +37,22 @@ jobs:
3537        target :
3638#  Un-comment as we add support for more platforms for tail-calling interpreters.
3739#           - i686-pc-windows-msvc/msvc
38- #           - x86_64-pc-windows-msvc/msvc
40+           - x86_64-pc-windows-msvc/msvc 
3941#           - aarch64-pc-windows-msvc/msvc
4042          - x86_64-apple-darwin/clang 
4143          - aarch64-apple-darwin/clang 
4244          - x86_64-unknown-linux-gnu/gcc 
4345          - aarch64-unknown-linux-gnu/gcc 
4446          - free-threading 
4547        llvm :
46-           - 19 
48+           - 20 
4749        include :
4850#           - target: i686-pc-windows-msvc/msvc
4951#             architecture: Win32
5052#             runner: windows-latest
51- #           - target: x86_64-pc-windows-msvc/msvc
52- #             architecture: x64
53- #             runner: windows-latest
53+           - target : x86_64-pc-windows-msvc/msvc 
54+             architecture : x64 
55+             runner : windows-latest 
5456#           - target: aarch64-pc-windows-msvc/msvc
5557#             architecture: ARM64
5658#             runner: windows-latest
@@ -79,41 +81,51 @@ jobs:
7981
8082      - name : Native Windows (debug) 
8183        if : runner.os == 'Windows' && matrix.architecture != 'ARM64' 
84+         shell : cmd 
8285        run : | 
8386          choco install llvm --allow-downgrade --no-progress --version ${{ matrix.llvm }}.1.0 
84-           ./PCbuild/build.bat --tail-call-interp -d -p ${{ matrix.architecture }} 
85-           ./PCbuild/rt.bat -d -p ${{ matrix.architecture }} -q --multiprocess 0 --timeout 4500 --verbose2 --verbose3 
87+           set PlatformToolset=clangcl 
88+           set LLVMToolsVersion=${{ matrix.llvm }}.1.0 
89+           set LLVMInstallDir=C:\Program Files\LLVM 
90+           call ./PCbuild/build.bat --tail-call-interp -d -p ${{ matrix.architecture }} 
91+           call ./PCbuild/rt.bat -d -p ${{ matrix.architecture }} -q --multiprocess 0 --timeout 4500 --verbose2 --verbose3 
8692
8793#  No tests (yet):
8894      - name : Emulated Windows (release) 
8995        if : runner.os == 'Windows' && matrix.architecture == 'ARM64' 
96+         shell : cmd 
9097        run : | 
9198          choco install llvm --allow-downgrade --no-progress --version ${{ matrix.llvm }}.1.0 
99+           set PlatformToolset=clangcl 
100+           set LLVMToolsVersion=${{ matrix.llvm }}.1.0 
101+           set LLVMInstallDir=C:\Program Files\LLVM 
92102          ./PCbuild/build.bat --tail-call-interp -p ${{ matrix.architecture }} 
93103
94104#  The `find` line is required as a result of https://github.com/actions/runner-images/issues/9966.
95105        #  This is a bug in the macOS runner image where the pre-installed Python is installed in the same
96106        #  directory as the Homebrew Python, which causes the build to fail for macos-13. This line removes
97107        #  the symlink to the pre-installed Python so that the Homebrew Python is used instead.
98-       - name : Native macOS (debug) 
108+         #  Note: when a new LLVM is released, the homebrew installation directory changes, so the builds will fail.
109+         #  We either need to upgrade LLVM or change the directory being pointed to.
110+       - name : Native macOS (release) 
99111        if : runner.os == 'macOS' 
100112        run : | 
101113          brew update 
102114          find /usr/local/bin -lname '*/Library/Frameworks/Python.framework/*' -delete 
103115          brew install llvm@${{ matrix.llvm }} 
104116          export SDKROOT="$(xcrun --show-sdk-path)" 
105-           export PATH="/opt/homebrew/opt/llvm/bin:$PATH" 
106117          export PATH="/usr/local/opt/llvm/bin:$PATH" 
107-           CC=clang-19 ./configure --with-tail-call-interp --with-pydebug 
118+           export PATH="/opt/homebrew/opt/llvm/bin:$PATH" 
119+           CC=clang-20 ./configure --with-tail-call-interp 
108120          make all --jobs 4 
109121          ./python.exe -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3 
110122
111- name : Native Linux (release ) 
123+ name : Native Linux (debug ) 
112124        if : runner.os == 'Linux' && matrix.target != 'free-threading' 
113125        run : | 
114126          sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh ${{ matrix.llvm }} 
115127          export PATH="$(llvm-config-${{ matrix.llvm }} --bindir):$PATH" 
116-           CC=clang-19  ./configure --with-tail-call-interp 
128+           CC=clang-20  ./configure --with-tail-call-interp --with-pydebug  
117129          make all --jobs 4 
118130          ./python -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3 
119131
@@ -122,7 +134,7 @@ jobs:
122134        run : | 
123135          sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh ${{ matrix.llvm }} 
124136          export PATH="$(llvm-config-${{ matrix.llvm }} --bindir):$PATH" 
125-           CC=clang-19  ./configure --with-tail-call-interp --disable-gil 
137+           CC=clang-20  ./configure --with-tail-call-interp --disable-gil 
126138          make all --jobs 4 
127139          ./python -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3 
128140
0 commit comments