We should use a different $(IntDir) and $(OutDir) for free threaded builds so that it's faster to switch between them and so they can be built in parallel.
The output filename should be python{major}.{minor}t.exe and python{major}{minor}t.dll. Debug builds are python{major}.{minor}t_d.exe and python{major}{minor}t_d.dll.
The ABI tag becomes .cp{major}{minor}t-{plat}
All stdlib .pyd files get an ABI tag.
The python.bat is updated as normal (overwriting the last yesgil build).
The installer should not include a python.exe, to avoid causing PATH conflicts, but Nuget, embeddable and Store packages should include a copy/alias.
PEP 514 registration (a.k.a. sys.winver) should use {major}.{minor}t-{plat}.
Tests that rely on the executable name should use sys.executable wherever possible, and hopefully there's a support variable already for the rest.
All of these only take effect when $(DisableGil) == 'true' (which is set by build.bat --disable-gil, but the build variable is canonical).
Linked PRs
We should use a different
$(IntDir)and$(OutDir)for free threaded builds so that it's faster to switch between them and so they can be built in parallel.The output filename should be
python{major}.{minor}t.exeandpython{major}{minor}t.dll. Debug builds arepython{major}.{minor}t_d.exeandpython{major}{minor}t_d.dll.The ABI tag becomes
.cp{major}{minor}t-{plat}All stdlib .pyd files get an ABI tag.
The
python.batis updated as normal (overwriting the last yesgil build).The installer should not include a
python.exe, to avoid causing PATH conflicts, but Nuget, embeddable and Store packages should include a copy/alias.PEP 514 registration (a.k.a.
sys.winver) should use{major}.{minor}t-{plat}.Tests that rely on the executable name should use
sys.executablewherever possible, and hopefully there's a support variable already for the rest.All of these only take effect when
$(DisableGil) == 'true'(which is set bybuild.bat --disable-gil, but the build variable is canonical).Linked PRs