From 7ba908b734ad48891ea8b4ff51b24b7bcb7aad5f Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Sun, 18 Jan 2026 19:13:37 +0200 Subject: [PATCH 1/6] Inline link for Firefox Profiler --- Doc/whatsnew/3.15.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index 68fa10b0c08d17..38d28ae7d831b5 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -166,8 +166,8 @@ Key features include: * ``--flamegraph``: Generates a self-contained interactive HTML flamegraph using D3.js. Opens directly in your browser for immediate visual analysis. Flamegraphs show the call hierarchy where width represents time spent, making it easy to spot bottlenecks at a glance. - * ``--gecko``: Generates Gecko Profiler format compatible with Firefox Profiler - (https://profiler.firefox.com). Upload the output to Firefox Profiler for advanced + * ``--gecko``: Generates Gecko Profiler format compatible with `Firefox Profiler + `__. Upload the output to Firefox Profiler for advanced timeline-based analysis with features like stack charts, markers, and network activity. * ``--heatmap``: Generates an interactive HTML heatmap visualization with line-level sample counts. Creates a directory with per-file heatmaps showing exactly where time is spent From a1655345bd37283cc0df7199d7efb695192cfdae Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Mon, 26 Jan 2026 22:20:42 +0200 Subject: [PATCH 2/6] flamegraph -> flame graph --- Doc/library/profiling.rst | 14 +++++++------- Doc/whatsnew/3.15.rst | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Doc/library/profiling.rst b/Doc/library/profiling.rst index 0df9a5120a5df0..9b58cae28ab781 100644 --- a/Doc/library/profiling.rst +++ b/Doc/library/profiling.rst @@ -63,7 +63,7 @@ Choosing a profiler For most performance analysis, use the statistical profiler (:mod:`profiling.sampling`). It has minimal overhead, works for both development -and production, and provides rich visualization options including flamegraphs, +and production, and provides rich visualization options including flame graphs, heatmaps, GIL analysis, and more. Use the deterministic profiler (:mod:`profiling.tracing`) when you need **exact @@ -81,7 +81,7 @@ The following table summarizes the key differences: +--------------------+------------------------------+------------------------------+ | **Accuracy** | Statistical estimate | Exact call counts | +--------------------+------------------------------+------------------------------+ -| **Output formats** | pstats, flamegraph, heatmap, | pstats | +| **Output formats** | pstats, flame graph, heatmap,| pstats | | | gecko, collapsed | | +--------------------+------------------------------+------------------------------+ | **Profiling modes**| Wall-clock, CPU, GIL | Wall-clock | @@ -103,7 +103,7 @@ performance analysis tasks. Use it the same way you would use One of the main strengths of the sampling profiler is its variety of output formats. Beyond traditional pstats tables, it can generate interactive -flamegraphs that visualize call hierarchies, line-level source heatmaps that +flame graphs that visualize call hierarchies, line-level source heatmaps that show exactly where time is spent in your code, and Firefox Profiler output for timeline-based analysis. @@ -157,7 +157,7 @@ command:: python -m profiling.sampling run -m mypackage.module This runs the script under the profiler and prints a summary of where time was -spent. For an interactive flamegraph:: +spent. For an interactive flame graph:: python -m profiling.sampling run --flamegraph script.py @@ -197,7 +197,7 @@ Understanding profile output Both profilers collect function-level statistics, though they present them in different formats. The sampling profiler offers multiple visualizations -(flamegraphs, heatmaps, Firefox Profiler, pstats tables), while the +(flame graphs, heatmaps, Firefox Profiler, pstats tables), while the deterministic profiler produces pstats-compatible output. Regardless of format, the underlying concepts are the same. @@ -226,7 +226,7 @@ Key profiling concepts: **Caller/Callee relationships** Which functions called a given function (callers) and which functions it - called (callees). Flamegraphs visualize this as nested rectangles; pstats + called (callees). Flame graphs visualize this as nested rectangles; pstats can display it via the :meth:`~pstats.Stats.print_callers` and :meth:`~pstats.Stats.print_callees` methods. @@ -248,7 +248,7 @@ continue to work without modification in all future Python versions. .. seealso:: :mod:`profiling.sampling` - Statistical sampling profiler with flamegraphs, heatmaps, and GIL analysis. + Statistical sampling profiler with flame graphs, heatmaps, and GIL analysis. Recommended for most users. :mod:`profiling.tracing` diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index 38d28ae7d831b5..31bf4ac48c678e 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -161,10 +161,10 @@ Key features include: timing with direct and cumulative samples. Best for detailed analysis and integration with existing Python profiling tools. * ``--collapsed``: Generates collapsed stack traces (one line per stack). This format is - specifically designed for creating flamegraphs with external tools like Brendan Gregg's + specifically designed for creating flame graphs with external tools like Brendan Gregg's FlameGraph scripts or speedscope. - * ``--flamegraph``: Generates a self-contained interactive HTML flamegraph using D3.js. - Opens directly in your browser for immediate visual analysis. Flamegraphs show the call + * ``--flamegraph``: Generates a self-contained interactive HTML flame graph using D3.js. + Opens directly in your browser for immediate visual analysis. Flame graphs show the call hierarchy where width represents time spent, making it easy to spot bottlenecks at a glance. * ``--gecko``: Generates Gecko Profiler format compatible with `Firefox Profiler `__. Upload the output to Firefox Profiler for advanced From 1d290a6432001ea703ca95f4b405ae2dd9e9401d Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Sat, 7 Feb 2026 18:53:54 +0200 Subject: [PATCH 3/6] Fix indents --- Doc/whatsnew/3.15.rst | 48 +++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index 31bf4ac48c678e..c14e2ad69f8659 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -748,16 +748,16 @@ sqlite3 * The :ref:`command-line interface ` has several new features: - * SQL keyword completion on . - (Contributed by Long Tan in :gh:`133393`.) + * SQL keyword completion on . + (Contributed by Long Tan in :gh:`133393`.) - * Prompts, error messages, and help text are now colored. - This is enabled by default, see :ref:`using-on-controlling-color` for - details. - (Contributed by Stan Ulbrych and Łukasz Langa in :gh:`133461`.) + * Prompts, error messages, and help text are now colored. + This is enabled by default, see :ref:`using-on-controlling-color` for + details. + (Contributed by Stan Ulbrych and Łukasz Langa in :gh:`133461`.) - * Table, index, trigger, view, column, function, and schema completion on . - (Contributed by Long Tan in :gh:`136101`.) + * Table, index, trigger, view, column, function, and schema completion on . + (Contributed by Long Tan in :gh:`136101`.) ssl @@ -769,21 +769,21 @@ ssl * Added new methods for managing groups used for SSL key agreement - * :meth:`ssl.SSLContext.set_groups` sets the groups allowed for doing - key agreement, extending the previous - :meth:`ssl.SSLContext.set_ecdh_curve` method. - This new API provides the ability to list multiple groups and - supports fixed-field and post-quantum groups in addition to ECDH - curves. This method can also be used to control what key shares - are sent in the TLS handshake. - * :meth:`ssl.SSLSocket.group` returns the group selected for doing key - agreement on the current connection after the TLS handshake completes. - This call requires OpenSSL 3.2 or later. - * :meth:`ssl.SSLContext.get_groups` returns a list of all available key - agreement groups compatible with the minimum and maximum TLS versions - currently set in the context. This call requires OpenSSL 3.5 or later. - - (Contributed by Ron Frederick in :gh:`136306`.) + * :meth:`ssl.SSLContext.set_groups` sets the groups allowed for doing + key agreement, extending the previous + :meth:`ssl.SSLContext.set_ecdh_curve` method. + This new API provides the ability to list multiple groups and + supports fixed-field and post-quantum groups in addition to ECDH + curves. This method can also be used to control what key shares + are sent in the TLS handshake. + * :meth:`ssl.SSLSocket.group` returns the group selected for doing key + agreement on the current connection after the TLS handshake completes. + This call requires OpenSSL 3.2 or later. + * :meth:`ssl.SSLContext.get_groups` returns a list of all available key + agreement groups compatible with the minimum and maximum TLS versions + currently set in the context. This call requires OpenSSL 3.5 or later. + + (Contributed by Ron Frederick in :gh:`136306`.) * Added a new method :meth:`ssl.SSLContext.set_ciphersuites` for setting TLS 1.3 ciphers. For TLS 1.2 or earlier, :meth:`ssl.SSLContext.set_ciphers` should @@ -807,7 +807,7 @@ ssl selected for the server to complete the TLS handshake on the current connection. This call requires OpenSSL 3.5 or later. - (Contributed by Ron Frederick in :gh:`138252`.) + (Contributed by Ron Frederick in :gh:`138252`.) subprocess ---------- From 1587c1e515e33eb3094b6c35a8cf66b78fdfc8de Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Sat, 7 Feb 2026 18:56:45 +0200 Subject: [PATCH 4/6] Fix copy/paste typo --- Doc/whatsnew/3.15.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index c14e2ad69f8659..a64772efe504af 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -68,7 +68,7 @@ Summary -- Release highlights * :pep:`799`: :ref:`A dedicated profiling package for organizing Python profiling tools ` * :pep:`799`: :ref:`Tachyon: High frequency statistical sampling profiler - profiling tools ` + ` * :pep:`798`: :ref:`Unpacking in Comprehensions ` * :pep:`686`: :ref:`Python now uses UTF-8 as the default encoding From 3519294dc754b6068fd91bb3cf934e5d0b82726c Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Sat, 7 Feb 2026 19:03:31 +0200 Subject: [PATCH 5/6] Fix full stops --- Doc/whatsnew/3.15.rst | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index a64772efe504af..3498b8fc30d164 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -879,18 +879,18 @@ tkinter arguments: *nolinestop* which allows the search to continue across line boundaries; and *strictlimits* which restricts the search to within the specified range. - (Contributed by Rihaan Meher in :gh:`130848`) + (Contributed by Rihaan Meher in :gh:`130848`.) * A new method :meth:`!tkinter.Text.search_all` has been introduced. This method allows for searching for all matches of a pattern using Tcl's ``-all`` and ``-overlap`` options. - (Contributed by Rihaan Meher in :gh:`130848`) + (Contributed by Rihaan Meher in :gh:`130848`.) * Added new methods :meth:`!pack_content`, :meth:`!place_content` and :meth:`!grid_content` which use Tk commands with new names (introduced in Tk 8.6) instead of :meth:`!*_slaves` methods which use Tk commands with outdated names. - (Contributed by Serhiy Storchaka in :gh:`143754`) + (Contributed by Serhiy Storchaka in :gh:`143754`.) .. _whatsnew315-tomllib-1-1-0: @@ -1202,7 +1202,7 @@ importlib.resources * Removed deprecated ``package`` parameter from :func:`importlib.resources.files` function. - (Contributed by Semyon Moroz in :gh:`138044`) + (Contributed by Semyon Moroz in :gh:`138044`.) pathlib @@ -1453,7 +1453,7 @@ Changed C APIs * If the :c:macro:`Py_TPFLAGS_MANAGED_DICT` or :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` flag is set then :c:macro:`Py_TPFLAGS_HAVE_GC` must be set too. - (Contributed by Sergey Miryanov in :gh:`134786`) + (Contributed by Sergey Miryanov in :gh:`134786`.) Porting to Python 3.15 @@ -1610,7 +1610,7 @@ Build changes :manpage:`PR_SET_VMA_ANON_NAME ` (Linux 5.17 or newer). Annotations are visible in ``/proc//maps`` if the kernel supports the feature and :option:`-X dev <-X>` is passed to the Python or Python is built in :ref:`debug mode `. - (Contributed by Donghee Na in :gh:`141770`) + (Contributed by Donghee Na in :gh:`141770`.) Porting to Python 3.15 From a0e9267d6a05148235ba4b8b57f29f298172091f Mon Sep 17 00:00:00 2001 From: Stan Ulbrych <89152624+StanFromIreland@users.noreply.github.com> Date: Tue, 10 Feb 2026 15:12:05 +0000 Subject: [PATCH 6/6] Whitespace and formatting (#79) --- Doc/whatsnew/3.15.rst | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index 3498b8fc30d164..7ab549475152a9 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -189,6 +189,7 @@ 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-unpacking-in-comprehensions: :pep:`798`: Unpacking in Comprehensions @@ -229,6 +230,7 @@ agen() for x in a)``. (Contributed by Adam Hartz in :gh:`143055`.) + .. _whatsnew315-improved-error-messages: Improved error messages @@ -447,6 +449,7 @@ Other language changes making it a :term:`generic type`. (Contributed by James Hilton-Balfe in :gh:`128335`.) + New modules =========== @@ -476,6 +479,7 @@ argparse inline code when color output is enabled. (Contributed by Savannah Ostrowski in :gh:`142390`.) + base64 ------ @@ -488,6 +492,7 @@ base64 * Added the *ignorechars* parameter in :func:`~base64.b64decode`. (Contributed by Serhiy Storchaka in :gh:`144001`.) + binascii -------- @@ -526,6 +531,7 @@ collections between :class:`~collections.Counter` objects. (Contributed by Raymond Hettinger in :gh:`138682`.) + collections.abc --------------- @@ -581,7 +587,6 @@ dbm (Contributed by Andrea Oliveri in :gh:`134004`.) - difflib ------- @@ -667,8 +672,10 @@ math mimetypes --------- -* Add ``application/dicom`` MIME type for ``.dcm`` extension. (Contributed by Benedikt Johannes in :gh:`144217`.) -* Add ``application/node`` MIME type for ``.cjs`` extension. (Contributed by John Franey in :gh:`140937`.) +* Add ``application/dicom`` MIME type for ``.dcm`` extension. + (Contributed by Benedikt Johannes in :gh:`144217`.) +* Add ``application/node`` MIME type for ``.cjs`` extension. + (Contributed by John Franey in :gh:`140937`.) * Add ``application/toml``. (Contributed by Gil Forcada in :gh:`139959`.) * Add ``image/jxl``. (Contributed by Foolbar in :gh:`144213`.) * Rename ``application/x-texinfo`` to ``application/texinfo``. @@ -809,6 +816,7 @@ ssl (Contributed by Ron Frederick in :gh:`138252`.) + subprocess ---------- @@ -824,6 +832,7 @@ subprocess traditional busy loop (non-blocking call and short sleeps). (Contributed by Giampaolo Rodola in :gh:`83069`). + symtable -------- @@ -1060,6 +1069,7 @@ Optimizations (Contributed by Chris Eibl, Ken Jin, and Brandt Bucher in :gh:`143068`. Special thanks to the MSVC team including Hulon Jenkins.) + base64 & binascii ----------------- @@ -1072,6 +1082,7 @@ base64 & binascii two orders of magnitude less memory. (Contributed by James Seo and Serhiy Storchaka in :gh:`101178`.) + csv ---