gh-110968: Py_MOD_PER_INTERPRETER_GIL_SUPPORTED new in 3.13. (#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.
This commit is contained in:
Victor Stinner 2023-10-17 12:27:16 +02:00 committed by GitHub
parent 9a9fba825f
commit db15fc23c6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 13 additions and 7 deletions

View file

@ -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;

View file

@ -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

View file

@ -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

View file

@ -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>

View file

@ -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}
};