aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorBrandt Bucher <brandtbucher@microsoft.com>2025-05-02 09:26:03 -0700
committerGitHub <noreply@github.com>2025-05-02 09:26:03 -0700
commit2da48e32f64d09eb2408301f8ef5f3a02a5cbe1a (patch)
tree85d4af53748aff343712365bb52a9c512a9e6d68
parentf425509349fecd3a8177502a2d4aafca8eef040a (diff)
downloadcpython-2da48e32f64d09eb2408301f8ef5f3a02a5cbe1a.tar.gz
cpython-2da48e32f64d09eb2408301f8ef5f3a02a5cbe1a.zip
GH-133171: Prevent combinations of --disable-gil and --enable-experimental-jit... for now (GH-133179)
-rw-r--r--.github/workflows/jit.yml53
-rw-r--r--Misc/NEWS.d/next/Build/2025-04-29-15-29-11.gh-issue-133171.YbwbwP.rst2
-rw-r--r--PCbuild/build.bat7
-rwxr-xr-xconfigure6
-rw-r--r--configure.ac6
5 files changed, 48 insertions, 26 deletions
diff --git a/.github/workflows/jit.yml b/.github/workflows/jit.yml
index af460f42649..6ea238d294c 100644
--- a/.github/workflows/jit.yml
+++ b/.github/workflows/jit.yml
@@ -126,29 +126,30 @@ jobs:
make all --jobs 4
./python -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3
- jit-with-disabled-gil:
- name: Free-Threaded (Debug)
- needs: interpreter
- runs-on: ubuntu-24.04
- timeout-minutes: 90
- strategy:
- fail-fast: false
- matrix:
- llvm:
- - 19
- steps:
- - uses: actions/checkout@v4
- with:
- persist-credentials: false
- - uses: actions/setup-python@v5
- with:
- python-version: '3.11'
- - name: Build with JIT enabled and GIL disabled
- 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
- make all --jobs 4
- - name: Run tests
- run: |
- ./python -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3
+ # XXX: GH-133171
+ # jit-with-disabled-gil:
+ # name: Free-Threaded (Debug)
+ # needs: interpreter
+ # runs-on: ubuntu-24.04
+ # timeout-minutes: 90
+ # strategy:
+ # fail-fast: false
+ # matrix:
+ # llvm:
+ # - 19
+ # steps:
+ # - uses: actions/checkout@v4
+ # with:
+ # persist-credentials: false
+ # - uses: actions/setup-python@v5
+ # with:
+ # python-version: '3.11'
+ # - name: Build with JIT enabled and GIL disabled
+ # 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
+ # make all --jobs 4
+ # - name: Run tests
+ # run: |
+ # ./python -m test --multiprocess 0 --timeout 4500 --verbose2 --verbose3
diff --git a/Misc/NEWS.d/next/Build/2025-04-29-15-29-11.gh-issue-133171.YbwbwP.rst b/Misc/NEWS.d/next/Build/2025-04-29-15-29-11.gh-issue-133171.YbwbwP.rst
new file mode 100644
index 00000000000..6207ffa851d
--- /dev/null
+++ b/Misc/NEWS.d/next/Build/2025-04-29-15-29-11.gh-issue-133171.YbwbwP.rst
@@ -0,0 +1,2 @@
+Since free-threaded builds do not support the experimental JIT compiler,
+prevent these configurations from being combined.
diff --git a/PCbuild/build.bat b/PCbuild/build.bat
index db67ae72981..88d6b99d651 100644
--- a/PCbuild/build.bat
+++ b/PCbuild/build.bat
@@ -123,6 +123,13 @@ if "%do_pgo%" EQU "true" if "%platf%" EQU "x64" (
)
)
+if "%UseDisableGil%" EQU "true" if "%UseTIER2%" NEQ "" (
+ rem GH-133171: This configuration builds the JIT but never actually uses it,
+ rem which is surprising (and strictly worse than not building it at all):
+ echo.ERROR: --experimental-jit cannot be used with --disable-gil.
+ exit /b 1
+)
+
if not exist "%GIT%" where git > "%TEMP%\git.loc" 2> nul && set /P GIT= < "%TEMP%\git.loc" & del "%TEMP%\git.loc"
if exist "%GIT%" set GITProperty=/p:GIT="%GIT%"
if not exist "%GIT%" echo Cannot find Git on PATH & set GITProperty=
diff --git a/configure b/configure
index 1ec91021a38..7dbb35f9f45 100755
--- a/configure
+++ b/configure
@@ -10866,6 +10866,12 @@ fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tier2_flags $jit_flags" >&5
printf "%s\n" "$tier2_flags $jit_flags" >&6; }
+if test "$disable_gil" = "yes" -a "$enable_experimental_jit" != "no"; then
+ # GH-133171: This configuration builds the JIT but never actually uses it,
+ # which is surprising (and strictly worse than not building it at all):
+ as_fn_error $? "--enable-experimental-jit cannot be used with --disable-gil." "$LINENO" 5
+fi
+
case "$ac_cv_cc_name" in
mpicc)
CFLAGS_NODIST="$CFLAGS_NODIST"
diff --git a/configure.ac b/configure.ac
index 16367b3ea53..65f265045ba 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2786,6 +2786,12 @@ AC_SUBST([REGEN_JIT_COMMAND])
AC_SUBST([JIT_STENCILS_H])
AC_MSG_RESULT([$tier2_flags $jit_flags])
+if test "$disable_gil" = "yes" -a "$enable_experimental_jit" != "no"; then
+ # GH-133171: This configuration builds the JIT but never actually uses it,
+ # which is surprising (and strictly worse than not building it at all):
+ AC_MSG_ERROR([--enable-experimental-jit cannot be used with --disable-gil.])
+fi
+
case "$ac_cv_cc_name" in
mpicc)
CFLAGS_NODIST="$CFLAGS_NODIST"