Author vstinner
Recipients vstinner
Date 2018-11-01.12:46:48
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <>
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:


The change is backward compatible: #include <Python.h> will still provide exactly the same API.
Date User Action Args
2018-11-01 12:46:49vstinnersetrecipients: + vstinner
2018-11-01 12:46:49vstinnersetmessageid: <>
2018-11-01 12:46:49vstinnerlinkissue35134 messages
2018-11-01 12:46:48vstinnercreate