]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-99113: Add Py_MOD_PER_INTERPRETER_GIL_SUPPORTED (gh-104205)
authorEric Snow <ericsnowcurrently@gmail.com>
Fri, 5 May 2023 21:11:27 +0000 (15:11 -0600)
committerGitHub <noreply@github.com>
Fri, 5 May 2023 21:11:27 +0000 (21:11 +0000)
Here we are doing no more than adding the value for Py_mod_multiple_interpreters and using it for stdlib modules.  We will start checking for it in gh-104206 (once PyInterpreterState.ceval.own_gil is added in gh-104204).

99 files changed:
Include/moduleobject.h
Modules/_abc.c
Modules/_asynciomodule.c
Modules/_bisectmodule.c
Modules/_blake2/blake2module.c
Modules/_bz2module.c
Modules/_codecsmodule.c
Modules/_collectionsmodule.c
Modules/_contextvarsmodule.c
Modules/_cryptmodule.c
Modules/_csv.c
Modules/_ctypes/_ctypes_test.c
Modules/_curses_panel.c
Modules/_dbmmodule.c
Modules/_elementtree.c
Modules/_functoolsmodule.c
Modules/_gdbmmodule.c
Modules/_hashopenssl.c
Modules/_heapqmodule.c
Modules/_json.c
Modules/_localemodule.c
Modules/_lsprof.c
Modules/_lzmamodule.c
Modules/_multiprocessing/multiprocessing.c
Modules/_multiprocessing/posixshmem.c
Modules/_opcode.c
Modules/_operator.c
Modules/_pickle.c
Modules/_posixsubprocess.c
Modules/_queuemodule.c
Modules/_randommodule.c
Modules/_scproxy.c
Modules/_sha3/sha3module.c
Modules/_sqlite/module.c
Modules/_sre/sre.c
Modules/_ssl.c
Modules/_stat.c
Modules/_statisticsmodule.c
Modules/_struct.c
Modules/_testinternalcapi.c
Modules/_testmultiphase.c
Modules/_threadmodule.c
Modules/_typingmodule.c
Modules/_uuidmodule.c
Modules/_weakref.c
Modules/_winapi.c
Modules/_xxinterpchannelsmodule.c
Modules/_xxsubinterpretersmodule.c
Modules/_zoneinfo.c
Modules/arraymodule.c
Modules/atexitmodule.c
Modules/audioop.c
Modules/binascii.c
Modules/cjkcodecs/cjkcodecs.h
Modules/cjkcodecs/multibytecodec.c
Modules/cmathmodule.c
Modules/errnomodule.c
Modules/faulthandler.c
Modules/fcntlmodule.c
Modules/gcmodule.c
Modules/grpmodule.c
Modules/itertoolsmodule.c
Modules/mathmodule.c
Modules/md5module.c
Modules/mmapmodule.c
Modules/nismodule.c
Modules/overlapped.c
Modules/posixmodule.c
Modules/pwdmodule.c
Modules/pyexpat.c
Modules/resource.c
Modules/selectmodule.c
Modules/sha1module.c
Modules/sha2module.c
Modules/signalmodule.c
Modules/socketmodule.c
Modules/spwdmodule.c
Modules/symtablemodule.c
Modules/syslogmodule.c
Modules/termios.c
Modules/timemodule.c
Modules/unicodedata.c
Modules/xxlimited.c
Modules/xxlimited_35.c
Modules/xxmodule.c
Modules/xxsubtype.c
Modules/zlibmodule.c
Objects/moduleobject.c
Objects/unicodeobject.c
PC/_testconsole.c
PC/msvcrtmodule.c
PC/winreg.c
PC/winsound.c
Parser/asdl_c.py
Python/Python-ast.c
Python/Python-tokenize.c
Python/_warnings.c
Python/import.c
Python/marshal.c

