From 9f819ff7856d6968c47bd24732de6b11625329ce Mon Sep 17 00:00:00 2001 From: konsti Date: Wed, 1 Apr 2026 16:17:56 +0200 Subject: [PATCH] gh-146907: Clarify ABI compatibility between debug and release builds (GH-146925) (cherry picked from commit 03f3b9ade975e78a31bf776ff27ac6ac22fcb65a) Co-authored-by: konsti --- Doc/using/configure.rst | 6 ++++-- Doc/whatsnew/3.8.rst | 17 +++++++++-------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/Doc/using/configure.rst b/Doc/using/configure.rst index 7372ae71a4ba47..157432acbc9d21 100644 --- a/Doc/using/configure.rst +++ b/Doc/using/configure.rst @@ -838,9 +838,11 @@ See also the :ref:`Python Development Mode ` 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 diff --git a/Doc/whatsnew/3.8.rst b/Doc/whatsnew/3.8.rst index f5fdb76fccbe5d..d1062c0a402e81 100644 --- a/Doc/whatsnew/3.8.rst +++ b/Doc/whatsnew/3.8.rst @@ -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. - -Release builds and :ref:`debug builds ` 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` +The ABI of Python :ref:`debug builds ` 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. + +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`.)