Skip to content

Commit a9c6e06

Browse files
pythongh-99113: Add Py_MOD_PER_INTERPRETER_GIL_SUPPORTED (pythongh-104205)
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 pythongh-104206 (once PyInterpreterState.ceval.own_gil is added in pythongh-104204).
1 parent 1c420e1 commit a9c6e06

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

99 files changed

+144
-4
lines changed

Include/moduleobject.h

+1
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ struct PyModuleDef_Slot {
8787
/* for Py_mod_multiple_interpreters: */
8888
#define Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED ((void *)0)
8989
#define Py_MOD_MULTIPLE_INTERPRETERS_SUPPORTED ((void *)1)
90+
#define Py_MOD_PER_INTERPRETER_GIL_SUPPORTED ((void *)2)
9091

9192
#endif /* New in 3.5 */
9293

Modules/_abc.c

+1
Original file line numberDiff line numberDiff line change
@@ -944,6 +944,7 @@ _abcmodule_free(void *module)
944944

945945
static PyModuleDef_Slot _abcmodule_slots[] = {
946946
{Py_mod_exec, _abcmodule_exec},
947+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
947948
{0, NULL}
948949
};
949950

Modules/_asynciomodule.c

+1
Original file line numberDiff line numberDiff line change
@@ -3803,6 +3803,7 @@ module_exec(PyObject *mod)
38033803

38043804
static struct PyModuleDef_Slot module_slots[] = {
38053805
{Py_mod_exec, module_exec},
3806+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
38063807
{0, NULL},
38073808
};
38083809

Modules/_bisectmodule.c

+1
Original file line numberDiff line numberDiff line change
@@ -457,6 +457,7 @@ bisect_modexec(PyObject *m)
457457

458458
static PyModuleDef_Slot bisect_slots[] = {
459459
{Py_mod_exec, bisect_modexec},
460+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
460461
{0, NULL}
461462
};
462463

Modules/_blake2/blake2module.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ blake2_exec(PyObject *m)
127127

128128
static PyModuleDef_Slot _blake2_slots[] = {
129129
{Py_mod_exec, blake2_exec},
130+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
130131
{0, NULL}
131132
};
132133

@@ -146,4 +147,4 @@ PyMODINIT_FUNC
146147
PyInit__blake2(void)
147148
{
148149
return PyModuleDef_Init(&blake2_module);
149-
}
150+
}

Modules/_bz2module.c

+1
Original file line numberDiff line numberDiff line change
@@ -799,6 +799,7 @@ _bz2_free(void *module)
799799

800800
static struct PyModuleDef_Slot _bz2_slots[] = {
801801
{Py_mod_exec, _bz2_exec},
802+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
802803
{0, NULL}
803804
};
804805

Modules/_codecsmodule.c

+1
Original file line numberDiff line numberDiff line change
@@ -1049,6 +1049,7 @@ static PyMethodDef _codecs_functions[] = {
10491049
};
10501050

10511051
static PyModuleDef_Slot _codecs_slots[] = {
1052+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
10521053
{0, NULL}
10531054
};
10541055

Modules/_collectionsmodule.c