index 7ac6f6e8a4a24e0cfdfad8afe3ac71293b2616d8..b8bdfe29d80406b08a55e6a9c643ebf6acae7c2f 100644 (file)
@@ -87,6 +87,7 @@ struct PyModuleDef_Slot {
 /* for Py_mod_multiple_interpreters: */
 #define Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED ((void *)0)
 #define Py_MOD_MULTIPLE_INTERPRETERS_SUPPORTED ((void *)1)
+#define Py_MOD_PER_INTERPRETER_GIL_SUPPORTED ((void *)2)
 
 #endif /* New in 3.5 */
 
index 9694331339aa789aeb40ee0d44f187805779e3a0..d3e405dadb664a9f225d8f5a6ca2ef24e82205ed 100644 (file)
@@ -944,6 +944,7 @@ _abcmodule_free(void *module)
 
 static PyModuleDef_Slot _abcmodule_slots[] = {
     {Py_mod_exec, _abcmodule_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index fef34d65523870dfc5d3c73f76deea62a523a9a9..822d5f2a41de332b757617114c70c01ed576e5c3 100644 (file)
@@ -3803,6 +3803,7 @@ module_exec(PyObject *mod)
 
 static struct PyModuleDef_Slot module_slots[] = {
     {Py_mod_exec, module_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL},
 };
 
index 30801c2f87eee7fd1a5408507955506f5491e8de..0773bbd191931df2ca06d22e4a6f313a8e3a0cf6 100644 (file)
@@ -457,6 +457,7 @@ bisect_modexec(PyObject *m)
 
 static PyModuleDef_Slot bisect_slots[] = {
     {Py_mod_exec, bisect_modexec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 44d783b40d0453905a04f510f0d93e46e1c0c6b7..0d1d88c660368471ab922dc2a31fdb296e3d2d07 100644 (file)
@@ -127,6 +127,7 @@ blake2_exec(PyObject *m)
 
 static PyModuleDef_Slot _blake2_slots[] = {
     {Py_mod_exec, blake2_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
@@ -146,4 +147,4 @@ PyMODINIT_FUNC
 PyInit__blake2(void)
 {
     return PyModuleDef_Init(&blake2_module);
-}
\ No newline at end of file
+}
index 8e7b8e8078af4e7abc6fd62f8bc93de479b10f91..97bd44b4ac969444424737bb4a5c13827a1fc269 100644 (file)
@@ -799,6 +799,7 @@ _bz2_free(void *module)
 
 static struct PyModuleDef_Slot _bz2_slots[] = {
     {Py_mod_exec, _bz2_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index d5035d20600ae281941a48b878672daf038db3e6..777c753bd7c2a92a10c3e69dfb728923d69c511f 100644 (file)
@@ -1049,6 +1049,7 @@ static PyMethodDef _codecs_functions[] = {
 };
 
 static PyModuleDef_Slot _codecs_slots[] = {
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index a9b1425177c3d76c282d1053cde53e7083e55edb..9a81531bdffb16a2e0d5d0ae61d24473e36fa2f9 100644 (file)
@@ -2571,6 +2571,7 @@ collections_exec(PyObject *module) {
 
 static struct PyModuleDef_Slot collections_slots[] = {
     {Py_mod_exec, collections_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index d13b5962c13c445475775958e87671836132e394..f621c1de6d42d6b14b39c5f5e94f9abad4c6efd0 100644 (file)
@@ -44,6 +44,7 @@ _contextvars_exec(PyObject *m)
 
 static struct PyModuleDef_Slot _contextvars_slots[] = {
     {Py_mod_exec, _contextvars_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 72a4f44600d92c9c4e58e463196be166b0528c95..75035084c9cd29c91ec4fff5d584e6464ff54f3f 100644 (file)
@@ -58,6 +58,7 @@ static PyMethodDef crypt_methods[] = {
 };
 
 static PyModuleDef_Slot _crypt_slots[] = {
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 2217cc2ca7a775872d66efadfc7db7709fe20937..0cde5c5a8bdc6839d939c5a727c033dee63c879b 100644 (file)
@@ -1798,6 +1798,7 @@ csv_exec(PyObject *module) {
 
 static PyModuleDef_Slot csv_slots[] = {
     {Py_mod_exec, csv_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index a8811d03cc91a2922d9eb0510c050147bf25992b..ce652b362d5bb3dad42743a2eeab2b1c3bee68ef 100644 (file)
@@ -1054,6 +1054,7 @@ _testfunc_pylist_append(PyObject *list, PyObject *item)
 }
 
 static struct PyModuleDef_Slot _ctypes_test_slots[] = {
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 2144345de01ba3c8d1c431c77227ab9ffdd1858f..a3124ff80551e012ee3c197f4ca9d7cabd07f8c7 100644 (file)
@@ -690,6 +690,9 @@ _curses_panel_exec(PyObject *mod)
 
 static PyModuleDef_Slot _curses_slots[] = {
     {Py_mod_exec, _curses_panel_exec},
+    // XXX gh-103092: fix isolation.
+    {Py_mod_multiple_interpreters, Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},
+    //{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 54376022dcb182d707a47f1cffc00e88e183941a..9908174c94c4501e4067952da72ce8e3548e5847 100644 (file)
@@ -583,6 +583,7 @@ _dbm_module_free(void *module)
 
 static PyModuleDef_Slot _dbmmodule_slots[] = {
     {Py_mod_exec, _dbm_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 97be89a167104f9c8a5e61f65d84aab17fd90eb6..42de3c675c2e5a422d7123dcad5d8aff4d732bad 100644 (file)
@@ -4419,6 +4419,9 @@ error:
 
 static struct PyModuleDef_Slot elementtree_slots[] = {
     {Py_mod_exec, module_exec},
+    // XXX gh-103092: fix isolation.
+    {Py_mod_multiple_interpreters, Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},
+    //{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL},
 };
 
index 4032ba79374fa4fe539a4f3efcaf0ed680cb2fef..a8001d71223fdc912969638d6b34af2a9ba4bb41 100644 (file)
@@ -1520,6 +1520,7 @@ _functools_free(void *module)
 
 static struct PyModuleDef_Slot _functools_slots[] = {
     {Py_mod_exec, _functools_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 4e8acdefc722b24aa58ee660a20b6103acc0919c..4dbb5741b2ede82385354977e21851cca2ccd042 100644 (file)
@@ -793,6 +793,7 @@ _gdbm_module_free(void *module)
 
 static PyModuleDef_Slot _gdbm_module_slots[] = {
     {Py_mod_exec, _gdbm_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 7476e5dc7dd61e9a1709e1d24513f6787794f15c..99d0b72819137ee3a97ab8def8aed5b1e3358340 100644 (file)
@@ -2260,6 +2260,7 @@ static PyModuleDef_Slot hashlib_slots[] = {
     {Py_mod_exec, hashlib_md_meth_names},
     {Py_mod_exec, hashlib_init_constructors},
     {Py_mod_exec, hashlib_exception},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 07ddc7b0851241732c96acbc1cc15561b57a27dc..00285ae01f857485fa4340ad25e1b30f78348020 100644 (file)
@@ -682,6 +682,7 @@ heapq_exec(PyObject *m)
 
 static struct PyModuleDef_Slot heapq_slots[] = {
     {Py_mod_exec, heapq_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index fa8e2a936d2c33af391344ba01a7279b5657675b..c90de05b046b0040d18d381bcf19e71f09f43dad 100644 (file)
@@ -1801,6 +1801,7 @@ _json_exec(PyObject *module)
 
 static PyModuleDef_Slot _json_slots[] = {
     {Py_mod_exec, _json_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 96675cdfb661ad7df16a2c8fc0aeb22820d7d3a2..1ada7305117bb7c2ec1173a847d8fd409190795f 100644 (file)
@@ -874,6 +874,7 @@ _locale_exec(PyObject *module)
 
 static struct PyModuleDef_Slot _locale_slots[] = {
     {Py_mod_exec, _locale_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index a7ce328cb5307a2d797e53813d4e8a5dfa27ce4f..1c84f66ee6f579249d4d8d6075c043c9c9f2b906 100644 (file)
@@ -1001,6 +1001,9 @@ _lsprof_exec(PyObject *module)
 
 static PyModuleDef_Slot _lsprofslots[] = {
     {Py_mod_exec, _lsprof_exec},
+    // XXX gh-103092: fix isolation.
+    {Py_mod_multiple_interpreters, Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},
+    //{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index bccab8639159e7bbf1bcd578fc4bd379290ec345..e34fbad230d51ae7ab0792cf273e8618f1a796f8 100644 (file)
@@ -1611,6 +1611,7 @@ static PyMethodDef lzma_methods[] = {
 
 static PyModuleDef_Slot lzma_slots[] = {
     {Py_mod_exec, lzma_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 2463e1e1a8bf7efd371ab19d40f1c6ac40e9ef08..8f9daa5c3de0cc889fc1e4996e77d276bb38f91d 100644 (file)
@@ -276,6 +276,7 @@ multiprocessing_exec(PyObject *module)
 
 static PyModuleDef_Slot multiprocessing_slots[] = {
     {Py_mod_exec, multiprocessing_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index d64ded4168228f817d5da888a740843bbec6d5fb..88c93fe313785cc53796b942221103bc533a4dcf 100644 (file)
@@ -110,12 +110,19 @@ static PyMethodDef module_methods[ ] = {
 };
 
 
+static PyModuleDef_Slot module_slots[] = {
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
+    {0, NULL}
+};
+
+
 static struct PyModuleDef _posixshmemmodule = {
     PyModuleDef_HEAD_INIT,
     .m_name = "_posixshmem",
     .m_doc = "POSIX shared memory module",
     .m_size = 0,
     .m_methods = module_methods,
+    .m_slots = module_slots,
 };
 
 /* Module init function */
index 99be977417743e5483cfe22c28a46ad75c577872..b70d426fa29bc07d544cbb3a37c9e9b1a304fa3f 100644 (file)
@@ -94,12 +94,18 @@ opcode_functions[] =  {
     {NULL, NULL, 0, NULL}
 };
 
+static PyModuleDef_Slot module_slots[] = {
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
+    {0, NULL}
+};
+
 static struct PyModuleDef opcodemodule = {
     PyModuleDef_HEAD_INIT,
     .m_name = "_opcode",
     .m_doc = "Opcode support module.",
     .m_size = 0,
-    .m_methods = opcode_functions
+    .m_methods = opcode_functions,
+    .m_slots = module_slots,
 };
 
 PyMODINIT_FUNC
index 38335b6995016c7e34496ccba1d655a135142a7e..68ccc90562d38d2801beb066a8e37d5d83bd10d8 100644 (file)
@@ -1828,6 +1828,7 @@ operator_exec(PyObject *module)
 
 static struct PyModuleDef_Slot operator_slots[] = {
     {Py_mod_exec, operator_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 360c7910f671874507ea40d0fc0121334b46f641..bf7ecae0cc0e5000382c06ae3f3c4f01c8f79898 100644 (file)
@@ -7912,6 +7912,7 @@ _pickle_exec(PyObject *m)
 
 static PyModuleDef_Slot pickle_slots[] = {
     {Py_mod_exec, _pickle_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL},
 };
 
index f5bce8cd7628ad468f247db50d2e0ed037a6322a..2bf83db0e228fb08033418a716e17f1ffed41980 100644 (file)
@@ -1140,6 +1140,7 @@ static PyMethodDef module_methods[] = {
 };
 
 static PyModuleDef_Slot _posixsubprocess_slots[] = {
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index af19dd6c198b6773d239f930ab7d999b53efb77a..d36a911a57c02ca953335457e7a0993276eec9bb 100644 (file)
@@ -431,6 +431,7 @@ queuemodule_exec(PyObject *module)
 
 static PyModuleDef_Slot queuemodule_slots[] = {
     {Py_mod_exec, queuemodule_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 6e22053239305a5b925daedf2cd1f3135db80756..fda5ef267fb470b9cd4bae5adb9584106386abde 100644 (file)
@@ -624,6 +624,7 @@ _random_exec(PyObject *module)
 
 static PyModuleDef_Slot _random_slots[] = {
     {Py_mod_exec, _random_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 344b66f9aad5226763afbf213d4d31a8f4f8fec0..e66918016b8da624105b194df556a405cf470cce 100644 (file)
@@ -232,6 +232,7 @@ static PyMethodDef mod_methods[] = {
 };
 
 static PyModuleDef_Slot _scproxy_slots[] = {
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 633a0c0ea08d2a70ace0281a10c012eb647e5aa3..93abc3b2710e554d7c07cb59747d8a232d5adf6f 100644 (file)
@@ -641,6 +641,7 @@ _sha3_exec(PyObject *m)
 
 static PyModuleDef_Slot _sha3_slots[] = {
     {Py_mod_exec, _sha3_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 9c42faa232c70d9f4eb021147af5a6ded8fcc58a..27bd42f4595e1c439db34bbe7512564b78d04052 100644 (file)
@@ -785,6 +785,7 @@ error:
 
 static struct PyModuleDef_Slot module_slots[] = {
     {Py_mod_exec, module_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL},
 };
 
index 4b6290a5967932044a51b5a481a1f33e5a42a5bc..f8a1a05a3188892302af9ee39e70428d957c220d 100644 (file)
@@ -3221,6 +3221,7 @@ error:
 
 static PyModuleDef_Slot sre_slots[] = {
     {Py_mod_exec, sre_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL},
 };
 
index c9e2f24d66cc00edb72b4fdc16972cab4219a873..016a5a5cbca54817bfff646afe61652dd8ee8b7d 100644 (file)
@@ -6161,6 +6161,9 @@ static PyModuleDef_Slot sslmodule_slots[] = {
     {Py_mod_exec, sslmodule_init_constants},
     {Py_mod_exec, sslmodule_init_versioninfo},
     {Py_mod_exec, sslmodule_init_strings},
+    // XXX gh-103092: fix isolation.
+    {Py_mod_multiple_interpreters, Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},
+    //{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 546e6a5f94ca15a49d0264d9569021ed042f9748..4218799103b59d270bdc84e917f8c6ee0f064420 100644 (file)
@@ -612,6 +612,7 @@ stat_exec(PyObject *module)
 
 static PyModuleDef_Slot stat_slots[] = {
     {Py_mod_exec, stat_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index b9d1e4f1616036095873f98cffef2de10e33a577..1d5465fbe6d04ebcb88adb9bce98c3a3725afb9f 100644 (file)
@@ -129,6 +129,7 @@ PyDoc_STRVAR(statistics_doc,
 "Accelerators for the statistics module.\n");
 
 static struct PyModuleDef_Slot _statisticsmodule_slots[] = {
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 3db7b991acd0a1895758306b9bd3128325fa2b5c..26434f714de5cc5415676a6438925a4a72a678a3 100644 (file)
@@ -2572,6 +2572,7 @@ _structmodule_exec(PyObject *m)
 
 static PyModuleDef_Slot _structmodule_slots[] = {
     {Py_mod_exec, _structmodule_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 1e38f1aa63499ba76db3de60e2eaa8ee48b3319a..24152412107c09be5de1f8027708fd8cf3c25b30 100644 (file)
@@ -789,6 +789,7 @@ module_exec(PyObject *module)
 
 static struct PyModuleDef_Slot module_slots[] = {
     {Py_mod_exec, module_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL},
 };
 
index bc7d8b64a94322b94b88badc946097cef8dfa7fb..58b064bb17cd871174b13da333204b56611e0fcc 100644 (file)
@@ -441,6 +441,7 @@ static int execfunc(PyObject *m)
 
 static PyModuleDef_Slot main_slots[] = {
     {Py_mod_exec, execfunc},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL},
 };
 
@@ -745,6 +746,7 @@ PyInit__testmultiphase_create_unreported_exception(void)
 static PyModuleDef_Slot slots_nonmodule_with_exec_slots[] = {
     {Py_mod_create, createfunc_nonmodule},
     {Py_mod_exec, execfunc},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL},
 };
 
@@ -765,6 +767,7 @@ execfunc_err(PyObject *mod)
 
 static PyModuleDef_Slot slots_exec_err[] = {
     {Py_mod_exec, execfunc_err},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL},
 };
 
@@ -786,6 +789,7 @@ execfunc_raise(PyObject *spec)
 
 static PyModuleDef_Slot slots_exec_raise[] = {
     {Py_mod_exec, execfunc_raise},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL},
 };
 
@@ -807,6 +811,7 @@ execfunc_unreported_exception(PyObject *mod)
 
 static PyModuleDef_Slot slots_exec_unreported_exception[] = {
     {Py_mod_exec, execfunc_unreported_exception},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL},
 };
 
@@ -845,6 +850,7 @@ meth_state_access_exec(PyObject *m)
 
 static PyModuleDef_Slot meth_state_access_slots[] = {
     {Py_mod_exec, meth_state_access_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index fd2fd9ab25f113a0a306d43f4143eb62dc28bbb0..5d753b4a0ebc5e9df52b4292e3f1153f7b36db21 100644 (file)
@@ -1710,6 +1710,7 @@ The 'threading' module provides a more convenient interface.");
 
 static PyModuleDef_Slot thread_module_slots[] = {
     {Py_mod_exec, thread_module_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 262dddb63fd5fec658141534b1af505f35135bbc..64286375636aff6e48d47b1905b2dd0445565775 100644 (file)
@@ -36,6 +36,7 @@ PyDoc_STRVAR(typing_doc,
 "Accelerators for the typing module.\n");
 
 static struct PyModuleDef_Slot _typingmodule_slots[] = {
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index eae38f5c98cc7fe89f5a3bc618467e2b73396ede..ed3b2fedfd4d885a95684932b2c1fbeab2a33097 100644 (file)
@@ -106,6 +106,7 @@ static PyMethodDef uuid_methods[] = {
 
 static PyModuleDef_Slot uuid_slots[] = {
     {Py_mod_exec, uuid_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 157a852ae9a3789743626f372c4dd8969b5174bb..387b8fa9d0a6f140275eeca4714c7f6f62eeae68 100644 (file)
@@ -174,6 +174,7 @@ weakref_exec(PyObject *module)
 
 static struct PyModuleDef_Slot weakref_slots[] = {
     {Py_mod_exec, weakref_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index fa380b8b798405e5541102982809c7118581210c..473bcb4736e925d5c94754cbce96147383a2e109 100644 (file)
@@ -2259,6 +2259,7 @@ static int winapi_exec(PyObject *m)
 
 static PyModuleDef_Slot winapi_slots[] = {
     {Py_mod_exec, winapi_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 13b005eaef9866f53578b4be53cb11c71a80e1fd..616dd57768811631055934c8993f529d50b9916c 100644 (file)
@@ -2418,6 +2418,7 @@ error:
 
 static struct PyModuleDef_Slot module_slots[] = {
     {Py_mod_exec, module_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL},
 };
 
index 433fecfda655de37470f87b5056cabc7df5a4096..d7daae254638ecd958143fe1a9985564371dc407 100644 (file)
@@ -822,6 +822,7 @@ error:
 
 static struct PyModuleDef_Slot module_slots[] = {
     {Py_mod_exec, module_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL},
 };
 
index c215a75b804fdb3eb53c3f87ef72fee9650f563a..3b2d282d65cab9dfd4659b268963b68c49b2b2ef 100644 (file)
@@ -2822,7 +2822,10 @@ error:
 }
 
 static PyModuleDef_Slot zoneinfomodule_slots[] = {
-    {Py_mod_exec, zoneinfomodule_exec}, {0, NULL}};
+    {Py_mod_exec, zoneinfomodule_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
+    {0, NULL},
+};
 
 static struct PyModuleDef zoneinfomodule = {
     .m_base = PyModuleDef_HEAD_INIT,
index 798a76292579666bdd518f21781ca666425b412e..f94bbec8e0bb3c131394fbf6ae861f7a899bbff0 100644 (file)
@@ -3111,6 +3111,7 @@ array_modexec(PyObject *m)
 
 static PyModuleDef_Slot arrayslots[] = {
     {Py_mod_exec, array_modexec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 47afd7f0751039132f16577b38ee7d603d024ea3..5882d405636400f7fb962f0904c2081043ed6827 100644 (file)
@@ -314,12 +314,18 @@ upon normal program termination.\n\
 Two public functions, register and unregister, are defined.\n\
 ");
 
+static PyModuleDef_Slot atexitmodule_slots[] = {
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
+    {0, NULL}
+};
+
 static struct PyModuleDef atexitmodule = {
     PyModuleDef_HEAD_INIT,
     .m_name = "atexit",
     .m_doc = atexit__doc__,
     .m_size = 0,
     .m_methods = atexit_methods,
+    .m_slots = atexitmodule_slots,
 };
 
 PyMODINIT_FUNC
index 9325f82f9a17e069bf5b3f1131bba72c5fe87ee4..604306d449265cd79496fafd4d756ba6c49f3220 100644 (file)
@@ -1975,6 +1975,7 @@ audioop_exec(PyObject* module)
 
 static PyModuleDef_Slot audioop_slots[] = {
     {Py_mod_exec, audioop_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 95ddb26988d6c94736de279ff2697760f38e8a8a..4ecff4793be9a0c0c5e7afba737e5534ac63478e 100644 (file)
@@ -1291,6 +1291,7 @@ binascii_exec(PyObject *module) {
 
 static PyModuleDef_Slot binascii_slots[] = {
     {Py_mod_exec, binascii_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index e553ff3e17b8985c54d75252e2699882b11d12c5..36bc7024df9acc4edf70648912358b4569fd4943 100644 (file)
@@ -502,6 +502,7 @@ static struct PyMethodDef _cjk_methods[] = {
 
 static PyModuleDef_Slot _cjk_slots[] = {
     {Py_mod_exec, _cjk_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 233fc3020fd6a8af0635efd95003829c80d28ac9..b501e4fb9232324b5acc373817ab9e867b409f16 100644 (file)
@@ -2062,6 +2062,7 @@ static struct PyMethodDef _multibytecodec_methods[] = {
 
 static PyModuleDef_Slot _multibytecodec_slots[] = {
     {Py_mod_exec, _multibytecodec_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index b4f7e5424b4ccf9d61b4b04b31ee231e12b61c8f..914a697f8e173b9fb664f11e16cccb7c9b43b87f 100644 (file)
@@ -1411,6 +1411,7 @@ cmath_exec(PyObject *mod)
 
 static PyModuleDef_Slot cmath_slots[] = {
     {Py_mod_exec, cmath_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index df4e494ba8a97373bde291c48c18ffe29c82a390..fddde960a5fe9a3bef14c46ca4ca3250d4caccb4 100644 (file)
@@ -940,6 +940,7 @@ errno_exec(PyObject *module)
 
 static PyModuleDef_Slot errno_slots[] = {
     {Py_mod_exec, errno_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 9b4e4199cdc20a0633f3ec162afd5e989bb983bf..428b090193f093c8dc229b941abd7f8834062216 100644 (file)
@@ -1274,6 +1274,8 @@ PyExec_faulthandler(PyObject *module) {
 
 static PyModuleDef_Slot faulthandler_slots[] = {
     {Py_mod_exec, PyExec_faulthandler},
+    // XXX gh-103092: fix isolation.
+    //{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 9a8ec8dc9858d7d9ee2e286413c17d91097a7b11..6ca0b62bc5dca8cfd7f50d92e879af1196b9cbf0 100644 (file)
@@ -686,6 +686,7 @@ fcntl_exec(PyObject *module)
 
 static PyModuleDef_Slot fcntl_slots[] = {
     {Py_mod_exec, fcntl_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index f4d5186ff1552eeb137807152872a4a4de756d92..26ddcdd538a4d4a3efbf9b899cc19127b319a850 100644 (file)
@@ -2044,6 +2044,7 @@ gcmodule_exec(PyObject *module)
 
 static PyModuleDef_Slot gcmodule_slots[] = {
     {Py_mod_exec, gcmodule_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index f6298ca0ee84c135d03de2b0b582fac7f9387a0f..57cdde6064c24e619a2796f0bf1d9031b2d9d8e0 100644 (file)
@@ -327,6 +327,7 @@ grpmodule_exec(PyObject *module)
 
 static PyModuleDef_Slot grpmodule_slots[] = {
     {Py_mod_exec, grpmodule_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index c986e02867ca82d2c8ebb935899fc71f0814e95c..555eab09935e9e6511595f2958278747322d400d 100644 (file)
@@ -4693,6 +4693,7 @@ itertoolsmodule_exec(PyObject *mod)
 
 static struct PyModuleDef_Slot itertoolsmodule_slots[] = {
     {Py_mod_exec, itertoolsmodule_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 4a2381d9611776adf59d51e924dd8067671fbd12..3737a9654575ab2bd792f63b14a1354b3766bbf5 100644 (file)
@@ -4064,6 +4064,7 @@ static PyMethodDef math_methods[] = {
 
 static PyModuleDef_Slot math_slots[] = {
     {Py_mod_exec, math_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 4f7bc77a8836a333aa5220316a9a9dfc50b27bd3..86605771d9643fe43c72dbd53b27eacae7578328 100644 (file)
@@ -340,6 +340,7 @@ md5_exec(PyObject *m)
 
 static PyModuleDef_Slot _md5_slots[] = {
     {Py_mod_exec, md5_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index fe76ca6eafaa88ada354a09652176af02f064c21..a470dd3c2f3bbac3f358975f91e6ae376a73f3b2 100644 (file)
@@ -1713,6 +1713,7 @@ mmap_exec(PyObject *module)
 
 static PyModuleDef_Slot mmap_slots[] = {
     {Py_mod_exec, mmap_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index ec7f6d8031e84bc0f9a97ab93fb3eb9bb0505304..6d094490cea73116776953f9f01e3d78fc2cf653 100644 (file)
@@ -502,6 +502,9 @@ nis_exec(PyObject *module)
 
 static PyModuleDef_Slot nis_slots[] = {
     {Py_mod_exec, nis_exec},
+    // XXX gh-103092: fix isolation.
+    {Py_mod_multiple_interpreters, Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},
+    //{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 02c0f401be4c9e0f0e9c77af940ff5e1546c827e..ac637316583d2da2ae5436b36945ad62c8f62bf0 100644 (file)
@@ -2050,6 +2050,7 @@ overlapped_exec(PyObject *module)
 
 static PyModuleDef_Slot overlapped_slots[] = {
     {Py_mod_exec, overlapped_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index b395c265c72d0c6f980ae102bb406874186e0e98..5022fdeb03703a4eb4e5c9a9941dd6362af48bf5 100644 (file)
@@ -16793,6 +16793,7 @@ posixmodule_exec(PyObject *m)
 
 static PyModuleDef_Slot posixmodile_slots[] = {
     {Py_mod_exec, posixmodule_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index a757380bd09f70c5ced61e41d5cd963deb88c4d9..cc2e2a43893971d4a2f8dc5036b78c74e0278362 100644 (file)
@@ -336,6 +336,7 @@ pwdmodule_exec(PyObject *module)
 
 static PyModuleDef_Slot pwdmodule_slots[] = {
     {Py_mod_exec, pwdmodule_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 0a744998b6c514d428ae81f38dd9b33452db6fad..c0fbd4d39f00968b28e0bea1eecfdfe8d2653314 100644 (file)
@@ -2056,6 +2056,9 @@ pyexpat_free(void *module)
 
 static PyModuleDef_Slot pyexpat_slots[] = {
     {Py_mod_exec, pyexpat_exec},
+    // XXX gh-103092: fix isolation.
+    {Py_mod_multiple_interpreters, Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},
+    //{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index a97fb870062b822a50ee7d260ee385427ea9a2ff..2a8158c9be5359ad729db39f89e8a4bbe569cb4f 100644 (file)
@@ -514,6 +514,7 @@ resource_exec(PyObject *module)
 
 static struct PyModuleDef_Slot resource_slots[] = {
     {Py_mod_exec, resource_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 5a1e40d0b4a482c68e72daa2898949727a8c4174..79bd5b59ab68f9651aeab569d1e83599107b8209 100644 (file)
@@ -2651,6 +2651,7 @@ _select_exec(PyObject *m)
 
 static PyModuleDef_Slot _select_slots[] = {
     {Py_mod_exec, _select_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index f8d4056fd34b65bbe9f6b0dc76d2ffc3e47ae235..bdb76c56f1a6e831ef5b58551161e39ba62006a4 100644 (file)
@@ -344,6 +344,7 @@ _sha1_exec(PyObject *module)
 
 static PyModuleDef_Slot _sha1_slots[] = {
     {Py_mod_exec, _sha1_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 72de20b44762d734c9db2b20f2488cb68a80a7c9..37d9b5c538fd0b09c0d786292592ca3d6679f1fa 100644 (file)
@@ -785,6 +785,7 @@ static int sha2_exec(PyObject *module)
 
 static PyModuleDef_Slot _sha2_slots[] = {
     {Py_mod_exec, sha2_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index fdd1450050fa1b9089ae3051b9e78d6649198f67..2350236ad46b250f239439be60bbbb93097edc29 100644 (file)
@@ -1695,6 +1695,7 @@ _signal_module_free(void *module)
 
 static PyModuleDef_Slot signal_slots[] = {
     {Py_mod_exec, signal_module_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index e5478382e11f890eaf19ba8fd1232d9be8a98684..60219593be61e2efb1e559eeef02b806e20b5693 100644 (file)
@@ -8870,6 +8870,7 @@ error:
 
 static struct PyModuleDef_Slot socket_slots[] = {
     {Py_mod_exec, socket_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL},
 };
 
index 42123c93b59365696ab00f474387f3ac51a29c81..13f1115feefa86afeb6a5a157c6a5ab5e3a636e6 100644 (file)
@@ -224,6 +224,7 @@ spwdmodule_exec(PyObject *module)
 
 static PyModuleDef_Slot spwdmodule_slots[] = {
     {Py_mod_exec, spwdmodule_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 91538b4fb15cbd0be05783128e6dc526b1ada956..1cc319cc3410d8b0676d5a0bd22870a6164aa6f8 100644 (file)
@@ -100,6 +100,7 @@ symtable_init_constants(PyObject *m)
 
 static PyModuleDef_Slot symtable_slots[] = {
     {Py_mod_exec, symtable_init_constants},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index f45aa5227f1cbf92365401df9635f501f66700c7..6db8de9c491dd91538fefa38c375f804a0df6c13 100644 (file)
@@ -406,6 +406,7 @@ syslog_exec(PyObject *module)
 
 static PyModuleDef_Slot syslog_slots[] = {
     {Py_mod_exec, syslog_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index fcc8f04267987091d1c9ee80d5e025c4166ce837..169a36fc6477d81b865b462fc8f4763112cd9476 100644 (file)
@@ -1253,6 +1253,7 @@ termios_exec(PyObject *mod)
 
 static PyModuleDef_Slot termios_slots[] = {
     {Py_mod_exec, termios_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index c50e689bb6986cae7512914ea8f3c21a72f3c778..3607855dbd8f27c5a43ee6961a26677c02ff9df5 100644 (file)
@@ -2107,6 +2107,7 @@ time_module_free(void *module)
 
 static struct PyModuleDef_Slot time_slots[] = {
     {Py_mod_exec, time_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index c108f14871f94639e716b7e67c6a0ac69061f360..41dcd5f8f883f2ce9809988234340542b991f6bc 100644 (file)
@@ -1516,6 +1516,7 @@ unicodedata_exec(PyObject *module)
 
 static PyModuleDef_Slot unicodedata_slots[] = {
     {Py_mod_exec, unicodedata_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 5f5297ba6337af92c82c63315074530a01a1f48e..3935c00fc26530a41671836b6905aa57f2d57bf6 100644 (file)
@@ -390,6 +390,7 @@ xx_modexec(PyObject *m)
 
 static PyModuleDef_Slot xx_slots[] = {
     {Py_mod_exec, xx_modexec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 361c7e76d77f5082e7f0209c09b3a14cb38fa1a3..1ff3ef1cb6f296e35981997e9d9d9870d460d7f2 100644 (file)
@@ -293,6 +293,7 @@ xx_modexec(PyObject *m)
 
 static PyModuleDef_Slot xx_slots[] = {
     {Py_mod_exec, xx_modexec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index a676fdb4ec773a93bca418a8e287a39c0cf71c1b..1e4e0ea3743ce3e1d3e9dab405208e2b7aaf28ed 100644 (file)
@@ -383,6 +383,7 @@ xx_exec(PyObject *m)
 
 static struct PyModuleDef_Slot xx_slots[] = {
     {Py_mod_exec, xx_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL},
 };
 
index 8512baf7cd0a2d481df3f5c9b9e80b1cd218a845..744ba7bf5d28b60100623907c7b5d9bcdae90a42 100644 (file)
@@ -286,6 +286,7 @@ xxsubtype_exec(PyObject* m)
 
 static struct PyModuleDef_Slot xxsubtype_slots[] = {
     {Py_mod_exec, xxsubtype_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL},
 };
 
index e2f7dbaca87a9f7ab9231006b885f2ba3ad34fc1..b67844a67c315c4f9b99ceb3f6786f189689cfba 100644 (file)
@@ -2109,6 +2109,7 @@ zlib_exec(PyObject *mod)
 
 static PyModuleDef_Slot zlib_slots[] = {
     {Py_mod_exec, zlib_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 63f4226dd9e94a1b016ac5bbdb874a7f880303e4..c100d018d3f0df8eaf152f10e00972cf74eba023 100644 (file)
@@ -250,6 +250,7 @@ PyModule_FromDefAndSpec2(PyModuleDef* def, PyObject *spec, int module_api_versio
     int has_execution_slots = 0;
     const char *name;
     int ret;
+    PyInterpreterState *interp = _PyInterpreterState_GET();
 
     PyModuleDef_Init(def);
 
@@ -316,13 +317,13 @@ PyModule_FromDefAndSpec2(PyModuleDef* def, PyObject *spec, int module_api_versio
         multiple_interpreters = Py_MOD_MULTIPLE_INTERPRETERS_SUPPORTED;
     }
     if (multiple_interpreters == Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED) {
-        PyInterpreterState *interp = _PyInterpreterState_GET();
         if (!_Py_IsMainInterpreter(interp)
             && _PyImport_CheckSubinterpIncompatibleExtensionAllowed(name) < 0)
         {
             goto error;
         }
     }
+    // XXX Do a similar check once we have PyInterpreterState.ceval.own_gil.
 
     if (create) {
         m = create(spec, def);
index 6ae68cc20f7dee1e40794a26b84c2839fb992318..1585a582f00aad0517ad5b48dcf30873bb7f51ff 100644 (file)
@@ -15192,12 +15192,18 @@ static PyMethodDef _string_methods[] = {
     {NULL, NULL}
 };
 
+static PyModuleDef_Slot module_slots[] = {
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
+    {0, NULL}
+};
+
 static struct PyModuleDef _string_module = {
     PyModuleDef_HEAD_INIT,
     .m_name = "_string",
     .m_doc = PyDoc_STR("string helper module"),
     .m_size = 0,
     .m_methods = _string_methods,
+    .m_slots = module_slots,
 };
 
 PyMODINIT_FUNC
index f14a2d45b1be26ee6291580a39a852afcef84296..3221b985d01ba0c2ffaa9f32d19a7fd70115c155 100644 (file)
@@ -31,6 +31,7 @@ static int execfunc(PyObject *m)
 
 PyModuleDef_Slot testconsole_slots[] = {
     {Py_mod_exec, execfunc},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL},
 };
 
index 090254befc934d2af9c1a8cd8585f18b916c52ce..53ef26b732f615fef01d7fe3dfeba1f05bf7d9d2 100644 (file)
@@ -661,6 +661,7 @@ exec_module(PyObject* m)
 
 static PyModuleDef_Slot msvcrt_slots[] = {
     {Py_mod_exec, exec_module},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 4884125c3609ade0b68b14bc1a8711ca6bac8893..e2d5322f458c2af662efbfc844067d3d9e514182 100644 (file)
@@ -2184,6 +2184,7 @@ exec_module(PyObject *m)
 
 static PyModuleDef_Slot winreg_slots[] = {
     {Py_mod_exec, exec_module},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 17ce2ef423b1f99e09ceb95301e58645ed85fa1e..68a917810f884debe2833a7cdf2393da2f93e901 100644 (file)
@@ -235,6 +235,7 @@ exec_module(PyObject *module)
 
 static PyModuleDef_Slot sound_slots[] = {
     {Py_mod_exec, exec_module},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index b44e303ac2594b0837399d7f8c574ad686bf1e9f..5d5a05a70ca7ec1ccc3a8960aa9f333e0d40e708 100755 (executable)
@@ -1206,6 +1206,7 @@ class ASTModuleVisitor(PickleVisitor):
         self.emit("""
 static PyModuleDef_Slot astmodule_slots[] = {
     {Py_mod_exec, astmodule_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 6c878474afb19296fa9ed3598f9dc00389a28337..81ab71c0fc3b2957b31addd8127e7b84d42bb968 100644 (file)
@@ -12193,6 +12193,7 @@ astmodule_exec(PyObject *m)
 
 static PyModuleDef_Slot astmodule_slots[] = {
     {Py_mod_exec, astmodule_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 416dc5971bca3db8c768c04fa975e9db9c7c0579..3394a5108cb5355c170a66dd78208e72d664f61c 100644 (file)
@@ -151,6 +151,7 @@ static PyMethodDef tokenize_methods[] = {
 
 static PyModuleDef_Slot tokenizemodule_slots[] = {
     {Py_mod_exec, tokenizemodule_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index d510381c365b666afbad941f138f31788e2633e6..5644db9a3770cb0f8149df67233829112b513c53 100644 (file)
@@ -1449,6 +1449,7 @@ warnings_module_exec(PyObject *module)
 
 static PyModuleDef_Slot warnings_slots[] = {
     {Py_mod_exec, warnings_module_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 0bf107b28d3990a17259891ecc5fa51abd6c37e4..9e1857d5f3e4e6c84f8b3096cddca3aefdf82e15 100644 (file)
@@ -3840,6 +3840,7 @@ imp_module_exec(PyObject *module)
 
 static PyModuleDef_Slot imp_slots[] = {
     {Py_mod_exec, imp_module_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };
 
index 2966139cec9ae99f6ce5230cde5be63a55b866b5..208996b05fc484f38a8e25ef85147b8a1a81b1dd 100644 (file)
@@ -1870,6 +1870,7 @@ marshal_module_exec(PyObject *mod)
 
 static PyModuleDef_Slot marshalmodule_slots[] = {
     {Py_mod_exec, marshal_module_exec},
+    {Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
     {0, NULL}
 };