From ab0a61124a56315d3595792813a7f1506713420f Mon Sep 17 00:00:00 2001
From: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com>
Date: Wed, 12 Feb 2025 20:54:45 +0800
Subject: [PATCH 01/14] Tail-calling flag for Window
---
PCbuild/build.bat | 3 +++
PCbuild/pythoncore.vcxproj | 3 +++
2 files changed, 6 insertions(+)
diff --git a/PCbuild/build.bat b/PCbuild/build.bat
index d3e3894c203a65..317bdaa3c9ff16 100644
--- a/PCbuild/build.bat
+++ b/PCbuild/build.bat
@@ -40,6 +40,7 @@ echo. --experimental-jit Enable the experimental just-in-time compiler
echo. --experimental-jit-off Ditto but off by default (PYTHON_JIT=1 enables).
echo. --experimental-jit-interpreter Enable the experimental Tier 2 interpreter.
echo. --pystats Enable PyStats collection.
+echo. --tail-call-interp Enable tail-calling interpreter.
echo.
echo.Available flags to avoid building certain modules.
echo.These flags have no effect if '-e' is not given:
@@ -95,6 +96,7 @@ if "%~1"=="--experimental-jit-off" (set UseJIT=true) & (set UseTIER2=3) & shift
if "%~1"=="--experimental-jit-interpreter" (set UseTIER2=4) & shift & goto CheckOpts
if "%~1"=="--experimental-jit-interpreter-off" (set UseTIER2=6) & shift & goto CheckOpts
if "%~1"=="--pystats" (set PyStats=1) & shift & goto CheckOpts
+if "%~1"=="--tail-call-interp" (set UseTailCallInterp=true) & shift & goto CheckOpts
rem These use the actual property names used by MSBuild. We could just let
rem them in through the environment, but we specify them on the command line
rem anyway for visibility so set defaults after this
@@ -189,6 +191,7 @@ echo on
/p:UseJIT=%UseJIT%^
/p:UseTIER2=%UseTIER2%^
/p:PyStats=%PyStats%^
+ /p:UseTailCallInterp=%UseTailCallInterp%^
%1 %2 %3 %4 %5 %6 %7 %8 %9
@echo off
diff --git a/PCbuild/pythoncore.vcxproj b/PCbuild/pythoncore.vcxproj
index 9ebf58ae8a9bc4..a42f2e1bb26153 100644
--- a/PCbuild/pythoncore.vcxproj
+++ b/PCbuild/pythoncore.vcxproj
@@ -703,6 +703,9 @@
$(PyConfigHText.Replace('/* #define Py_GIL_DISABLED 1 */', '#define Py_GIL_DISABLED 1'))
+
+ $(PyConfigHText.Replace('/* #define Py_TAIL_CALL_INTERP 1 */', '#define Py_TAIL_CALL_INTERP 1'))
+
Date: Wed, 12 Feb 2025 21:41:27 +0800
Subject: [PATCH 02/14] Update pythoncore.vcxproj
---
PCbuild/pythoncore.vcxproj | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/PCbuild/pythoncore.vcxproj b/PCbuild/pythoncore.vcxproj
index a42f2e1bb26153..5903af3e5747e6 100644
--- a/PCbuild/pythoncore.vcxproj
+++ b/PCbuild/pythoncore.vcxproj
@@ -106,6 +106,7 @@
_Py_HAVE_ZLIB;%(PreprocessorDefinitions)
_Py_JIT;%(PreprocessorDefinitions)
_Py_TIER2=$(UseTIER2);%(PreprocessorDefinitions)
+ Py_TAIL_CALL_INTERP;%(PreprocessorDefinitions)
version.lib;ws2_32.lib;pathcch.lib;bcrypt.lib;%(AdditionalDependencies)
@@ -703,9 +704,6 @@
$(PyConfigHText.Replace('/* #define Py_GIL_DISABLED 1 */', '#define Py_GIL_DISABLED 1'))
-
- $(PyConfigHText.Replace('/* #define Py_TAIL_CALL_INTERP 1 */', '#define Py_TAIL_CALL_INTERP 1'))
-
Date: Wed, 12 Feb 2025 21:56:35 +0800
Subject: [PATCH 03/14] Add Windows to the tailcall CI
---
.github/workflows/tail-call.yml | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/.github/workflows/tail-call.yml b/.github/workflows/tail-call.yml
index 4c2516c517b3a9..0fbbeedc1f3caf 100644
--- a/.github/workflows/tail-call.yml
+++ b/.github/workflows/tail-call.yml
@@ -35,7 +35,7 @@ jobs:
target:
# Un-comment as we add support for more platforms for tail-calling interpreters.
# - i686-pc-windows-msvc/msvc
-# - x86_64-pc-windows-msvc/msvc
+ - x86_64-pc-windows-msvc/msvc
# - aarch64-pc-windows-msvc/msvc
- x86_64-apple-darwin/clang
- aarch64-apple-darwin/clang
@@ -47,9 +47,9 @@ jobs:
# - target: i686-pc-windows-msvc/msvc
# architecture: Win32
# runner: windows-latest
-# - target: x86_64-pc-windows-msvc/msvc
-# architecture: x64
-# runner: windows-latest
+ - target: x86_64-pc-windows-msvc/msvc
+ architecture: x64
+ runner: windows-latest
# - target: aarch64-pc-windows-msvc/msvc
# architecture: ARM64
# runner: windows-latest
@@ -76,22 +76,22 @@ jobs:
- name: Native Windows (debug)
if: runner.os == 'Windows' && matrix.architecture != 'ARM64'
run: |
- choco install llvm --allow-downgrade --no-progress --version ${{ matrix.llvm }}.1.0
- ./PCbuild/build.bat --tail-call-interp -d -p ${{ matrix.architecture }}
+ choco install llvm --allow-downgrade --no-progress --version ${{ matrix.llvm }}.1.5
+ ./PCbuild/build.bat --tail-call-interp -d -p ${{ matrix.architecture }} /p:PlatformToolset=clangcl /p:LLVMToolsVersion=19.1.5 /p:LLVMInstallDir=C:\Program Files\LLVM
./PCbuild/rt.bat -d -p ${{ matrix.architecture }} -q --multiprocess 0 --timeout 4500 --verbose2 --verbose3
# No tests (yet):
- name: Emulated Windows (release)
if: runner.os == 'Windows' && matrix.architecture == 'ARM64'
run: |
- choco install llvm --allow-downgrade --no-progress --version ${{ matrix.llvm }}.1.0
- ./PCbuild/build.bat --tail-call-interp -p ${{ matrix.architecture }}
+ choco install llvm --allow-downgrade --no-progress --version ${{ matrix.llvm }}.1.5
+ ./PCbuild/build.bat --tail-call-interp -p ${{ matrix.architecture }} /p:PlatformToolset=clangcl /p:LLVMToolsVersion=19.1.5 /p:LLVMInstallDir=C:\Program Files\LLVM
# The `find` line is required as a result of https://github.com/actions/runner-images/issues/9966.
# This is a bug in the macOS runner image where the pre-installed Python is installed in the same
# directory as the Homebrew Python, which causes the build to fail for macos-13. This line removes
# the symlink to the pre-installed Python so that the Homebrew Python is used instead.
- - name: Native macOS (debug)
+ - name: Native macOS (release)
if: runner.os == 'macOS'
run: |
brew update
@@ -100,16 +100,16 @@ jobs:
export SDKROOT="$(xcrun --show-sdk-path)"
export PATH="/opt/homebrew/opt/llvm/bin:$PATH"
export PATH="/usr/local/opt/llvm/bin:$PATH"
- CC=clang-19 ./configure --with-tail-call-interp --with-pydebug
+ CC=clang-19 ./configure --with-tail-call-interp
make all --jobs 4
./python.exe -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3
- - name: Native Linux (release)
+ - name: Native Linux (debug)
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"
- CC=clang-19 ./configure --with-tail-call-interp
+ CC=clang-19 ./configure --with-tail-call-interp --with-pydebug
make all --jobs 4
./python -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3
From 4dd19cfd86dcdf7deafa387ac05c1f6017348a50 Mon Sep 17 00:00:00 2001
From: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com>
Date: Wed, 12 Feb 2025 22:08:07 +0800
Subject: [PATCH 04/14] Update tail-call.yml
---
.github/workflows/tail-call.yml | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/tail-call.yml b/.github/workflows/tail-call.yml
index 0fbbeedc1f3caf..c021f3d729a505 100644
--- a/.github/workflows/tail-call.yml
+++ b/.github/workflows/tail-call.yml
@@ -6,12 +6,14 @@ on:
- 'Python/ceval.c'
- 'Python/ceval_macros.h'
- 'Python/generated_cases.c.h'
+ - '.github/workflows/tail-call.yml'
push:
paths:
- 'Python/bytecodes.c'
- 'Python/ceval.c'
- 'Python/ceval_macros.h'
- 'Python/generated_cases.c.h'
+ - '.github/workflows/tail-call.yml'
workflow_dispatch:
permissions:
@@ -77,7 +79,7 @@ jobs:
if: runner.os == 'Windows' && matrix.architecture != 'ARM64'
run: |
choco install llvm --allow-downgrade --no-progress --version ${{ matrix.llvm }}.1.5
- ./PCbuild/build.bat --tail-call-interp -d -p ${{ matrix.architecture }} /p:PlatformToolset=clangcl /p:LLVMToolsVersion=19.1.5 /p:LLVMInstallDir=C:\Program Files\LLVM
+ ./PCbuild/build.bat --tail-call-interp -d -p ${{ matrix.architecture }} "/p:PlatformToolset=clangcl" "/p:LLVMToolsVersion=19.1.5" "/p:LLVMInstallDir=C:\Program Files\LLVM"
./PCbuild/rt.bat -d -p ${{ matrix.architecture }} -q --multiprocess 0 --timeout 4500 --verbose2 --verbose3
# No tests (yet):
@@ -85,7 +87,7 @@ jobs:
if: runner.os == 'Windows' && matrix.architecture == 'ARM64'
run: |
choco install llvm --allow-downgrade --no-progress --version ${{ matrix.llvm }}.1.5
- ./PCbuild/build.bat --tail-call-interp -p ${{ matrix.architecture }} /p:PlatformToolset=clangcl /p:LLVMToolsVersion=19.1.5 /p:LLVMInstallDir=C:\Program Files\LLVM
+ ./PCbuild/build.bat --tail-call-interp -p ${{ matrix.architecture }} "/p:PlatformToolset=clangcl" "/p:LLVMToolsVersion=19.1.5" "/p:LLVMInstallDir=C:\Program Files\LLVM"
# The `find` line is required as a result of https://github.com/actions/runner-images/issues/9966.
# This is a bug in the macOS runner image where the pre-installed Python is installed in the same
From 7f91920bd915123792d1a1ec8e28300f9f27cb16 Mon Sep 17 00:00:00 2001
From: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com>
Date: Wed, 12 Feb 2025 23:05:51 +0800
Subject: [PATCH 05/14] Update tail-call.yml
---
.github/workflows/tail-call.yml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/.github/workflows/tail-call.yml b/.github/workflows/tail-call.yml
index c021f3d729a505..cb707b5f663d6f 100644
--- a/.github/workflows/tail-call.yml
+++ b/.github/workflows/tail-call.yml
@@ -77,6 +77,7 @@ jobs:
- name: Native Windows (debug)
if: runner.os == 'Windows' && matrix.architecture != 'ARM64'
+ shell: cmd
run: |
choco install llvm --allow-downgrade --no-progress --version ${{ matrix.llvm }}.1.5
./PCbuild/build.bat --tail-call-interp -d -p ${{ matrix.architecture }} "/p:PlatformToolset=clangcl" "/p:LLVMToolsVersion=19.1.5" "/p:LLVMInstallDir=C:\Program Files\LLVM"
@@ -85,6 +86,7 @@ jobs:
# No tests (yet):
- name: Emulated Windows (release)
if: runner.os == 'Windows' && matrix.architecture == 'ARM64'
+ shell: cmd
run: |
choco install llvm --allow-downgrade --no-progress --version ${{ matrix.llvm }}.1.5
./PCbuild/build.bat --tail-call-interp -p ${{ matrix.architecture }} "/p:PlatformToolset=clangcl" "/p:LLVMToolsVersion=19.1.5" "/p:LLVMInstallDir=C:\Program Files\LLVM"
From c3d656bf4250a6ca393fce0c0bbadaf8597fc4c1 Mon Sep 17 00:00:00 2001
From: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com>
Date: Thu, 13 Feb 2025 00:09:42 +0800
Subject: [PATCH 06/14] Update pycore_debug_offsets.h
---
Include/internal/pycore_debug_offsets.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Include/internal/pycore_debug_offsets.h b/Include/internal/pycore_debug_offsets.h
index 44feb079571a73..f932dba7a47301 100644
--- a/Include/internal/pycore_debug_offsets.h
+++ b/Include/internal/pycore_debug_offsets.h
@@ -39,7 +39,7 @@ extern "C" {
#define _GENERATE_DEBUG_SECTION_APPLE(name)
#endif
-#if defined(__linux__) && (defined(__GNUC__) || defined(__clang__))
+#if defined(__linux__) && (defined(__GNUC__) || defined(__clang__) && !defined(MS_WINDOWS))
#define _GENERATE_DEBUG_SECTION_LINUX(name) \
__attribute__((section("." Py_STRINGIFY(name)))) \
__attribute__((used))
From 3638cda551c7c5d174fc856fe81f9ecb77507b14 Mon Sep 17 00:00:00 2001
From: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com>
Date: Thu, 13 Feb 2025 00:39:55 +0800
Subject: [PATCH 07/14] Update pycore_debug_offsets.h
---
Include/internal/pycore_debug_offsets.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Include/internal/pycore_debug_offsets.h b/Include/internal/pycore_debug_offsets.h
index f932dba7a47301..6c7d57d020784b 100644
--- a/Include/internal/pycore_debug_offsets.h
+++ b/Include/internal/pycore_debug_offsets.h
@@ -39,7 +39,7 @@ extern "C" {
#define _GENERATE_DEBUG_SECTION_APPLE(name)
#endif
-#if defined(__linux__) && (defined(__GNUC__) || defined(__clang__) && !defined(MS_WINDOWS))
+#if defined(__linux__) && (defined(__GNUC__) || (defined(__clang__) && !defined(MS_WINDOWS)))
#define _GENERATE_DEBUG_SECTION_LINUX(name) \
__attribute__((section("." Py_STRINGIFY(name)))) \
__attribute__((used))
From b8b79ed9ed0658221d7d2d4099db6f36cc192604 Mon Sep 17 00:00:00 2001
From: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com>
Date: Thu, 13 Feb 2025 00:50:01 +0800
Subject: [PATCH 08/14] Update pycore_debug_offsets.h
---
Include/internal/pycore_debug_offsets.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Include/internal/pycore_debug_offsets.h b/Include/internal/pycore_debug_offsets.h
index 6c7d57d020784b..a61096c17f143b 100644
--- a/Include/internal/pycore_debug_offsets.h
+++ b/Include/internal/pycore_debug_offsets.h
@@ -23,7 +23,7 @@ extern "C" {
declaration \
_GENERATE_DEBUG_SECTION_LINUX(name)
-#if defined(MS_WINDOWS)
+#if defined(MS_WINDOWS) && !defined(__clang__)
#define _GENERATE_DEBUG_SECTION_WINDOWS(name) \
_Pragma(Py_STRINGIFY(section(Py_STRINGIFY(name), read, write))) \
__declspec(allocate(Py_STRINGIFY(name)))
@@ -39,7 +39,7 @@ extern "C" {
#define _GENERATE_DEBUG_SECTION_APPLE(name)
#endif
-#if defined(__linux__) && (defined(__GNUC__) || (defined(__clang__) && !defined(MS_WINDOWS)))
+#if defined(__linux__) && (defined(__GNUC__) || defined(__clang__))
#define _GENERATE_DEBUG_SECTION_LINUX(name) \
__attribute__((section("." Py_STRINGIFY(name)))) \
__attribute__((used))
From c811b8a9ab4328e422335368809d4196b13c7e31 Mon Sep 17 00:00:00 2001
From: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com>
Date: Thu, 13 Feb 2025 21:56:39 +0800
Subject: [PATCH 09/14] Address review by using env vars
---
.github/workflows/tail-call.yml | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/tail-call.yml b/.github/workflows/tail-call.yml
index cb707b5f663d6f..d97c7cfa6b1c7d 100644
--- a/.github/workflows/tail-call.yml
+++ b/.github/workflows/tail-call.yml
@@ -80,7 +80,10 @@ jobs:
shell: cmd
run: |
choco install llvm --allow-downgrade --no-progress --version ${{ matrix.llvm }}.1.5
- ./PCbuild/build.bat --tail-call-interp -d -p ${{ matrix.architecture }} "/p:PlatformToolset=clangcl" "/p:LLVMToolsVersion=19.1.5" "/p:LLVMInstallDir=C:\Program Files\LLVM"
+ set PlatformToolset=clangcl
+ set LLVMToolsVersion=19.1.5
+ set LLVMInstallDir=C:\Program Files\LLVM
+ ./PCbuild/build.bat --tail-call-interp -d -p ${{ matrix.architecture }}
./PCbuild/rt.bat -d -p ${{ matrix.architecture }} -q --multiprocess 0 --timeout 4500 --verbose2 --verbose3
# No tests (yet):
@@ -89,7 +92,10 @@ jobs:
shell: cmd
run: |
choco install llvm --allow-downgrade --no-progress --version ${{ matrix.llvm }}.1.5
- ./PCbuild/build.bat --tail-call-interp -p ${{ matrix.architecture }} "/p:PlatformToolset=clangcl" "/p:LLVMToolsVersion=19.1.5" "/p:LLVMInstallDir=C:\Program Files\LLVM"
+ set PlatformToolset=clangcl
+ set LLVMToolsVersion=19.1.5
+ set LLVMInstallDir=C:\Program Files\LLVM
+ ./PCbuild/build.bat --tail-call-interp -p ${{ matrix.architecture }}
# The `find` line is required as a result of https://github.com/actions/runner-images/issues/9966.
# This is a bug in the macOS runner image where the pre-installed Python is installed in the same
From 166187cf679272f6a1fc7bfb0afc679ea8e339ad Mon Sep 17 00:00:00 2001
From: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com>
Date: Sun, 16 Feb 2025 03:03:43 +0800
Subject: [PATCH 10/14] Update pythoncore.vcxproj
---
PCbuild/pythoncore.vcxproj | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/PCbuild/pythoncore.vcxproj b/PCbuild/pythoncore.vcxproj
index 5903af3e5747e6..a940b1eada3989 100644
--- a/PCbuild/pythoncore.vcxproj
+++ b/PCbuild/pythoncore.vcxproj
@@ -106,7 +106,7 @@
_Py_HAVE_ZLIB;%(PreprocessorDefinitions)
_Py_JIT;%(PreprocessorDefinitions)
_Py_TIER2=$(UseTIER2);%(PreprocessorDefinitions)
- Py_TAIL_CALL_INTERP;%(PreprocessorDefinitions)
+ Py_TAIL_CALL_INTERP=1;%(PreprocessorDefinitions)
version.lib;ws2_32.lib;pathcch.lib;bcrypt.lib;%(AdditionalDependencies)
From 5f7ad24b4b6faaea30c29b35b26010ee983680c1 Mon Sep 17 00:00:00 2001
From: Ken Jin
Date: Wed, 5 Mar 2025 17:14:50 +0800
Subject: [PATCH 11/14] Update .github/workflows/tail-call.yml
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
---
.github/workflows/tail-call.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/tail-call.yml b/.github/workflows/tail-call.yml
index a0b8671b2389a0..1bcb5c08704049 100644
--- a/.github/workflows/tail-call.yml
+++ b/.github/workflows/tail-call.yml
@@ -9,11 +9,11 @@ on:
- '.github/workflows/tail-call.yml'
push:
paths:
+ - '.github/workflows/tail-call.yml'
- 'Python/bytecodes.c'
- 'Python/ceval.c'
- 'Python/ceval_macros.h'
- 'Python/generated_cases.c.h'
- - '.github/workflows/tail-call.yml'
workflow_dispatch:
permissions:
From 6d7b689b00be938044558a6359428355dd243691 Mon Sep 17 00:00:00 2001
From: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com>
Date: Wed, 5 Mar 2025 17:44:28 +0800
Subject: [PATCH 12/14] Update tail-call.yml
---
.github/workflows/tail-call.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/tail-call.yml b/.github/workflows/tail-call.yml
index 1bcb5c08704049..e5a98fadf28b8a 100644
--- a/.github/workflows/tail-call.yml
+++ b/.github/workflows/tail-call.yml
@@ -2,11 +2,11 @@ name: Tail calling interpreter
on:
pull_request:
paths:
+ - '.github/workflows/tail-call.yml'
- 'Python/bytecodes.c'
- 'Python/ceval.c'
- 'Python/ceval_macros.h'
- 'Python/generated_cases.c.h'
- - '.github/workflows/tail-call.yml'
push:
paths:
- '.github/workflows/tail-call.yml'
From aadfec45f1cd4eab165153027a2f60da74980c44 Mon Sep 17 00:00:00 2001
From: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com>
Date: Thu, 6 Mar 2025 01:21:04 +0800
Subject: [PATCH 13/14] Address review
---
.github/workflows/tail-call.yml | 12 ++++++------
PCbuild/build.bat | 2 +-
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/.github/workflows/tail-call.yml b/.github/workflows/tail-call.yml
index e5a98fadf28b8a..da6bd566e10977 100644
--- a/.github/workflows/tail-call.yml
+++ b/.github/workflows/tail-call.yml
@@ -2,7 +2,7 @@ name: Tail calling interpreter
on:
pull_request:
paths:
- - '.github/workflows/tail-call.yml'
+ - '.github/workflows/tail-call.yml'
- 'Python/bytecodes.c'
- 'Python/ceval.c'
- 'Python/ceval_macros.h'
@@ -45,7 +45,7 @@ jobs:
- aarch64-unknown-linux-gnu/gcc
- free-threading
llvm:
- - 19
+ - 19.1.5
include:
# - target: i686-pc-windows-msvc/msvc
# architecture: Win32
@@ -83,9 +83,9 @@ jobs:
if: runner.os == 'Windows' && matrix.architecture != 'ARM64'
shell: cmd
run: |
- choco install llvm --allow-downgrade --no-progress --version ${{ matrix.llvm }}.1.5
+ choco install llvm --allow-downgrade --no-progress --version ${{ matrix.llvm }}
set PlatformToolset=clangcl
- set LLVMToolsVersion=19.1.5
+ set LLVMToolsVersion=${{ matrix.llvm }}
set LLVMInstallDir=C:\Program Files\LLVM
./PCbuild/build.bat --tail-call-interp -d -p ${{ matrix.architecture }}
./PCbuild/rt.bat -d -p ${{ matrix.architecture }} -q --multiprocess 0 --timeout 4500 --verbose2 --verbose3
@@ -95,9 +95,9 @@ jobs:
if: runner.os == 'Windows' && matrix.architecture == 'ARM64'
shell: cmd
run: |
- choco install llvm --allow-downgrade --no-progress --version ${{ matrix.llvm }}.1.5
+ choco install llvm --allow-downgrade --no-progress --version ${{ matrix.llvm }}
set PlatformToolset=clangcl
- set LLVMToolsVersion=19.1.5
+ set LLVMToolsVersion=${{ matrix.llvm }}
set LLVMInstallDir=C:\Program Files\LLVM
./PCbuild/build.bat --tail-call-interp -p ${{ matrix.architecture }}
diff --git a/PCbuild/build.bat b/PCbuild/build.bat
index 317bdaa3c9ff16..9fbc3e62ce75cc 100644
--- a/PCbuild/build.bat
+++ b/PCbuild/build.bat
@@ -40,7 +40,7 @@ echo. --experimental-jit Enable the experimental just-in-time compiler
echo. --experimental-jit-off Ditto but off by default (PYTHON_JIT=1 enables).
echo. --experimental-jit-interpreter Enable the experimental Tier 2 interpreter.
echo. --pystats Enable PyStats collection.
-echo. --tail-call-interp Enable tail-calling interpreter.
+echo. --tail-call-interp Enable tail-calling interpreter (requires LLVM 19 or higher).
echo.
echo.Available flags to avoid building certain modules.
echo.These flags have no effect if '-e' is not given:
From 1d7c051ef391ed978771f61d3729745aaa41b3df Mon Sep 17 00:00:00 2001
From: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com>
Date: Thu, 6 Mar 2025 01:24:09 +0800
Subject: [PATCH 14/14] Partially revert "Address review"
We can't specify the minor version as the apt script doesn't recognize it.
---
.github/workflows/tail-call.yml | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/.github/workflows/tail-call.yml b/.github/workflows/tail-call.yml
index da6bd566e10977..d1f3cd40f679e5 100644
--- a/.github/workflows/tail-call.yml
+++ b/.github/workflows/tail-call.yml
@@ -45,7 +45,7 @@ jobs:
- aarch64-unknown-linux-gnu/gcc
- free-threading
llvm:
- - 19.1.5
+ - 19
include:
# - target: i686-pc-windows-msvc/msvc
# architecture: Win32
@@ -83,9 +83,9 @@ jobs:
if: runner.os == 'Windows' && matrix.architecture != 'ARM64'
shell: cmd
run: |
- choco install llvm --allow-downgrade --no-progress --version ${{ matrix.llvm }}
+ choco install llvm --allow-downgrade --no-progress --version ${{ matrix.llvm }}.1.5
set PlatformToolset=clangcl
- set LLVMToolsVersion=${{ matrix.llvm }}
+ set LLVMToolsVersion=${{ matrix.llvm }}.1.5
set LLVMInstallDir=C:\Program Files\LLVM
./PCbuild/build.bat --tail-call-interp -d -p ${{ matrix.architecture }}
./PCbuild/rt.bat -d -p ${{ matrix.architecture }} -q --multiprocess 0 --timeout 4500 --verbose2 --verbose3
@@ -95,9 +95,9 @@ jobs:
if: runner.os == 'Windows' && matrix.architecture == 'ARM64'
shell: cmd
run: |
- choco install llvm --allow-downgrade --no-progress --version ${{ matrix.llvm }}
+ choco install llvm --allow-downgrade --no-progress --version ${{ matrix.llvm }}.1.5
set PlatformToolset=clangcl
- set LLVMToolsVersion=${{ matrix.llvm }}
+ set LLVMToolsVersion=${{ matrix.llvm }}.1.5
set LLVMInstallDir=C:\Program Files\LLVM
./PCbuild/build.bat --tail-call-interp -p ${{ matrix.architecture }}