+1
Original file line numberDiff line numberDiff line change
@@ -2571,6 +2571,7 @@ collections_exec(PyObject *module) {
25712571

25722572
static struct PyModuleDef_Slot collections_slots[] = {
25732573
{Py_mod_exec, collections_exec},
2574+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
25742575
{0, NULL}
25752576
};
25762577

Modules/_contextvarsmodule.c

+1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ _contextvars_exec(PyObject *m)
4444

4545
static struct PyModuleDef_Slot _contextvars_slots[] = {
4646
{Py_mod_exec, _contextvars_exec},
47+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
4748
{0, NULL}
4849
};
4950

Modules/_cryptmodule.c

+1
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ static PyMethodDef crypt_methods[] = {
5858
};
5959

6060
static PyModuleDef_Slot _crypt_slots[] = {
61+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
6162
{0, NULL}
6263
};
6364

Modules/_csv.c

+1
Original file line numberDiff line numberDiff line change
@@ -1798,6 +1798,7 @@ csv_exec(PyObject *module) {
17981798

17991799
static PyModuleDef_Slot csv_slots[] = {
18001800
{Py_mod_exec, csv_exec},
1801+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
18011802
{0, NULL}
18021803
};
18031804

Modules/_ctypes/_ctypes_test.c

+1
Original file line numberDiff line numberDiff line change
@@ -1054,6 +1054,7 @@ _testfunc_pylist_append(PyObject *list, PyObject *item)
10541054
}
10551055

10561056
static struct PyModuleDef_Slot _ctypes_test_slots[] = {
1057+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
10571058
{0, NULL}
10581059
};
10591060

Modules/_curses_panel.c

+3
Original file line numberDiff line numberDiff line change
@@ -690,6 +690,9 @@ _curses_panel_exec(PyObject *mod)
690690

691691
static PyModuleDef_Slot _curses_slots[] = {
692692
{Py_mod_exec, _curses_panel_exec},
693+
// XXX gh-103092: fix isolation.
694+
{Py_mod_multiple_interpreters, Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},
695+
//{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
693696
{0, NULL}
694697
};
695698

Modules/_dbmmodule.c

+1
Original file line numberDiff line numberDiff line change
@@ -583,6 +583,7 @@ _dbm_module_free(void *module)
583583

584584
static PyModuleDef_Slot _dbmmodule_slots[] = {
585585
{Py_mod_exec, _dbm_exec},
586+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
586587
{0, NULL}
587588
};
588589

Modules/_elementtree.c

+3
Original file line numberDiff line numberDiff line change
@@ -4419,6 +4419,9 @@ module_exec(PyObject *m)
44194419

44204420
static struct PyModuleDef_Slot elementtree_slots[] = {
44214421
{Py_mod_exec, module_exec},
4422+
// XXX gh-103092: fix isolation.
4423+
{Py_mod_multiple_interpreters, Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},
4424+
//{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
44224425
{0, NULL},
44234426
};
44244427

Modules/_functoolsmodule.c

+1
Original file line numberDiff line numberDiff line change
@@ -1520,6 +1520,7 @@ _functools_free(void *module)
15201520

15211521
static struct PyModuleDef_Slot _functools_slots[] = {
15221522
{Py_mod_exec, _functools_exec},
1523+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
15231524
{0, NULL}
15241525
};
15251526

Modules/_gdbmmodule.c

+1
Original file line numberDiff line numberDiff line change
@@ -793,6 +793,7 @@ _gdbm_module_free(void *module)
793793

794794
static PyModuleDef_Slot _gdbm_module_slots[] = {
795795
{Py_mod_exec, _gdbm_exec},
796+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
796797
{0, NULL}
797798
};
798799

Modules/_hashopenssl.c

+1
Original file line numberDiff line numberDiff line change
@@ -2260,6 +2260,7 @@ static PyModuleDef_Slot hashlib_slots[] = {
22602260
{Py_mod_exec, hashlib_md_meth_names},
22612261
{Py_mod_exec, hashlib_init_constructors},
22622262
{Py_mod_exec, hashlib_exception},
2263+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
22632264
{0, NULL}
22642265
};
22652266

Modules/_heapqmodule.c

+1
Original file line numberDiff line numberDiff line change
@@ -682,6 +682,7 @@ heapq_exec(PyObject *m)
682682

683683
static struct PyModuleDef_Slot heapq_slots[] = {
684684
{Py_mod_exec, heapq_exec},
685+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
685686
{0, NULL}
686687
};
687688

Modules/_json.c

+1
Original file line numberDiff line numberDiff line change
@@ -1801,6 +1801,7 @@ _json_exec(PyObject *module)
18011801

18021802
static PyModuleDef_Slot _json_slots[] = {
18031803
{Py_mod_exec, _json_exec},
1804+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
18041805
{0, NULL}
18051806
};
18061807

Modules/_localemodule.c

+1
Original file line numberDiff line numberDiff line change
@@ -874,6 +874,7 @@ _locale_exec(PyObject *module)
874874

875875
static struct PyModuleDef_Slot _locale_slots[] = {
876876
{Py_mod_exec, _locale_exec},
877+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
877878
{0, NULL}
878879
};
879880

Modules/_lsprof.c

+3
Original file line numberDiff line numberDiff line change
@@ -1001,6 +1001,9 @@ _lsprof_exec(PyObject *module)
10011001

10021002
static PyModuleDef_Slot _lsprofslots[] = {
10031003
{Py_mod_exec, _lsprof_exec},
1004+
// XXX gh-103092: fix isolation.
1005+
{Py_mod_multiple_interpreters, Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},
1006+
//{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
10041007
{0, NULL}
10051008
};
10061009

Modules/_lzmamodule.c

+1
Original file line numberDiff line numberDiff line change
@@ -1611,6 +1611,7 @@ static PyMethodDef lzma_methods[] = {
16111611

16121612
static PyModuleDef_Slot lzma_slots[] = {
16131613
{Py_mod_exec, lzma_exec},
1614+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
16141615
{0, NULL}
16151616
};
16161617

Modules/_multiprocessing/multiprocessing.c

+1
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,7 @@ multiprocessing_exec(PyObject *module)
276276

277277
static PyModuleDef_Slot multiprocessing_slots[] = {
278278
{Py_mod_exec, multiprocessing_exec},
279+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
279280
{0, NULL}
280281
};
281282

Modules/_multiprocessing/posixshmem.c

+7
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,19 @@ static PyMethodDef module_methods[ ] = {
110110
};
111111

112112

113+
static PyModuleDef_Slot module_slots[] = {
114+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
115+
{0, NULL}
116+
};
117+
118+
113119
static struct PyModuleDef _posixshmemmodule = {
114120
PyModuleDef_HEAD_INIT,
115121
.m_name = "_posixshmem",
116122
.m_doc = "POSIX shared memory module",
117123
.m_size = 0,
118124
.m_methods = module_methods,
125+
.m_slots = module_slots,
119126
};
120127

121128
/* Module init function */

Modules/_opcode.c

+7-1
Original file line numberDiff line numberDiff line change
@@ -94,12 +94,18 @@ opcode_functions[] = {
9494
{NULL, NULL, 0, NULL}
9595
};
9696

97+
static PyModuleDef_Slot module_slots[] = {
98+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
99+
{0, NULL}
100+
};
101+
97102
static struct PyModuleDef opcodemodule = {
98103
PyModuleDef_HEAD_INIT,
99104
.m_name = "_opcode",
100105
.m_doc = "Opcode support module.",
101106
.m_size = 0,
102-
.m_methods = opcode_functions
107+
.m_methods = opcode_functions,
108+
.m_slots = module_slots,
103109
};
104110

105111
PyMODINIT_FUNC

Modules/_operator.c

+1
Original file line numberDiff line numberDiff line change
@@ -1828,6 +1828,7 @@ operator_exec(PyObject *module)
18281828

18291829
static struct PyModuleDef_Slot operator_slots[] = {
18301830
{Py_mod_exec, operator_exec},
1831+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
18311832
{0, NULL}
18321833
};
18331834

Modules/_pickle.c

+1
Original file line numberDiff line numberDiff line change
@@ -7912,6 +7912,7 @@ _pickle_exec(PyObject *m)
79127912

79137913
static PyModuleDef_Slot pickle_slots[] = {
79147914
{Py_mod_exec, _pickle_exec},
7915+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
79157916
{0, NULL},
79167917
};
79177918

Modules/_posixsubprocess.c

+1
Original file line numberDiff line numberDiff line change
@@ -1140,6 +1140,7 @@ static PyMethodDef module_methods[] = {
11401140
};
11411141

11421142
static PyModuleDef_Slot _posixsubprocess_slots[] = {
1143+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
11431144
{0, NULL}
11441145
};
11451146

Modules/_queuemodule.c

+1
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,7 @@ queuemodule_exec(PyObject *module)
431431

432432
static PyModuleDef_Slot queuemodule_slots[] = {
433433
{Py_mod_exec, queuemodule_exec},
434+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
434435
{0, NULL}
435436
};
436437

Modules/_randommodule.c

+1
Original file line numberDiff line numberDiff line change
@@ -624,6 +624,7 @@ _random_exec(PyObject *module)
624624

625625
static PyModuleDef_Slot _random_slots[] = {
626626
{Py_mod_exec, _random_exec},
627+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
627628
{0, NULL}
628629
};
629630

Modules/_scproxy.c

+1
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,7 @@ static PyMethodDef mod_methods[] = {
232232
};
233233

234234
static PyModuleDef_Slot _scproxy_slots[] = {
235+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
235236
{0, NULL}
236237
};
237238

Modules/_sha3/sha3module.c

+1
Original file line numberDiff line numberDiff line change
@@ -641,6 +641,7 @@ _sha3_exec(PyObject *m)
641641

642642
static PyModuleDef_Slot _sha3_slots[] = {
643643
{Py_mod_exec, _sha3_exec},
644+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
644645
{0, NULL}
645646
};
646647

Modules/_sqlite/module.c

+1
Original file line numberDiff line numberDiff line change
@@ -785,6 +785,7 @@ module_exec(PyObject *module)
785785

786786
static struct PyModuleDef_Slot module_slots[] = {
787787
{Py_mod_exec, module_exec},
788+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
788789
{0, NULL},
789790
};
790791

Modules/_sre/sre.c

+1
Original file line numberDiff line numberDiff line change
@@ -3221,6 +3221,7 @@ sre_exec(PyObject *m)
32213221

32223222
static PyModuleDef_Slot sre_slots[] = {
32233223
{Py_mod_exec, sre_exec},
3224+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
32243225
{0, NULL},
32253226
};
32263227

Modules/_ssl.c

+3
Original file line numberDiff line numberDiff line change
@@ -6161,6 +6161,9 @@ static PyModuleDef_Slot sslmodule_slots[] = {
61616161
{Py_mod_exec, sslmodule_init_constants},
61626162
{Py_mod_exec, sslmodule_init_versioninfo},
61636163
{Py_mod_exec, sslmodule_init_strings},
6164+
// XXX gh-103092: fix isolation.
6165+
{Py_mod_multiple_interpreters, Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},
6166+
//{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
61646167
{0, NULL}
61656168
};
61666169

Modules/_stat.c

+1
Original file line numberDiff line numberDiff line change
@@ -612,6 +612,7 @@ stat_exec(PyObject *module)
612612

613613
static PyModuleDef_Slot stat_slots[] = {
614614
{Py_mod_exec, stat_exec},
615+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
615616
{0, NULL}
616617
};
617618

Modules/_statisticsmodule.c

+1
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ PyDoc_STRVAR(statistics_doc,
129129
"Accelerators for the statistics module.\n");
130130

131131
static struct PyModuleDef_Slot _statisticsmodule_slots[] = {
132+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
132133
{0, NULL}
133134
};
134135

Modules/_struct.c

+1
Original file line numberDiff line numberDiff line change
@@ -2572,6 +2572,7 @@ _structmodule_exec(PyObject *m)
25722572

25732573
static PyModuleDef_Slot _structmodule_slots[] = {
25742574
{Py_mod_exec, _structmodule_exec},
2575+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
25752576
{0, NULL}
25762577
};
25772578

Modules/_testinternalcapi.c

+1
Original file line numberDiff line numberDiff line change
@@ -789,6 +789,7 @@ module_exec(PyObject *module)
789789

790790
static struct PyModuleDef_Slot module_slots[] = {
791791
{Py_mod_exec, module_exec},
792+
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
792793
{0, NULL},
793794
};
794795

0 commit comments

Comments
 (0)