[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