https://github.com/python/cpython/commit/cbd81d59cfea4f7b881642e804646da3a328a712
commit: cbd81d59cfea4f7b881642e804646da3a328a712
branch: main
author: Chris Eibl <[email protected]>
committer: itamaro <[email protected]>
date: 2026-04-12T08:49:18+03:00
summary:

GH-148047: Check early whether tail-calling is possible for MSVC builds on 
Windows (#148036)

Rather than failing late when compiling e.g. a debug configuration
```
build.bat -c debug --tail-call-interp
```
with hundreds of
```
error C4737: Unable to perform required tail call. Performance may be degraded.
```
-- fail early with an explicit error message for configurations that are not 
supported by MSVC.

This is a follow-up on https://github.com/python/cpython/issues/140513 / 
https://github.com/python/cpython/pull/140548

files:
A Misc/NEWS.d/next/Build/2026-04-03-20-09-46.gh-issue-148047.HE6iGK.rst
M PCbuild/pythoncore.vcxproj

diff --git 
a/Misc/NEWS.d/next/Build/2026-04-03-20-09-46.gh-issue-148047.HE6iGK.rst 
b/Misc/NEWS.d/next/Build/2026-04-03-20-09-46.gh-issue-148047.HE6iGK.rst
new file mode 100644
index 00000000000000..e43a2695a1316e
--- /dev/null
+++ b/Misc/NEWS.d/next/Build/2026-04-03-20-09-46.gh-issue-148047.HE6iGK.rst
@@ -0,0 +1,2 @@
+Fail fast with an explicit and clear error message if tail-calling is not
+possible for MSVC builds on Windows. Patch by Chris Eibl.
diff --git a/PCbuild/pythoncore.vcxproj b/PCbuild/pythoncore.vcxproj
index 61bee29c0af3d6..9356a66dfb4642 100644
--- a/PCbuild/pythoncore.vcxproj
+++ b/PCbuild/pythoncore.vcxproj
@@ -749,4 +749,13 @@
   <Target Name="_DeletePyBuildDirTxt" BeforeTargets="PrepareForBuild">
     <Delete Files="$(OutDir)pybuilddir.txt" />
   </Target>
+
+  <Target Name="_CheckTailCalling" BeforeTargets="PrepareForBuild" 
Condition="'$(UseTailCallInterp)' == 'true' and $(PlatformToolset) != 
'ClangCL'">
+    <Error Text="MSVC supports tail-calling only for x64."
+           Condition="$(Platform) != 'x64'" />
+    <Error Text="Platform toolset >= v145 is required for tail-calling."
+           Condition="$(PlatformToolset.Replace('v', '0')) &lt; '145'" />
+    <Error Text="MSVC requires optimization to be enabled for tail-calling."
+           Condition="$(Configuration) == 'Debug'" />
+  </Target>
 </Project>

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to