New submission from STINNER Victor <vstin...@redhat.com>:
The PEP 384 "Defining a Stable ABI" introduced Py_LIMITED_API define to exclude functions from the Python C API. The problem is when a new API is introduced, it has to explicitly be excluded using "#ifndef Py_LIMITED_API". If the author forgets it, the function is added to be stable API by mistake. I propose to move the API which should be excluded from the stable ABI to a new subdirectory: Include/pycapi/. To not break the backward compatibility, I propose to automatically include new header files from existing header files. For example, Include/pycapi/pyapi_objimpl.h would be automatically included by Include/pycapi/pycapi_objimpl.h. New header files would have a "pycapi_" prefix to avoid conflict Include/ header files, if Include/pycapi/ directory is in the header search paths. This change is a follow-up of bpo-35081 which moved Py_BUILD_CORE code to Include/internal/. It is also part of a larger project to cleanup the C API, see: * https://pythoncapi.readthedocs.io/split_include.html * https://pythoncapi.readthedocs.io/ The change is backward compatible: #include <Python.h> will still provide exactly the same API. ---------- components: Interpreter Core messages: 329060 nosy: vstinner priority: normal severity: normal status: open title: Move Py_LIMITED_API to Include/pycapi/ versions: Python 3.8 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue35134> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com