[Python-Dev] No longer enable Py_TRACE_REFS by default in debug build (original) (raw)

Victor Stinner vstinner at redhat.com
Tue Apr 9 12:25:25 EDT 2019


Hi,

When Python is built in debug mode, PyObject gets 2 new fields: _ob_prev and _ob_next. These fields change the offset of following fields in the PyObject structure and so breaks the ABI.

I propose to modify the debug build (Py_DEBUG) to no longer imply Py_TRACE_REFS. Antoine Pitrou proposed this idea when the C API was discussed to get a stable ABI.

https://bugs.python.org/issue36465 https://github.com/python/cpython/pull/12615

This change makes the debug build ABI closer to the release build ABI, but I am not sure how to compare these two ABI. Technically, C extensions still need to be recompiled.

What do you think?

--

I also wrote a PR to remove all code related to Py_TRACE_REFS: https://github.com/python/cpython/pull/12614

I don't think that it's right approach. I prefer to keep this special build around to see if anyone needs it, and wait one or two Python releases to decide what to do with it.

Victor

Night gathers, and now my watch begins. It shall not end until my death.



More information about the Python-Dev mailing list