https://github.com/python/cpython/commit/88844d213593b0abdd7a22b2f619bf59b74f2dcf
commit: 88844d213593b0abdd7a22b2f619bf59b74f2dcf
branch: main
author: Pablo Galindo Salgado <[email protected]>
committer: pablogsal <[email protected]>
date: 2026-05-05T00:51:28Z
summary:

gh-149202: Highlight PEP 831 in What's New for Python 3.15 (#149390)

files:
M Doc/whatsnew/3.15.rst

diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst
index 7f12cc04a460d4..e98c483baec823 100644
--- a/Doc/whatsnew/3.15.rst
+++ b/Doc/whatsnew/3.15.rst
@@ -75,6 +75,8 @@ Summary -- Release highlights
   profiling tools <whatsnew315-profiling-package>`
 * :pep:`799`: :ref:`Tachyon: High frequency statistical sampling profiler
   <whatsnew315-sampling-profiler>`
+* :pep:`831`: :ref:`Frame pointers are enabled by default for improved
+  system-level observability <whatsnew315-pep831>`
 * :pep:`798`: :ref:`Unpacking in comprehensions
   <whatsnew315-unpacking-in-comprehensions>`
 * :pep:`686`: :ref:`Python now uses UTF-8 as the default encoding
@@ -86,7 +88,6 @@ Summary -- Release highlights
 * :pep:`782`: :ref:`A new PyBytesWriter C API to create a Python bytes object
   <whatsnew315-pybyteswriter>`
 * :pep:`803`: :ref:`Stable ABI for Free-Threaded Builds <whatsnew315-abi3t>`
-* :pep:`831`: :ref:`Frame pointers everywhere <whatsnew315-frame-pointers>`
 * :ref:`The JIT compiler has been significantly upgraded <whatsnew315-jit>`
 * :ref:`Improved error messages <whatsnew315-improved-error-messages>`
 * :ref:`The official Windows 64-bit binaries now use the tail-calling 
interpreter
@@ -376,6 +377,39 @@ available output formats, profiling modes, and 
configuration options.
 (Contributed by Pablo Galindo and László Kiss Kollár in :gh:`135953` and 
:gh:`138122`.)
 
 
+.. _whatsnew315-pep831:
+
+:pep:`831`: Frame pointers enabled by default
+---------------------------------------------
+
+CPython is now built with frame pointers by default on platforms that support
+them.  This uses the compiler flags ``-fno-omit-frame-pointer`` and
+``-mno-omit-leaf-frame-pointer``, making native stack unwinding faster and
+more reliable for system profilers, debuggers, crash analysis tools, and
+eBPF-based observability tools.
+
+The flags are exposed through :mod:`sysconfig`, so extension modules built by
+tools that consume Python's build configuration inherit frame pointers by
+default.  This propagation is intentional: mixed Python/native profiling needs
+an unbroken frame-pointer chain through the interpreter, extension modules,
+embedding applications, and native libraries.
+
+.. important::
+
+   Third-party build backends and native build systems should preserve these
+   flags when they consume Python's :mod:`sysconfig` values.  Build systems
+   that compile C, C++, Rust, or other native code without inheriting Python's
+   compiler flags should enable equivalent frame-pointer flags themselves.  A
+   single native component built without frame pointers can break stack
+   unwinding for the whole Python process.
+
+.. seealso:: :pep:`831` for further details.
+
+(Contributed by Pablo Galindo Salgado and Savannah Ostrowski in
+:gh:`149201`; PEP 831 written by Pablo Galindo Salgado, Ken Jin, and
+Savannah Ostrowski.)
+
+
 .. _whatsnew315-unpacking-in-comprehensions:
 
 :pep:`798`: Unpacking in Comprehensions
@@ -2378,16 +2412,6 @@ Build changes
   and :option:`-X dev <-X>` is passed to the Python or Python is built in 
:ref:`debug mode <debug-build>`.
   (Contributed by Donghee Na in :gh:`141770`.)
 
-.. _whatsnew315-frame-pointers:
-
-* CPython is now built with frame pointers enabled by default
-  (:pep:`831`). Pass :option:`--without-frame-pointers` to opt out.
-  Authors of C extensions and native libraries built with custom build
-  systems should add ``-fno-omit-frame-pointer`` and
-  ``-mno-omit-leaf-frame-pointer`` to their own ``CFLAGS`` to keep the
-  unwind chain intact.
-  (Contributed by Pablo Galindo Salgado and Savannah Ostrowski in 
:gh:`149201`.)
-
 .. _whatsnew315-windows-tail-calling-interpreter:
 
 * 64-bit builds using Visual Studio 2026 (MSVC 18) may now use the new

_______________________________________________
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]

Reply via email to