mirror of
https://github.com/python/cpython
synced 2024-09-05 00:05:39 +00:00
bpo-45434: Only exclude <stdlib.h> in Python 3.11 limited C API (GH-29027)
The Python 3.11 limited C API no longer includes stdlib.h, stdio.h, string.h and errno.h. * Exclude Py_MEMCPY() from Python 3.11 limited C API. * xxlimited C extension is now built with Python 3.11 limited C API.
This commit is contained in:
parent
0a4c82ddd3
commit
52af0756b2
|
@ -564,18 +564,10 @@ Porting to Python 3.11
|
|||
|
||||
(Contributed by Victor Stinner in :issue:`39573`.)
|
||||
|
||||
* The ``<Python.h>`` header file no longer includes ``<stdlib.h>``. C
|
||||
extensions using ``<stdlib.h>`` must now include it explicitly.
|
||||
The system ``<stdlib.h>`` header provides functions like:
|
||||
``malloc()``/``free()``, ``getenv()``, ``strtol()``, ``abs()``, ``strtol()``,
|
||||
``exit()`` and ``abort()``.
|
||||
(Contributed by Victor Stinner in :issue:`45434`.)
|
||||
|
||||
* The ``<Python.h>`` header file no longer includes ``<stdio.h>`` if the
|
||||
``Py_LIMITED_API`` macro is defined. Functions expecting ``FILE*`` are
|
||||
excluded from the limited C API (:pep:`384`). C extensions using
|
||||
``<stdio.h>`` must now include it explicitly. The system ``<stdio.h>``
|
||||
header provides functions like ``printf()`` and ``fopen()``.
|
||||
* ``<Python.h>`` no longer includes the header files ``<stdlib.h>``,
|
||||
``<stdio.h>``, ``<errno.h>`` and ``<string.h>`` when the ``Py_LIMITED_API``
|
||||
macro is set to ``0x030b0000`` (Python 3.11) or higher. C extensions should
|
||||
explicitly include the header files after ``#include <Python.h>``.
|
||||
(Contributed by Victor Stinner in :issue:`45434`.)
|
||||
|
||||
* The non-limited API files ``cellobject.h``, ``classobject.h``, ``context.h``,
|
||||
|
|
|
@ -16,12 +16,14 @@
|
|||
# define _SGI_MP_SOURCE
|
||||
#endif
|
||||
|
||||
#include <string.h> // memcpy()
|
||||
#ifndef Py_LIMITED_API
|
||||
// stdlib.h, stdio.h, errno.h and string.h headers are not used by Python
|
||||
// headers, but kept for backward compatibility. They are excluded from the
|
||||
// limited C API of Python 3.11.
|
||||
#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 < 0x030b0000
|
||||
# include <stdlib.h>
|
||||
# include <stdio.h> // FILE*
|
||||
#endif
|
||||
#ifdef HAVE_ERRNO_H
|
||||
# include <errno.h> // errno
|
||||
# include <string.h> // memcpy()
|
||||
#endif
|
||||
#ifndef MS_WINDOWS
|
||||
# include <unistd.h>
|
||||
|
|
|
@ -201,9 +201,10 @@ typedef Py_ssize_t Py_ssize_clean_t;
|
|||
# define Py_LOCAL_INLINE(type) static inline type
|
||||
#endif
|
||||
|
||||
/* Py_MEMCPY is kept for backwards compatibility,
|
||||
* see https://bugs.python.org/issue28126 */
|
||||
#define Py_MEMCPY memcpy
|
||||
// bpo-28126: Py_MEMCPY is kept for backwards compatibility,
|
||||
#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 < 0x030b0000
|
||||
# define Py_MEMCPY memcpy
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_IEEEFP_H
|
||||
#include <ieeefp.h> /* needed for 'finite' declaration on some platforms */
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
The ``<Python.h>`` header file no longer includes ``<stdlib.h>``. C
|
||||
extensions using ``<stdlib.h>`` must now include it explicitly.
|
||||
The system ``<stdlib.h>`` header provides functions like:
|
||||
``malloc()``/``free()``, ``getenv()``, ``strtol()``, ``abs()``, ``strtol()``,
|
||||
``exit()`` and ``abort()``.
|
||||
``<Python.h>`` no longer includes the header files ``<stdlib.h>``,
|
||||
``<stdio.h>``, ``<errno.h>`` and ``<string.h>`` when the ``Py_LIMITED_API``
|
||||
macro is set to ``0x030b0000`` (Python 3.11) or higher. C extensions should
|
||||
explicitly include the header files after ``#include <Python.h>``.
|
||||
Patch by Victor Stinner.
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
The ``<Python.h>`` header file no longer includes ``<stdio.h>`` if the
|
||||
``Py_LIMITED_API`` macro is defined. Functions expecting ``FILE*`` are excluded
|
||||
from the limited C API (:pep:`384`). C extensions using ``<stdio.h>`` must now
|
||||
include it explicitly.
|
||||
Patch by Victor Stinner.
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
/* Use this file as a template to start implementing a module that
|
||||
also declares object types. All occurrences of 'Xxo' should be changed
|
||||
to something reasonable for your objects. After that, all other
|
||||
|
@ -55,7 +54,7 @@
|
|||
pass
|
||||
*/
|
||||
|
||||
#define Py_LIMITED_API 0x030a0000
|
||||
#define Py_LIMITED_API 0x030b0000
|
||||
|
||||
#include "Python.h"
|
||||
|
||||
|
|
Loading…
Reference in a new issue