Make PyObject an opaque structure is also a first step towards the more ambitious project "HPy" project which is fully opaque: https://github.com/pyhandle/hpy This API is written from scratch and currently implemented on top on the existing C API. The following article is a nice introduction to the overall idea: https://morepypy.blogspot.com/2019/12/hpy-kick-off-sprint-report.html From my point of view, the long term goal would be to get better performance on PyPy and having a single API for C extension which would be efficient on all Python implementations (not only CPython). Currently, the C API is not only a performance issue to run C extensions on PyPy. It's also an issue in CPython. Because the C API leaks too many implementation details, we cannot experiment optimizations. See also: https://pythoncapi.readthedocs.io/rationale.html |