We are happy to announce PEP 831 – “Frame Pointers Everywhere”
This PEP proposes building CPython with -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer by default starting in Python 3.15, so that profilers, debuggers, and eBPF-based tracing tools (perf, py-spy, bpftrace, Pyroscope, etc.) can produce complete, reliable call stacks for Python processes out of the box and we can enjoy more reliable profiling, debugging and system observability.
+10 We should just do it. Many of the largest companies in the world have been building everything (including CPython) they run in their fleets of datacenters for decades with frame pointers enabled for all of the reasons spelled out in the PEP.
After extensive deliberation the Steering Council has decided to accept PEP 831 (Frame Pointers Everywhere: yahdah yahdah), because it’s clearly the correct and necessary thing… although we wish the PEP and its title had been a lot shorter, given how much of an obvious decision it is. Congrats!
(Pablo and Savannah, as PEP authors, were not involved in the decision process.)