[Python-checkins] bpo-43868: Remove PyOS_ReadlineFunctionPointer from the stable ABI list (GH-25442)

encukou webhook-mailer at python.org
Fri Apr 23 08:23:42 EDT 2021


https://github.com/python/cpython/commit/91b69b77cf5f78de6d35dea23098df34b6fd9e53
commit: 91b69b77cf5f78de6d35dea23098df34b6fd9e53
branch: master
author: Petr Viktorin <encukou at gmail.com>
committer: encukou <encukou at gmail.com>
date: 2021年04月23日T14:23:38+02:00
summary:
bpo-43868: Remove PyOS_ReadlineFunctionPointer from the stable ABI list (GH-25442)
The inclusion of PyOS_ReadlineFunctionPointer in python3dll.c was a mistake.
According to PEP 384:
> functions expecting FILE* are not part of the ABI, to avoid depending
> on a specific version of the Microsoft C runtime DLL on Windows.

https://bugs.python.org/issue43868
files:
A Misc/NEWS.d/next/C API/2021-04-16-18-15-56.bpo-43868.twQ7KH.rst
M Doc/whatsnew/3.10.rst
M Include/cpython/pythonrun.h
M Include/pythonrun.h
M PC/python3dll.c
diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst
index 1c2919a06c4d32..67e03f2f5efb0d 100644
--- a/Doc/whatsnew/3.10.rst
+++ b/Doc/whatsnew/3.10.rst
@@ -1740,6 +1740,12 @@ Removed
 Use Python :mod:`symtable` module instead.
 (Contributed by Victor Stinner in :issue:`43244`.)
 
+* Remove :c:func:`PyOS_ReadlineFunctionPointer` from the limited C API headers
+ and from ``python3.dll``, the library that provides the stable ABI on
+ Windows. Since the function takes a ``FILE*`` argument, its ABI stability
+ cannot be guaranteed.
+ (Contributed by Petr Viktorin in :issue:`43868`.)
+
 * Remove ``ast.h``, ``asdl.h``, and ``Python-ast.h`` header files.
 These functions were undocumented and excluded from the limited C API.
 Most names defined by these header files were not prefixed by ``Py`` and so
diff --git a/Include/cpython/pythonrun.h b/Include/cpython/pythonrun.h
index ffca0e457d58b5..2e72d0820d34f5 100644
--- a/Include/cpython/pythonrun.h
+++ b/Include/cpython/pythonrun.h
@@ -118,3 +118,4 @@ PyAPI_FUNC(PyObject *) PyRun_FileFlags(FILE *fp, const char *p, int s, PyObject
 /* Stuff with no proper home (yet) */
 PyAPI_FUNC(char *) PyOS_Readline(FILE *, FILE *, const char *);
 PyAPI_DATA(PyThreadState*) _PyOS_ReadlineTState;
+PyAPI_DATA(char) *(*PyOS_ReadlineFunctionPointer)(FILE *, FILE *, const char *);
diff --git a/Include/pythonrun.h b/Include/pythonrun.h
index b87bc738902420..b0a2fc3002d37d 100644
--- a/Include/pythonrun.h
+++ b/Include/pythonrun.h
@@ -16,7 +16,6 @@ PyAPI_FUNC(void) PyErr_Display(PyObject *, PyObject *, PyObject *);
 
 /* Stuff with no proper home (yet) */
 PyAPI_DATA(int) (*PyOS_InputHook)(void);
-PyAPI_DATA(char) *(*PyOS_ReadlineFunctionPointer)(FILE *, FILE *, const char *);
 
 /* Stack size, in "pointers" (so we get extra safety margins
 on 64-bit platforms). On a 32-bit platform, this translates
diff --git a/Misc/NEWS.d/next/C API/2021-04-16-18-15-56.bpo-43868.twQ7KH.rst b/Misc/NEWS.d/next/C API/2021-04-16-18-15-56.bpo-43868.twQ7KH.rst
new file mode 100644
index 00000000000000..50888b8b37ab84
--- /dev/null
+++ b/Misc/NEWS.d/next/C API/2021-04-16-18-15-56.bpo-43868.twQ7KH.rst	
@@ -0,0 +1,3 @@
+:c:func:`PyOS_ReadlineFunctionPointer` is no longer exported by limited C API
+headers and by ``python3.dll`` on Windows. Like any function that takes
+``FILE*``, it is not part of the stable ABI.
diff --git a/PC/python3dll.c b/PC/python3dll.c
index 195c6531fdf887..e5a21ed7c022e7 100644
--- a/PC/python3dll.c
+++ b/PC/python3dll.c
@@ -808,7 +808,6 @@ EXPORT_DATA(PyODictIter_Type)
 EXPORT_DATA(PyODictKeys_Type)
 EXPORT_DATA(PyODictValues_Type)
 EXPORT_DATA(PyOS_InputHook)
-EXPORT_DATA(PyOS_ReadlineFunctionPointer)
 EXPORT_DATA(PyProperty_Type)
 EXPORT_DATA(PyRange_Type)
 EXPORT_DATA(PyRangeIter_Type)


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /