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

Reply via email to