Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32.3k
gh-130039: Tailcall for windows builds#130040
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 ourterms of service andprivacy 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.
Changes from15 commits
ab0a611
d57c175
3eb568f
4dd19cf
7f91920
c3d656b
3638cda
b8b79ed
d3766d8
c811b8a
904b7ee
991b50f
166187c
5f7ad24
6d7b689
aadfec4
1d7c051
File 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 | ||||||
---|---|---|---|---|---|---|---|---|
@@ -2,12 +2,14 @@ name: Tail calling interpreter | ||||||||
on: | ||||||||
pull_request: | ||||||||
paths: | ||||||||
- '.github/workflows/tail-call.yml' | ||||||||
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. This feels wrong to me, but if it's needed, then sure. Hopefully someone else can sign off on this part of the change. 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. This is fine: when changing this file, it's good to run it as well to make sure we didn't break it -- which is rather too easy with YAML. (And let's strip the trailing spaces.) Suggested change
(We should add cpython/.pre-commit-config.yaml Line 49 in2904ec2
| ||||||||
- 'Python/bytecodes.c' | ||||||||
- 'Python/ceval.c' | ||||||||
- 'Python/ceval_macros.h' | ||||||||
- 'Python/generated_cases.c.h' | ||||||||
push: | ||||||||
paths: | ||||||||
- '.github/workflows/tail-call.yml' | ||||||||
- 'Python/bytecodes.c' | ||||||||
- 'Python/ceval.c' | ||||||||
- 'Python/ceval_macros.h' | ||||||||
@@ -35,7 +37,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 | ||||||||
# - aarch64-pc-windows-msvc/msvc | ||||||||
- x86_64-apple-darwin/clang | ||||||||
- aarch64-apple-darwin/clang | ||||||||
@@ -48,9 +50,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: aarch64-pc-windows-msvc/msvc | ||||||||
# architecture: ARM64 | ||||||||
# runner: windows-latest | ||||||||
@@ -79,23 +81,31 @@ 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 | ||||||||
set PlatformToolset=clangcl | ||||||||
set LLVMToolsVersion=19.1.5 | ||||||||
Fidget-Spinner marked this conversation as resolved. Show resolvedHide resolvedUh oh!There was an error while loading.Please reload this page. | ||||||||
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): | ||||||||
- 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 | ||||||||
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 | ||||||||
# 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 (release) | ||||||||
if: runner.os == 'macOS' | ||||||||
run: | | ||||||||
brew update | ||||||||
@@ -104,16 +114,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 | ||||||||
make all --jobs 4 | ||||||||
./python.exe -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3 | ||||||||
- name: Native Linux (debug) | ||||||||
if: runner.os == 'Linux' && matrix.target != 'free-threading' | ||||||||
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 --with-pydebug | ||||||||
make all --jobs 4 | ||||||||
./python -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3 | ||||||||
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -23,7 +23,7 @@ extern "C" { | ||
declaration \ | ||
_GENERATE_DEBUG_SECTION_LINUX(name) | ||
#if defined(MS_WINDOWS) && !defined(__clang__) | ||
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. Does this need an alternate definition for Windows + clang? 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. No, below there's a default that it uses is we're not one of the supported platforms. And that default works for Clang Windows. | ||
#define _GENERATE_DEBUG_SECTION_WINDOWS(name) \ | ||
_Pragma(Py_STRINGIFY(section(Py_STRINGIFY(name), read, write))) \ | ||
__declspec(allocate(Py_STRINGIFY(name))) | ||
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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. | ||
Fidget-Spinner marked this conversation as resolved. Show resolvedHide resolvedUh oh!There was an error while loading.Please reload this page. | ||
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 | ||
Uh oh!
There was an error while loading.Please reload this page.