[Python-Dev] Use C extensions compiled in release mode on a Python compiled in debug mode (original) (raw)

Antoine Pitrou solipsis at pitrou.net
Wed Apr 24 10:03:22 EDT 2019


On Wed, 24 Apr 2019 01:44:17 +0200 Victor Stinner <vstinner at redhat.com> wrote:

The first requirement for the use case is that a Python debug build supports the ABI of a release build. The current blocker issue is that the PyDEBUG define imply the PyTRACEREFS define: PyObject gets 2 extra fields (obprev and obnext) which change the offset of all attributes of all objects and makes the ABI completely incompatible. I propose to no longer imply PyTRACEREFS by default (but keep the code): https://bugs.python.org/issue36465 https://github.com/python/cpython/pull/12615

+1 from me.

The second issue is that library filenames are different for a debug build: SOABI gets an additional "d" flag for PyDEBUG. A debug build should first look for "NAME.cpython-38dm.so" (flags: "dm"), but then also look for "NAME.cpython-38m.so" (flags: "m").

Sounds fair (but only on Unix, I guess).

Maybe pip could be enhanced to support installing C extensions compiled in release mode when using a debug mode. But that's more for convenience, it's not really required, since it is easy to switch the Python runtime between release and debug build.

Not sure what you mean by "easy to switch the Python runtime". As soon as I want to use pip, I have to use a release build, right?

Regards

Antoine.



More information about the Python-Dev mailing list