diff --git a/.gitignore b/.gitignore
index c424a894c2a6e0..25cf8b2f6f8c3d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -111,10 +111,14 @@ PCbuild/*-pgo
PCbuild/*.VC.db
PCbuild/*.VC.opendb
PCbuild/amd64/
+PCbuild/amd64t/
PCbuild/arm32/
+PCbuild/arm32t/
PCbuild/arm64/
+PCbuild/arm64t/
PCbuild/obj/
PCbuild/win32/
+PCbuild/win32t/
Tools/unicode/data/
/autom4te.cache
/build/
diff --git a/PC/pyconfig.h.in b/PC/pyconfig.h.in
index d8f0a6be69c21a..8bbf877a5bb5ed 100644
--- a/PC/pyconfig.h.in
+++ b/PC/pyconfig.h.in
@@ -94,6 +94,9 @@ WIN32 is still required for the locale module.
#endif
#endif /* Py_BUILD_CORE || Py_BUILD_CORE_BUILTIN || Py_BUILD_CORE_MODULE */
+/* Define to 1 if you want to disable the GIL */
+#undef Py_GIL_DISABLED
+
/* Compiler specific defines */
/* ------------------------------------------------------------------------*/
@@ -305,8 +308,16 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
/* not building the core - must be an ext */
# if defined(_MSC_VER)
/* So MSVC users need not specify the .lib
- file in their Makefile (other compilers are
- generally taken care of by distutils.) */
+ file in their Makefile */
+# if defined(Py_GIL_DISABLED)
+# if defined(_DEBUG)
+# pragma comment(lib,"python313t_d.lib")
+# elif defined(Py_LIMITED_API)
+# pragma comment(lib,"python3t.lib")
+# else
+# pragma comment(lib,"python313t.lib")
+# endif /* _DEBUG */
+# else /* Py_GIL_DISABLED */
# if defined(_DEBUG)
# pragma comment(lib,"python313_d.lib")
# elif defined(Py_LIMITED_API)
@@ -314,6 +325,7 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
# else
# pragma comment(lib,"python313.lib")
# endif /* _DEBUG */
+# endif /* Py_GIL_DISABLED */
# endif /* _MSC_VER */
# endif /* Py_BUILD_CORE */
#endif /* MS_COREDLL */
@@ -739,7 +751,4 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
/* Define if libssl has X509_VERIFY_PARAM_set1_host and related function */
#define HAVE_X509_VERIFY_PARAM_SET1_HOST 1
-/* Define if you want to disable the GIL */
-#undef Py_GIL_DISABLED
-
#endif /* !Py_CONFIG_H */
diff --git a/PCbuild/_asyncio.vcxproj b/PCbuild/_asyncio.vcxproj
index ed1e1bc0a420dc..76b0ffd660dba0 100644
--- a/PCbuild/_asyncio.vcxproj
+++ b/PCbuild/_asyncio.vcxproj
@@ -79,7 +79,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/_bz2.vcxproj b/PCbuild/_bz2.vcxproj
index 3fe95fbf83993a..e0dc6ec187a08d 100644
--- a/PCbuild/_bz2.vcxproj
+++ b/PCbuild/_bz2.vcxproj
@@ -80,7 +80,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/_ctypes.vcxproj b/PCbuild/_ctypes.vcxproj
index 253da31e9ce182..63d5fa49cd4e17 100644
--- a/PCbuild/_ctypes.vcxproj
+++ b/PCbuild/_ctypes.vcxproj
@@ -79,7 +79,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/_ctypes_test.vcxproj b/PCbuild/_ctypes_test.vcxproj
index 8a01e743a4d86f..97354739c09834 100644
--- a/PCbuild/_ctypes_test.vcxproj
+++ b/PCbuild/_ctypes_test.vcxproj
@@ -80,7 +80,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/_decimal.vcxproj b/PCbuild/_decimal.vcxproj
index 0916f1a2d37887..490d7df87eb1c6 100644
--- a/PCbuild/_decimal.vcxproj
+++ b/PCbuild/_decimal.vcxproj
@@ -79,7 +79,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/_elementtree.vcxproj b/PCbuild/_elementtree.vcxproj
index 8da5244bac0cb6..8c9c0e42f7fe3e 100644
--- a/PCbuild/_elementtree.vcxproj
+++ b/PCbuild/_elementtree.vcxproj
@@ -79,7 +79,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/_hashlib.vcxproj b/PCbuild/_hashlib.vcxproj
index 6dad8183c57ae3..2cd205224bc089 100644
--- a/PCbuild/_hashlib.vcxproj
+++ b/PCbuild/_hashlib.vcxproj
@@ -79,7 +79,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/_lzma.vcxproj b/PCbuild/_lzma.vcxproj
index fe076a6fc57168..40107d4b76cd53 100644
--- a/PCbuild/_lzma.vcxproj
+++ b/PCbuild/_lzma.vcxproj
@@ -79,7 +79,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/_multiprocessing.vcxproj b/PCbuild/_multiprocessing.vcxproj
index 77b6bfc8e1e483..a65397f532aa86 100644
--- a/PCbuild/_multiprocessing.vcxproj
+++ b/PCbuild/_multiprocessing.vcxproj
@@ -79,7 +79,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/_overlapped.vcxproj b/PCbuild/_overlapped.vcxproj
index 9e60d3b5db336c..224bf05d5303a0 100644
--- a/PCbuild/_overlapped.vcxproj
+++ b/PCbuild/_overlapped.vcxproj
@@ -79,7 +79,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/_queue.vcxproj b/PCbuild/_queue.vcxproj
index 8065b235851686..80a1c3c6a4ad3e 100644
--- a/PCbuild/_queue.vcxproj
+++ b/PCbuild/_queue.vcxproj
@@ -79,7 +79,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/_socket.vcxproj b/PCbuild/_socket.vcxproj
index 78fa4d6729abb9..41af0895921bbb 100644
--- a/PCbuild/_socket.vcxproj
+++ b/PCbuild/_socket.vcxproj
@@ -79,7 +79,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/_sqlite3.vcxproj b/PCbuild/_sqlite3.vcxproj
index 57c7413671e54e..9ae0a0fc3a009d 100644
--- a/PCbuild/_sqlite3.vcxproj
+++ b/PCbuild/_sqlite3.vcxproj
@@ -79,7 +79,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/_ssl.vcxproj b/PCbuild/_ssl.vcxproj
index 226ff506f8c62b..d4e1affab031d7 100644
--- a/PCbuild/_ssl.vcxproj
+++ b/PCbuild/_ssl.vcxproj
@@ -79,7 +79,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/_testbuffer.vcxproj b/PCbuild/_testbuffer.vcxproj
index 917d7ae50feb14..4e721e8ce09f0c 100644
--- a/PCbuild/_testbuffer.vcxproj
+++ b/PCbuild/_testbuffer.vcxproj
@@ -80,7 +80,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/_testcapi.vcxproj b/PCbuild/_testcapi.vcxproj
index 1c15541d3ec735..6911aacab29b97 100644
--- a/PCbuild/_testcapi.vcxproj
+++ b/PCbuild/_testcapi.vcxproj
@@ -80,7 +80,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/_testclinic.vcxproj b/PCbuild/_testclinic.vcxproj
index e319b3c0f42e0f..ef981332c6ab03 100644
--- a/PCbuild/_testclinic.vcxproj
+++ b/PCbuild/_testclinic.vcxproj
@@ -80,7 +80,7 @@
- .pyd
+ $(PyStdlibPydExt)
@@ -107,4 +107,4 @@
-
\ No newline at end of file
+
diff --git a/PCbuild/_testclinic_limited.vcxproj b/PCbuild/_testclinic_limited.vcxproj
index b00b2be491b423..183a55080e8693 100644
--- a/PCbuild/_testclinic_limited.vcxproj
+++ b/PCbuild/_testclinic_limited.vcxproj
@@ -79,7 +79,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/_testconsole.vcxproj b/PCbuild/_testconsole.vcxproj
index 5d7e14eff10294..69d312b17a5a62 100644
--- a/PCbuild/_testconsole.vcxproj
+++ b/PCbuild/_testconsole.vcxproj
@@ -80,7 +80,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/_testimportmultiple.vcxproj b/PCbuild/_testimportmultiple.vcxproj
index 6d80d5779f24d8..c35ac83c1c739f 100644
--- a/PCbuild/_testimportmultiple.vcxproj
+++ b/PCbuild/_testimportmultiple.vcxproj
@@ -80,7 +80,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/_testinternalcapi.vcxproj b/PCbuild/_testinternalcapi.vcxproj
index 558f66ca95cd33..a825cac9138674 100644
--- a/PCbuild/_testinternalcapi.vcxproj
+++ b/PCbuild/_testinternalcapi.vcxproj
@@ -80,7 +80,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/_testmultiphase.vcxproj b/PCbuild/_testmultiphase.vcxproj
index 430eb528cc3927..e730fe308ab835 100644
--- a/PCbuild/_testmultiphase.vcxproj
+++ b/PCbuild/_testmultiphase.vcxproj
@@ -80,7 +80,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/_testsinglephase.vcxproj b/PCbuild/_testsinglephase.vcxproj
index fb4bcd953923f8..bf4dabf66c1040 100644
--- a/PCbuild/_testsinglephase.vcxproj
+++ b/PCbuild/_testsinglephase.vcxproj
@@ -80,7 +80,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/_tkinter.vcxproj b/PCbuild/_tkinter.vcxproj
index 30cedcbb43de76..117488a01621cc 100644
--- a/PCbuild/_tkinter.vcxproj
+++ b/PCbuild/_tkinter.vcxproj
@@ -79,7 +79,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/_uuid.vcxproj b/PCbuild/_uuid.vcxproj
index 2437b7eb2d9399..50d81cc7916dbd 100644
--- a/PCbuild/_uuid.vcxproj
+++ b/PCbuild/_uuid.vcxproj
@@ -80,7 +80,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/_wmi.vcxproj b/PCbuild/_wmi.vcxproj
index c1914a3fa5a1bf..22fa8960982528 100644
--- a/PCbuild/_wmi.vcxproj
+++ b/PCbuild/_wmi.vcxproj
@@ -80,7 +80,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/_zoneinfo.vcxproj b/PCbuild/_zoneinfo.vcxproj
index 6e6389c3773397..47b5bfa5b8815a 100644
--- a/PCbuild/_zoneinfo.vcxproj
+++ b/PCbuild/_zoneinfo.vcxproj
@@ -79,7 +79,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/pyexpat.vcxproj b/PCbuild/pyexpat.vcxproj
index 001f8afd89b9e9..dc9161a8b290f9 100644
--- a/PCbuild/pyexpat.vcxproj
+++ b/PCbuild/pyexpat.vcxproj
@@ -79,7 +79,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/pyproject.props b/PCbuild/pyproject.props
index 68c0550f7603b7..de374a71f559d2 100644
--- a/PCbuild/pyproject.props
+++ b/PCbuild/pyproject.props
@@ -23,6 +23,13 @@
false
+
+ $(TargetName)$(TargetExt)
+ <_TargetNameSep>$(TargetNameExt.LastIndexOf(`.`))
+ $(TargetNameExt.Substring(0, $(_TargetNameSep)))
+ $(TargetNameExt.Substring($(_TargetNameSep)))
+
+
<_VCToolsVersion>$([System.Version]::Parse(`$(VCToolsVersion)`).Major).$([System.Version]::Parse(`$(VCToolsVersion)`).Minor)
@@ -36,7 +43,7 @@
<_PlatformPreprocessorDefinition>_WIN32;
<_PlatformPreprocessorDefinition Condition="$(Platform) == 'x64'">_WIN64;
<_PlatformPreprocessorDefinition Condition="$(Platform) == 'x64' and $(PlatformToolset) != 'ClangCL'">_M_X64;$(_PlatformPreprocessorDefinition)
- <_Py3NamePreprocessorDefinition>PY3_DLLNAME=L"$(Py3DllName)";
+ <_Py3NamePreprocessorDefinition>PY3_DLLNAME=L"$(Py3DllName)$(PyDebugExt)";
@@ -155,8 +162,8 @@ public override bool Execute() {
-
-
+
+
$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)\..\))
$(PySourcePath)\
-
+
+
+
$(PySourcePath)PCbuild\win32\
$(Py_OutDir)\win32\
@@ -52,7 +54,30 @@
$(PySourcePath)PCbuild\$(ArchName)\
$(BuildPath)\
$(BuildPath)instrumented\
-
+
+
+ ..\\..
+ ..\\..\\..
+
+
+
+
+ $(PySourcePath)PCbuild\win32t\
+ $(Py_OutDir)\win32t\
+ $(PySourcePath)PCbuild\amd64t\
+ $(Py_OutDir)\amd64t\
+ $(PySourcePath)PCbuild\arm32t\
+ $(Py_OutDir)\arm32t\
+ $(PySourcePath)PCbuild\arm64t\
+ $(Py_OutDir)\arm64t\
+ $(BuildPath32)
+ $(BuildPath64)
+ $(BuildPathArm32)
+ $(BuildPathArm64)
+ $(PySourcePath)PCbuild\$(ArchName)t\
+ $(BuildPath)\
+ $(BuildPath)instrumented\
+
..\\..
..\\..\\..
@@ -84,22 +109,19 @@
_d
-
+
-test
-
+
-32
-arm32
-arm64
-
-
- $(BuildPath)python$(PyDebugExt).exe
true
-
+
true
@@ -141,7 +163,7 @@
@@ -223,22 +245,50 @@
))
))
$([msbuild]::Add($(Field3Value), 9000))
-
+
+
+ python$(MajorVersionNumber).$(MinorVersionNumber)t
+ python
+ $(BuildPath)$(PyExeName)$(PyDebugExt).exe
+ pythonw$(MajorVersionNumber).$(MinorVersionNumber)t
+ pythonw
+
- python$(MajorVersionNumber)$(MinorVersionNumber)$(PyDebugExt)
+ python$(MajorVersionNumber)$(MinorVersionNumber)t$(PyDebugExt)
+ python$(MajorVersionNumber)$(MinorVersionNumber)$(PyDebugExt)
- python3$(PyDebugExt)
+ python3t
+ python3
+
+
.cp$(MajorVersionNumber)$(MinorVersionNumber)-win32
.cp$(MajorVersionNumber)$(MinorVersionNumber)-win_arm32
.cp$(MajorVersionNumber)$(MinorVersionNumber)-win_arm64
.cp$(MajorVersionNumber)$(MinorVersionNumber)-win_amd64
-
+
+
+ .pyd
+
$(MajorVersionNumber).$(MinorVersionNumber)$(PyArchExt)$(PyTestExt)
-
+
+
+
+ .cp$(MajorVersionNumber)$(MinorVersionNumber)t-win32
+ .cp$(MajorVersionNumber)$(MinorVersionNumber)t-win_arm32
+ .cp$(MajorVersionNumber)$(MinorVersionNumber)t-win_arm64
+ .cp$(MajorVersionNumber)$(MinorVersionNumber)t-win_amd64
+
+
+ $(PydTag).pyd
+
+
+ $(MajorVersionNumber).$(MinorVersionNumber)t$(PyArchExt)$(PyTestExt)
+
+
diff --git a/PCbuild/python.vcxproj b/PCbuild/python.vcxproj
index 8b733865962373..4b011808b604a2 100644
--- a/PCbuild/python.vcxproj
+++ b/PCbuild/python.vcxproj
@@ -72,6 +72,7 @@
+ $(PyExeName)
Application
false
MultiByte
@@ -129,7 +130,7 @@
+"$(OutDir)$(PyExeName)$(PyDebugExt).exe" "$(PySourcePath)PC\validate_ucrtbase.py" $(UcrtName)' ContinueOnError="true" />
@@ -142,7 +143,7 @@ set PYTHONPATH=$(PySourcePath)Lib
@echo Running $(Configuration)^|$(Platform) interpreter...
@setlocal
@set PYTHONHOME=$(PySourcePath)
-@"$(OutDir)python$(PyDebugExt).exe" %*
+@"$(OutDir)$(PyExeName)$(PyDebugExt).exe" %*
<_ExistingContent Condition="Exists('$(PySourcePath)python.bat')">$([System.IO.File]::ReadAllText('$(PySourcePath)python.bat'))
diff --git a/PCbuild/python3dll.vcxproj b/PCbuild/python3dll.vcxproj
index ec22e6fc76e584..235ea1cf9d33fb 100644
--- a/PCbuild/python3dll.vcxproj
+++ b/PCbuild/python3dll.vcxproj
@@ -70,12 +70,12 @@
{885D4898-D08D-4091-9C40-C700CFE3FC5A}
python3dll
Win32Proj
- python3
false
+ $(Py3DllName)
DynamicLibrary
diff --git a/PCbuild/pythonw.vcxproj b/PCbuild/pythonw.vcxproj
index e23635e5ea9411..d4db3caf774061 100644
--- a/PCbuild/pythonw.vcxproj
+++ b/PCbuild/pythonw.vcxproj
@@ -73,6 +73,7 @@
+ $(PyWExeName)
Application
false
diff --git a/PCbuild/select.vcxproj b/PCbuild/select.vcxproj
index 750a713949919a..d7448fd4d72380 100644
--- a/PCbuild/select.vcxproj
+++ b/PCbuild/select.vcxproj
@@ -78,7 +78,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/sqlite3.vcxproj b/PCbuild/sqlite3.vcxproj
index c502d51833b91a..6bcc4e913c8e77 100644
--- a/PCbuild/sqlite3.vcxproj
+++ b/PCbuild/sqlite3.vcxproj
@@ -69,12 +69,12 @@
{A1A295E5-463C-437F-81CA-1F32367685DA}
sqlite3
- .pyd
false
+ $(PyStdlibPydExt)
DynamicLibrary
NotSet
diff --git a/PCbuild/unicodedata.vcxproj b/PCbuild/unicodedata.vcxproj
index addef753359ed6..781f938e2ab78e 100644
--- a/PCbuild/unicodedata.vcxproj
+++ b/PCbuild/unicodedata.vcxproj
@@ -79,7 +79,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/winsound.vcxproj b/PCbuild/winsound.vcxproj
index 32cedc9b444902..c26029b15a339f 100644
--- a/PCbuild/winsound.vcxproj
+++ b/PCbuild/winsound.vcxproj
@@ -80,7 +80,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/xxlimited.vcxproj b/PCbuild/xxlimited.vcxproj
index 1c776fb0da3e72..093e6920c0b76c 100644
--- a/PCbuild/xxlimited.vcxproj
+++ b/PCbuild/xxlimited.vcxproj
@@ -80,7 +80,7 @@
- .pyd
+ $(PyStdlibPydExt)
diff --git a/PCbuild/xxlimited_35.vcxproj b/PCbuild/xxlimited_35.vcxproj
index dd830b3b6aaa91..3f4d4463f24af0 100644
--- a/PCbuild/xxlimited_35.vcxproj
+++ b/PCbuild/xxlimited_35.vcxproj
@@ -80,7 +80,7 @@
- .pyd
+ $(PyStdlibPydExt)