[Python-checkins] bpo-45474: Exclude all of marshal.h if Py_LIMITED_API is defined (GH-29061)

miss-islington webhook-mailer at python.org
Wed Oct 20 05:32:18 EDT 2021


https://github.com/python/cpython/commit/98fa3b53e2aecc5ecec64a921bc9cf4f9d07ac75
commit: 98fa3b53e2aecc5ecec64a921bc9cf4f9d07ac75
branch: main
author: Petr Viktorin <encukou at gmail.com>
committer: miss-islington <31488909+miss-islington at users.noreply.github.com>
date: 2021-10-20T02:32:14-07:00
summary:

bpo-45474: Exclude all of marshal.h if Py_LIMITED_API is defined (GH-29061)



Also, reword the What's New messages: this doesn't change the limited API, it only brings the Py_LIMITED_API macro closer to the ideal of only allowing the limited API.

Automerge-Triggered-By: GH:encukou

files:
M Doc/whatsnew/3.11.rst
M Include/marshal.h
M Misc/NEWS.d/next/C API/2021-10-14-22-16-56.bpo-45474.1OkJQh.rst

diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst
index b583c2f31c4cc..13c1e72306653 100644
--- a/Doc/whatsnew/3.11.rst
+++ b/Doc/whatsnew/3.11.rst
@@ -627,14 +627,17 @@ Removed
   ``Py_IS_INFINITY()`` macro.
   (Contributed by Victor Stinner in :issue:`45440`.)
 
-* Remove two functions from the limited C API:
+* The following items are no longer available when :c:macro:`Py_LIMITED_API`
+  is defined:
 
   * :c:func:`PyMarshal_WriteLongToFile`
   * :c:func:`PyMarshal_WriteObjectToFile`
+  * :c:func:`PyMarshal_ReadObjectFromString`
+  * :c:func:`PyMarshal_WriteObjectToString`
+  * the ``Py_MARSHAL_VERSION`` macro
 
-  The :pep:`384` excludes functions expecting ``FILE*`` from the stable ABI.
+  These are not part of the :ref:`limited API <stable-abi-list>`.
 
-  Remove also the ``Py_MARSHAL_VERSION`` macro from the limited C API.
   (Contributed by Victor Stinner in :issue:`45474`.)
 
 * Exclude :c:func:`PyWeakref_GET_OBJECT` from the limited C API. It never
diff --git a/Include/marshal.h b/Include/marshal.h
index 36ef6a779ec2c..f8b0de80cfc38 100644
--- a/Include/marshal.h
+++ b/Include/marshal.h
@@ -3,6 +3,8 @@
 
 #ifndef Py_MARSHAL_H
 #define Py_MARSHAL_H
+#ifndef Py_LIMITED_API
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -11,7 +13,6 @@ PyAPI_FUNC(PyObject *) PyMarshal_ReadObjectFromString(const char *,
                                                       Py_ssize_t);
 PyAPI_FUNC(PyObject *) PyMarshal_WriteObjectToString(PyObject *, int);
 
-#ifndef Py_LIMITED_API
 #define Py_MARSHAL_VERSION 4
 
 PyAPI_FUNC(long) PyMarshal_ReadLongFromFile(FILE *);
@@ -21,9 +22,10 @@ PyAPI_FUNC(PyObject *) PyMarshal_ReadLastObjectFromFile(FILE *);
 
 PyAPI_FUNC(void) PyMarshal_WriteLongToFile(long, FILE *, int);
 PyAPI_FUNC(void) PyMarshal_WriteObjectToFile(PyObject *, FILE *, int);
-#endif
 
 #ifdef __cplusplus
 }
 #endif
+
+#endif /* Py_LIMITED_API */
 #endif /* !Py_MARSHAL_H */
diff --git a/Misc/NEWS.d/next/C API/2021-10-14-22-16-56.bpo-45474.1OkJQh.rst b/Misc/NEWS.d/next/C API/2021-10-14-22-16-56.bpo-45474.1OkJQh.rst
index 90bf498579c11..d41f1b72b8966 100644
--- a/Misc/NEWS.d/next/C API/2021-10-14-22-16-56.bpo-45474.1OkJQh.rst	
+++ b/Misc/NEWS.d/next/C API/2021-10-14-22-16-56.bpo-45474.1OkJQh.rst	
@@ -1,10 +1,11 @@
-Remove two functions from the limited C API:
+The following items are no longer available when ``Py_LIMITED_API`` is defined:
 
 * :c:func:`PyMarshal_WriteLongToFile`
 * :c:func:`PyMarshal_WriteObjectToFile`
+* :c:func:`PyMarshal_ReadObjectFromString`
+* :c:func:`PyMarshal_WriteObjectToString`
+* the ``Py_MARSHAL_VERSION`` macro
 
-The :pep:`384` excludes functions expecting ``FILE*`` from the stable ABI.
-
-Remove also the ``Py_MARSHAL_VERSION`` macro from the limited C API.
+These are not part of the :ref:`limited API <stable-abi-list>`.
 
 Patch by Victor Stinner.



More information about the Python-checkins mailing list