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 eitan.adler, methane, pitrou, serhiy.storchaka, vstinner, yselivanov
Date 2018-05-30.10:14:28
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1527675268.09.0.682650639539.issue33597@psf.upfronthosting.co.za>
In-reply-to
Content
I asked if this change breaks the stable ABI. Steve Dower replied:

"Looks like it breaks the 3.7 ABI, which is certainly not allowed at this time. But it’s not a limited API structure, so no problem for 3.8."

https://mail.python.org/pipermail/python-dev/2018-May/153745.html

I didn't understand the answer. It breaks the ABI but it doesn't break the API?

It seems like PyObject.ob_refcnt is part of the "Py_LIMITED_API" and so an extension module using the stable API/ABI can access directly the field with no function call. For example, Py_INCREF() modifies directly the field at the ABI level.

*But* PyGC_Head is a strange thing since it's stored "before" the usual PyObject* pointer, so fields starting at PyObject* address are not affected by this change, no?

Hopefully, PyGC_Head seems to be excluded from PyGC_Head, and so it seems like the PR 7043 doesn't break the stable *ABI*.

Can someone please confirm my analysis?
History
Date User Action Args
2018-05-30 10:14:28vstinnersetrecipients: + vstinner, pitrou, methane, serhiy.storchaka, yselivanov, eitan.adler
2018-05-30 10:14:28vstinnersetmessageid: <1527675268.09.0.682650639539.issue33597@psf.upfronthosting.co.za>
2018-05-30 10:14:28vstinnerlinkissue33597 messages
2018-05-30 10:14:28vstinnercreate