https://github.com/python/cpython/commit/03f3b9ade975e78a31bf776ff27ac6ac22fcb65a
commit: 03f3b9ade975e78a31bf776ff27ac6ac22fcb65a
branch: main
author: konsti <[email protected]>
committer: encukou <[email protected]>
date: 2026-04-01T16:17:56+02:00
summary:
gh-146907: Clarify ABI compatibility between debug and release builds
(GH-146925)
files:
M Doc/using/configure.rst
M Doc/whatsnew/3.8.rst
diff --git a/Doc/using/configure.rst b/Doc/using/configure.rst
index b218325b140d43..cc6aafe80f810d 100644
--- a/Doc/using/configure.rst
+++ b/Doc/using/configure.rst
@@ -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
diff --git a/Doc/whatsnew/3.8.rst b/Doc/whatsnew/3.8.rst
index 91cd23f6f2bbb9..5078fc30ac111e 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 <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`
+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.
+
+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`.)
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]