This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author vstinner
Recipients WildCard65, ZackerySpytz, corona10, hroncok, nascheme, ronaldoussoren, serhiy.storchaka, shihai1991, steve.dower, vstinner
Date 2020-12-04.21:51:45
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1607118705.57.0.905568299583.issue39573@roundup.psfhosted.org>
In-reply-to
Content
Status:

* Py_SET_REFCNT(), Py_SET_TYPE() and Py_SET_SIZE() functions added to Python 3.9.
* Python and Cython have been modified to use Py_TYPE(), Py_SET_REFCNT(), Py_IS_TYPE(), etc.
* pythoncapi_compat.h header file has been created to provide new functions to Python 3.6: https://github.com/pythoncapi/pythoncapi_compat
* Script has been created to upgrade C extensions to add support for Python 3.10 without losing support for old Python versions: https://github.com/pythoncapi/pythoncapi_compat
* PEP 620 "Hide implementation details from the C API" written
* Py_TYPE() and Py_SIZE() were converted to a static inline function to deny "Py_TYPE(obj) = type;" syntax, but this change has been reverted during Python 3.10 development cycle since it broke too many C extension modules. (msg381337)

TODO:

* Maybe add a new formatter for type names (msg361523)
* Avoid sizeof(PyObject) in PyType_FromSpec() (msg366473)

The purpose of this issue is only to fix the API part. Replacing static inline functions with opaque function calls (stable ABI) is not in the scope of this issue.
History
Date User Action Args
2020-12-04 21:51:45vstinnersetrecipients: + vstinner, nascheme, ronaldoussoren, serhiy.storchaka, steve.dower, hroncok, corona10, ZackerySpytz, WildCard65, shihai1991
2020-12-04 21:51:45vstinnersetmessageid: <1607118705.57.0.905568299583.issue39573@roundup.psfhosted.org>
2020-12-04 21:51:45vstinnerlinkissue39573 messages
2020-12-04 21:51:45vstinnercreate