Browse Source

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
pull/5162/merge
Petr Viktorin 5 years ago
committed by GitHub
parent
commit
91b69b77cf
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      Doc/whatsnew/3.10.rst
  2. 1
      Include/cpython/pythonrun.h
  3. 1
      Include/pythonrun.h
  4. 3
      Misc/NEWS.d/next/C API/2021-04-16-18-15-56.bpo-43868.twQ7KH.rst
  5. 1
      PC/python3dll.c

6
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

1
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 *);

1
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

3
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.

1
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)

Loading…
Cancel
Save