Skip to content

Commit

Permalink
pythongh-110968: Py_MOD_PER_INTERPRETER_GIL_SUPPORTED new in 3.13. (p…
Browse files Browse the repository at this point in the history
…ython#110969)

* Only add Py_MOD_PER_INTERPRETER_GIL_SUPPORTED to limited C API
  version 3.13.
* errno, xxlimited and _ctypes_test extensions now need the limited C
  API version 3.13 to get Py_MOD_PER_INTERPRETER_GIL_SUPPORTED.  They
  now include standard header files explicitly: <errno.h>, <string.h>
  and <stdio.h>.
* xxlimited_35: Remove Py_mod_multiple_interpreters slot,
  incompatible with limited C API version 3.5.
  • Loading branch information
vstinner authored and Glyphack committed Jan 27, 2024
1 parent 21ec40b commit 9427803
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 7 deletions.
6 changes: 4 additions & 2 deletions Include/moduleobject.h
Original file line number Diff line number Diff line change
Expand Up @@ -79,12 +79,14 @@ struct PyModuleDef_Slot {
#define _Py_mod_LAST_SLOT 3
#endif

#endif /* New in 3.5 */

/* for Py_mod_multiple_interpreters: */
#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x030d0000
#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 */
#endif

struct PyModuleDef {
PyModuleDef_Base m_base;
Expand Down
5 changes: 4 additions & 1 deletion Modules/_ctypes/_ctypes_test.c
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
#define Py_LIMITED_API 0x03060000
// Need limited C API version 3.13 for Py_MOD_PER_INTERPRETER_GIL_SUPPORTED
#define Py_LIMITED_API 0x030d0000

#include <Python.h>

#include <stdio.h> // printf()
#include <stdlib.h> // qsort()
#include <string.h> // memset()
#ifdef MS_WIN32
# include <windows.h>
#endif
Expand Down
5 changes: 3 additions & 2 deletions Modules/errnomodule.c
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
/* Errno module */

// Need PyModuleDef_Slot added to limited C API version 3.5
#define Py_LIMITED_API 0x03050000
// Need limited C API version 3.13 for Py_MOD_PER_INTERPRETER_GIL_SUPPORTED
#define Py_LIMITED_API 0x030d0000

#include "Python.h"
#include <errno.h> // EPIPE

/* Windows socket errors (WSA*) */
#ifdef MS_WINDOWS
Expand Down
3 changes: 2 additions & 1 deletion Modules/xxlimited.c
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,8 @@
pass
*/

#define Py_LIMITED_API 0x030b0000
// Need limited C API version 3.13 for Py_MOD_PER_INTERPRETER_GIL_SUPPORTED
#define Py_LIMITED_API 0x030d0000

#include "Python.h"
#include <string.h>
Expand Down
1 change: 0 additions & 1 deletion Modules/xxlimited_35.c
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,6 @@ 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}
};

Expand Down

0 comments on commit 9427803

Please sign in to comment.