René's URL Explorer Experiment


Title: PEP 831 – Frame Pointers Everywhere: Enabling System-Level Observability for Python | peps.python.org

Open Graph Title: PEP 831 – Frame Pointers Everywhere: Enabling System-Level Observability for Python | peps.python.org

Description: This PEP proposes two things:

Open Graph Description: This PEP proposes two things:

Opengraph URL: https://peps.python.org/pep-0831/

direct link

Domain: peps.python.org

color-schemelight dark
og:typewebsite
og:site_namePython Enhancement Proposals (PEPs)
og:imagehttps://peps.python.org/_static/og-image.png
og:image:altPython PEPs
og:image:width200
og:image:height200
theme-color#3776ab

Links:

Pythonhttps://www.python.org/
PEP Indexhttps://peps.python.org/
Discourse threadhttps://discuss.python.org/t/106958
13-Apr-2026https://discuss.python.org/t/106958
30-Apr-2026https://discuss.python.org/t/106958/6
Abstracthttps://peps.python.org/831#abstract
Motivationhttps://peps.python.org/831#motivation
What Are Frame Pointers?https://peps.python.org/831#what-are-frame-pointers
Profilers Are Slower and Less Accurate Without Frame Pointershttps://peps.python.org/831#profilers-are-slower-and-less-accurate-without-frame-pointers
Debuggers Benefit from Frame Pointershttps://peps.python.org/831#debuggers-benefit-from-frame-pointers
The Kernel’s Stack Unwinder Only Uses Frame Pointershttps://peps.python.org/831#the-kernel-s-stack-unwinder-only-uses-frame-pointers
The Perf Trampoline Feature Requires Frame Pointershttps://peps.python.org/831#the-perf-trampoline-feature-requires-frame-pointers
Distributions Are Waiting for Upstreamhttps://peps.python.org/831#distributions-are-waiting-for-upstream
Mixed Python/C Profiling Requires a Continuous Chainhttps://peps.python.org/831#mixed-python-c-profiling-requires-a-continuous-chain
The JIT Compiler Needs Frame Pointers to Be Debuggablehttps://peps.python.org/831#the-jit-compiler-needs-frame-pointers-to-be-debuggable
The Ecosystem Has Already Adopted Frame Pointershttps://peps.python.org/831#the-ecosystem-has-already-adopted-frame-pointers
Specificationhttps://peps.python.org/831#specification
Build System Changeshttps://peps.python.org/831#build-system-changes
Opt-Out Configure Flaghttps://peps.python.org/831#opt-out-configure-flag
Ecosystem Impacthttps://peps.python.org/831#ecosystem-impact
Documentation Updateshttps://peps.python.org/831#documentation-updates
Platform Scopehttps://peps.python.org/831#platform-scope
Rationalehttps://peps.python.org/831#rationale
Frame Pointers Are a Low-Cost, High-Value Defaulthttps://peps.python.org/831#frame-pointers-are-a-low-cost-high-value-default
Detailed Performance Analysis of CPython with Frame Pointershttps://peps.python.org/831#detailed-performance-analysis-of-cpython-with-frame-pointers
Industry Consensus Has Shifted Decisivelyhttps://peps.python.org/831#industry-consensus-has-shifted-decisively
Why Not Use CFLAGS_NODIST Instead of BASECFLAGShttps://peps.python.org/831#why-not-use-cflags-nodist-instead-of-basecflags
Alternatives to Frame-Pointer Unwindinghttps://peps.python.org/831#alternatives-to-frame-pointer-unwinding
Backwards Compatibilityhttps://peps.python.org/831#backwards-compatibility
Binary Compatibilityhttps://peps.python.org/831#binary-compatibility
Performancehttps://peps.python.org/831#performance
Extension Build Impacthttps://peps.python.org/831#extension-build-impact
Build Reproducibilityhttps://peps.python.org/831#build-reproducibility
Security Implicationshttps://peps.python.org/831#security-implications
How to Teach Thishttps://peps.python.org/831#how-to-teach-this
Reference Implementationhttps://peps.python.org/831#reference-implementation
Rejected Ideashttps://peps.python.org/831#rejected-ideas
Change Historyhttps://peps.python.org/831#change-history
Footnoteshttps://peps.python.org/831#footnotes
Appendixhttps://peps.python.org/831#appendix
Copyrighthttps://peps.python.org/831#copyright
--without-frame-pointershttps://docs.python.org/3.15/using/configure.html#cmdoption-without-frame-pointers
PEP 1https://peps.python.org/pep-0001/
Abstracthttps://peps.python.org/831#abstract
Backwards Compatibilityhttps://peps.python.org/831#backwards-compatibility
#96174https://github.com/python/cpython/issues/96174
Motivationhttps://peps.python.org/831#motivation
[2]https://peps.python.org/831#fedora38
[3]https://peps.python.org/831#ubuntu2404
[1]https://peps.python.org/831#gregg2024
What Are Frame Pointers?https://peps.python.org/831#what-are-frame-pointers
[14]https://peps.python.org/831#gcc-fomit
Detailed Performance Analysis of CPython with Frame Pointershttps://peps.python.org/831#detailed-performance-analysis-of-cpython-with-frame-pointers
Profilers Are Slower and Less Accurate Without Frame Pointershttps://peps.python.org/831#profilers-are-slower-and-less-accurate-without-frame-pointers
[11]https://peps.python.org/831#redhat
[26]https://peps.python.org/831#libunwind
[27]https://peps.python.org/831#framehop
[28]https://peps.python.org/831#samply
[15]https://peps.python.org/831#torvalds-fp
[1]https://peps.python.org/831#gregg2024
Debuggers Benefit from Frame Pointershttps://peps.python.org/831#debuggers-benefit-from-frame-pointers
The Kernel’s Stack Unwinder Only Uses Frame Pointershttps://peps.python.org/831#the-kernel-s-stack-unwinder-only-uses-frame-pointers
[24]https://peps.python.org/831#perforator
[12]https://peps.python.org/831#polarsignals
[25]https://peps.python.org/831#pyroscope
The Perf Trampoline Feature Requires Frame Pointershttps://peps.python.org/831#the-perf-trampoline-feature-requires-frame-pointers
Distributions Are Waiting for Upstreamhttps://peps.python.org/831#distributions-are-waiting-for-upstream
[2]https://peps.python.org/831#fedora38
[3]https://peps.python.org/831#ubuntu2404
explicitly exempted CPythonhttps://ubuntu.com/blog/ubuntu-performance-engineering-with-frame-pointers-by-default
Alternatives to Frame-Pointer Unwindinghttps://peps.python.org/831#alternatives-to-frame-pointer-unwinding
Mixed Python/C Profiling Requires a Continuous Chainhttps://peps.python.org/831#mixed-python-c-profiling-requires-a-continuous-chain
The JIT Compiler Needs Frame Pointers to Be Debuggablehttps://peps.python.org/831#the-jit-compiler-needs-frame-pointers-to-be-debuggable
PEP 744https://peps.python.org/pep-0744/
#126910https://github.com/python/cpython/issues/126910
The Ecosystem Has Already Adopted Frame Pointershttps://peps.python.org/831#the-ecosystem-has-already-adopted-frame-pointers
[13]https://peps.python.org/831#pbs992
[13]https://peps.python.org/831#pbs992
[13]https://peps.python.org/831#pbs992
[2]https://peps.python.org/831#fedora38
[3]https://peps.python.org/831#ubuntu2404
Industry Consensus Has Shifted Decisivelyhttps://peps.python.org/831#industry-consensus-has-shifted-decisively
Specificationhttps://peps.python.org/831#specification
Build System Changeshttps://peps.python.org/831#build-system-changes
Opt-Out Configure Flaghttps://peps.python.org/831#opt-out-configure-flag
Ecosystem Impacthttps://peps.python.org/831#ecosystem-impact
Extension Build Impacthttps://peps.python.org/831#extension-build-impact
Documentation Updateshttps://peps.python.org/831#documentation-updates
Platform Scopehttps://peps.python.org/831#platform-scope
[18]https://peps.python.org/831#msvc-x64-eh
[19]https://peps.python.org/831#msvc-oy
[20]https://peps.python.org/831#msvc-arm64-abi
Rationalehttps://peps.python.org/831#rationale
Frame Pointers Are a Low-Cost, High-Value Defaulthttps://peps.python.org/831#frame-pointers-are-a-low-cost-high-value-default
[1]https://peps.python.org/831#gregg2024
[2]https://peps.python.org/831#fedora38
[2]https://peps.python.org/831#fedora38
[3]https://peps.python.org/831#ubuntu2404
[2]https://peps.python.org/831#fedora38
Detailed Performance Analysis of CPython with Frame Pointershttps://peps.python.org/831#detailed-performance-analysis-of-cpython-with-frame-pointers
[5]https://peps.python.org/831#hn-fp
Detailed Performance Analysis of CPython with Frame Pointershttps://peps.python.org/831#detailed-performance-analysis-of-cpython-with-frame-pointers
[4]https://peps.python.org/831#discuss22507
PEP 744https://peps.python.org/pep-0744/
Industry Consensus Has Shifted Decisivelyhttps://peps.python.org/831#industry-consensus-has-shifted-decisively
[6]https://peps.python.org/831#go17
[7]https://peps.python.org/831#go-fp-issue
[21]https://peps.python.org/831#rust-fp
[22]https://peps.python.org/831#chromium-fp
[16]https://peps.python.org/831#dotnet-fp
[8]https://peps.python.org/831#nodejspr
[9]https://peps.python.org/831#pytorch
[10]https://peps.python.org/831#redis
[2]https://peps.python.org/831#fedora38
[3]https://peps.python.org/831#ubuntu2404
[23]https://peps.python.org/831#almalinux-fp
[13]https://peps.python.org/831#pbs992
Why Not Use CFLAGS_NODIST Instead of BASECFLAGShttps://peps.python.org/831#why-not-use-cflags-nodist-instead-of-basecflags
[13]https://peps.python.org/831#pbs992
Alternatives to Frame-Pointer Unwindinghttps://peps.python.org/831#alternatives-to-frame-pointer-unwinding
Profilers Are Slower and Less Accurate Without Frame Pointershttps://peps.python.org/831#profilers-are-slower-and-less-accurate-without-frame-pointers
[11]https://peps.python.org/831#redhat
[17]https://peps.python.org/831#intel-lbr
[24]https://peps.python.org/831#perforator
[12]https://peps.python.org/831#polarsignals
[1]https://peps.python.org/831#gregg2024
Backwards Compatibilityhttps://peps.python.org/831#backwards-compatibility
Binary Compatibilityhttps://peps.python.org/831#binary-compatibility
PEP 384https://peps.python.org/pep-0384/
Performancehttps://peps.python.org/831#performance
[30]https://peps.python.org/831#missing-benchmarks
[29]https://peps.python.org/831#benchmarks
Detailed Performance Analysis of CPython with Frame Pointershttps://peps.python.org/831#detailed-performance-analysis-of-cpython-with-frame-pointers
Extension Build Impacthttps://peps.python.org/831#extension-build-impact
Build Reproducibilityhttps://peps.python.org/831#build-reproducibility
Security Implicationshttps://peps.python.org/831#security-implications
How to Teach Thishttps://peps.python.org/831#how-to-teach-this
Extension Build Impacthttps://peps.python.org/831#extension-build-impact
Opt-Out Configure Flaghttps://peps.python.org/831#opt-out-configure-flag
Reference Implementationhttps://peps.python.org/831#reference-implementation
github.com/pablogsal/cpython, branch frame-pointershttps://github.com/pablogsal/cpython/tree/frame-pointers
Rejected Ideashttps://peps.python.org/831#rejected-ideas
Alternatives to Frame-Pointer Unwindinghttps://peps.python.org/831#alternatives-to-frame-pointer-unwinding
Change Historyhttps://peps.python.org/831#change-history
Footnoteshttps://peps.python.org/831#footnotes
1https://peps.python.org/831#id3
2https://peps.python.org/831#id10
3https://peps.python.org/831#id24
4https://peps.python.org/831#id48
https://www.brendangregg.com/blog/2024-03-17/the-return-of-the-frame-pointers.htmlhttps://www.brendangregg.com/blog/2024-03-17/the-return-of-the-frame-pointers.html
1https://peps.python.org/831#id1
2https://peps.python.org/831#id14
3https://peps.python.org/831#id19
4https://peps.python.org/831#id25
5https://peps.python.org/831#id26
6https://peps.python.org/831#id28
7https://peps.python.org/831#id39
https://fedoraproject.org/wiki/Changes/fno-omit-frame-pointerhttps://fedoraproject.org/wiki/Changes/fno-omit-frame-pointer
1https://peps.python.org/831#id2
2https://peps.python.org/831#id15
3https://peps.python.org/831#id20
4https://peps.python.org/831#id27
5https://peps.python.org/831#id40
https://ubuntu.com/blog/ubuntu-performance-engineering-with-frame-pointers-by-defaulthttps://ubuntu.com/blog/ubuntu-performance-engineering-with-frame-pointers-by-default
4https://peps.python.org/831#id30
https://discuss.python.org/t/python-3-11-performance-with-frame-pointers/22507https://discuss.python.org/t/python-3-11-performance-with-frame-pointers/22507
5https://peps.python.org/831#id29
https://news.ycombinator.com/item?id=39731824https://news.ycombinator.com/item?id=39731824
6https://peps.python.org/831#id31
https://tip.golang.org/doc/go1.7https://tip.golang.org/doc/go1.7
7https://peps.python.org/831#id32
https://github.com/golang/go/issues/15840https://github.com/golang/go/issues/15840
8https://peps.python.org/831#id36
https://github.com/nodejs/node/pull/44452https://github.com/nodejs/node/pull/44452
9https://peps.python.org/831#id37
https://github.com/pytorch/pytorch/blob/main/CMakeLists.txthttps://github.com/pytorch/pytorch/blob/main/CMakeLists.txt
10https://peps.python.org/831#id38
https://github.com/redis/redis/issues/12861https://github.com/redis/redis/issues/12861
1https://peps.python.org/831#id5
2https://peps.python.org/831#id44
https://developers.redhat.com/articles/2023/07/31/frame-pointers-untangling-unwindinghttps://developers.redhat.com/articles/2023/07/31/frame-pointers-untangling-unwinding
1https://peps.python.org/831#id12
2https://peps.python.org/831#id47
https://www.polarsignals.com/blog/posts/2022/11/29/dwarf-based-stack-walking-using-ebpfhttps://www.polarsignals.com/blog/posts/2022/11/29/dwarf-based-stack-walking-using-ebpf
1https://peps.python.org/831#id16
2https://peps.python.org/831#id17
3https://peps.python.org/831#id18
4https://peps.python.org/831#id42
5https://peps.python.org/831#id43
https://github.com/astral-sh/python-build-standalone/issues/992https://github.com/astral-sh/python-build-standalone/issues/992
14https://peps.python.org/831#id4
https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fomit-frame-pointerhttps://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fomit-frame-pointer
15https://peps.python.org/831#id9
https://lwn.net/Articles/728339/https://lwn.net/Articles/728339/
16https://peps.python.org/831#id35
https://github.com/dotnet/runtime/blob/main/eng/native/configurecompiler.cmakehttps://github.com/dotnet/runtime/blob/main/eng/native/configurecompiler.cmake
17https://peps.python.org/831#id45
18https://peps.python.org/831#id21
https://learn.microsoft.com/en-us/cpp/build/exception-handling-x64https://learn.microsoft.com/en-us/cpp/build/exception-handling-x64
19https://peps.python.org/831#id22
https://learn.microsoft.com/en-us/cpp/build/reference/oy-frame-pointer-omissionhttps://learn.microsoft.com/en-us/cpp/build/reference/oy-frame-pointer-omission
20https://peps.python.org/831#id23
https://learn.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventionshttps://learn.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions
21https://peps.python.org/831#id33
https://github.com/rust-lang/rust/pull/122646https://github.com/rust-lang/rust/pull/122646
22https://peps.python.org/831#id34
https://chromium.googlesource.com/chromium/src/build/+/refs/heads/main/config/compiler/compiler.gnihttps://chromium.googlesource.com/chromium/src/build/+/refs/heads/main/config/compiler/compiler.gni
23https://peps.python.org/831#id41
https://almalinux.org/blog/2024-10-22-introducing-almalinux-os-kitten/https://almalinux.org/blog/2024-10-22-introducing-almalinux-os-kitten/
1https://peps.python.org/831#id11
2https://peps.python.org/831#id46
https://github.com/yandex/perforatorhttps://github.com/yandex/perforator
25https://peps.python.org/831#id13
https://grafana.com/docs/pyroscope/latest/configure-client/grafana-alloy/ebpf/troubleshooting/https://grafana.com/docs/pyroscope/latest/configure-client/grafana-alloy/ebpf/troubleshooting/
26https://peps.python.org/831#id6
https://www.nongnu.org/libunwind/https://www.nongnu.org/libunwind/
27https://peps.python.org/831#id7
https://github.com/mstange/framehophttps://github.com/mstange/framehop
28https://peps.python.org/831#id8
https://github.com/mstange/samplyhttps://github.com/mstange/samply
29https://peps.python.org/831#id50
https://github.com/Fidget-Spinner/python-framepointer-benchhttps://github.com/Fidget-Spinner/python-framepointer-bench
30https://peps.python.org/831#id49
Appendixhttps://peps.python.org/831#appendix
Copyrighthttps://peps.python.org/831#copyright
Abstracthttps://peps.python.org/831#abstract
Motivationhttps://peps.python.org/831#motivation
What Are Frame Pointers?https://peps.python.org/831#what-are-frame-pointers
Profilers Are Slower and Less Accurate Without Frame Pointershttps://peps.python.org/831#profilers-are-slower-and-less-accurate-without-frame-pointers
Debuggers Benefit from Frame Pointershttps://peps.python.org/831#debuggers-benefit-from-frame-pointers
The Kernel’s Stack Unwinder Only Uses Frame Pointershttps://peps.python.org/831#the-kernel-s-stack-unwinder-only-uses-frame-pointers
The Perf Trampoline Feature Requires Frame Pointershttps://peps.python.org/831#the-perf-trampoline-feature-requires-frame-pointers
Distributions Are Waiting for Upstreamhttps://peps.python.org/831#distributions-are-waiting-for-upstream
Mixed Python/C Profiling Requires a Continuous Chainhttps://peps.python.org/831#mixed-python-c-profiling-requires-a-continuous-chain
The JIT Compiler Needs Frame Pointers to Be Debuggablehttps://peps.python.org/831#the-jit-compiler-needs-frame-pointers-to-be-debuggable
The Ecosystem Has Already Adopted Frame Pointershttps://peps.python.org/831#the-ecosystem-has-already-adopted-frame-pointers
Specificationhttps://peps.python.org/831#specification
Build System Changeshttps://peps.python.org/831#build-system-changes
Opt-Out Configure Flaghttps://peps.python.org/831#opt-out-configure-flag
Ecosystem Impacthttps://peps.python.org/831#ecosystem-impact
Documentation Updateshttps://peps.python.org/831#documentation-updates
Platform Scopehttps://peps.python.org/831#platform-scope
Rationalehttps://peps.python.org/831#rationale
Frame Pointers Are a Low-Cost, High-Value Defaulthttps://peps.python.org/831#frame-pointers-are-a-low-cost-high-value-default
Detailed Performance Analysis of CPython with Frame Pointershttps://peps.python.org/831#detailed-performance-analysis-of-cpython-with-frame-pointers
Industry Consensus Has Shifted Decisivelyhttps://peps.python.org/831#industry-consensus-has-shifted-decisively
Why Not Use CFLAGS_NODIST Instead of BASECFLAGShttps://peps.python.org/831#why-not-use-cflags-nodist-instead-of-basecflags
Alternatives to Frame-Pointer Unwindinghttps://peps.python.org/831#alternatives-to-frame-pointer-unwinding
Backwards Compatibilityhttps://peps.python.org/831#backwards-compatibility
Binary Compatibilityhttps://peps.python.org/831#binary-compatibility
Performancehttps://peps.python.org/831#performance
Extension Build Impacthttps://peps.python.org/831#extension-build-impact
Build Reproducibilityhttps://peps.python.org/831#build-reproducibility
Security Implicationshttps://peps.python.org/831#security-implications
How to Teach Thishttps://peps.python.org/831#how-to-teach-this
Reference Implementationhttps://peps.python.org/831#reference-implementation
Rejected Ideashttps://peps.python.org/831#rejected-ideas
Change Historyhttps://peps.python.org/831#change-history
Footnoteshttps://peps.python.org/831#footnotes
Appendixhttps://peps.python.org/831#appendix
Copyrighthttps://peps.python.org/831#copyright
Page Source (GitHub)https://github.com/python/peps/blob/main/peps/pep-0831.rst?plain=1
https://github.com/python/peps/blob/main/peps/pep-0831.rsthttps://github.com/python/peps/blob/main/peps/pep-0831.rst
2026-05-20 22:52:46 UTChttps://github.com/python/peps/commits/main/peps/pep-0831.rst

Viewport: width=device-width, initial-scale=1.0


URLs of crawlers that visited me.