gh-146907: Clarify ABI compatibility between debug and release builds (GH-146925)

This commit is contained in:
konsti 2026-04-01 16:17:56 +02:00 committed by GitHub
parent 2452324001
commit 03f3b9ade9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 12 additions and 9 deletions

View file

@ -906,9 +906,11 @@ See also the :ref:`Python Development Mode <devmode>` and the
:option:`--with-trace-refs` configure option.
.. versionchanged:: 3.8
Release builds and debug builds are now ABI compatible: defining the
Release builds are now ABI compatible with debug builds: defining the
``Py_DEBUG`` macro no longer implies the ``Py_TRACE_REFS`` macro (see the
:option:`--with-trace-refs` option).
:option:`--with-trace-refs` option). However, debug builds still expose
more symbols than release builds and code built against a debug build is not
necessarily compatible with a release build.
Debug options

View file

@ -207,14 +207,15 @@ subdirectories).
Debug build uses the same ABI as release build
-----------------------------------------------
Python now uses the same ABI whether it's built in release or debug mode. On
Unix, when Python is built in debug mode, it is now possible to load C
extensions built in release mode and C extensions built using the stable ABI.
The ABI of Python :ref:`debug builds <debug-build>` is now compatible with
Python release builds. On Unix, when Python is built in debug mode, it is now
possible to load C extensions built in release mode and C extensions built
using the stable ABI. The inverse is not true, as debug builds expose
additional symbols not available in release builds.
Release builds and :ref:`debug builds <debug-build>` are now ABI compatible: defining the
``Py_DEBUG`` macro no longer implies the ``Py_TRACE_REFS`` macro, which
introduces the only ABI incompatibility. The ``Py_TRACE_REFS`` macro, which
adds the :func:`sys.getobjects` function and the :envvar:`PYTHONDUMPREFS`
Defining the ``Py_DEBUG`` macro no longer implies the ``Py_TRACE_REFS`` macro,
which introduces the only ABI incompatibility. The ``Py_TRACE_REFS`` macro,
which adds the :func:`sys.getobjects` function and the :envvar:`PYTHONDUMPREFS`
environment variable, can be set using the new :option:`./configure
--with-trace-refs <--with-trace-refs>` build option.
(Contributed by Victor Stinner in :issue:`36465`.)