[Python-Dev] No longer enable Py_TRACE_REFS by default in debug build

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


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.


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:

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.

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

More information about the Python-Dev mailing list