From 48348efe6a56128aa07bd8a3504109211b896106 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Sun, 13 Sep 2026 12:38:44 +0300 Subject: [PATCH 01/11] Group release highlights --- Doc/whatsnew/3.15.rst | 43 ++++++++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index 4095058961b735..57295f5fe12bce 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -65,38 +65,55 @@ Summary -- Release highlights .. PEP-sized items next. +Interpreter improvements: + +* :pep:`661`: :ref:`Add sentinel built-in type + ` +* :pep:`686`: :ref:`Python now uses UTF-8 as the default encoding + ` +* :pep:`798`: :ref:`Unpacking in comprehensions + ` * :pep:`810`: :ref:`Explicit lazy imports for faster startup times ` * :pep:`814`: :ref:`Add frozendict built-in type ` -* :pep:`661`: :ref:`Add sentinel built-in type - ` +* :pep:`829`: :ref:`Package startup configuration files ` +* :ref:`The JIT compiler has been significantly upgraded ` +* :ref:`Improved error messages ` + +Significant improvements in the standard library: + * :pep:`799`: :ref:`A dedicated profiling package for organizing Python profiling tools ` * :pep:`799`: :ref:`Tachyon: High frequency statistical sampling profiler ` -* :pep:`831`: :ref:`Frame pointers are enabled by default for improved - system-level observability ` -* :pep:`798`: :ref:`Unpacking in comprehensions - ` -* :pep:`686`: :ref:`Python now uses UTF-8 as the default encoding - ` -* :pep:`829`: :ref:`Package startup configuration files ` +* :ref:`More color ` + +New typing features: + * :pep:`728`: :ref:`TypedDict with typed extra items ` * :pep:`747`: :ref:`Annotating type forms with TypeForm ` * :pep:`800`: :ref:`Disjoint bases in the type system ` + +C API improvements: + * :pep:`782`: :ref:`A new PyBytesWriter C API to create a Python bytes object ` +* :pep:`788`: :ref:`Protection against finalization in the C API ` * :pep:`803`, :pep:`820 <820>`, :pep:`793 <793>`: :ref:`Stable ABI for free-threaded builds ` and related C API -* :pep:`788`: :ref:`Protection against finalization in the C API ` -* :ref:`The JIT compiler has been significantly upgraded ` + +Build changes: + +* :pep:`831`: :ref:`Frame pointers are enabled by default for improved + system-level observability ` + +Release changes: + * :ref:`The official Windows 64-bit binaries now use the tail-calling interpreter ` -* :ref:`Improved error messages ` -* :ref:`More color ` New features From 0b011a79fff62546f2900d6652917fd915234e72 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Thu, 17 Sep 2026 19:24:47 +0300 Subject: [PATCH 02/11] Add intro --- Doc/whatsnew/3.15.rst | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index 57295f5fe12bce..bffe69c3f8140f 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -62,6 +62,38 @@ Summary -- Release highlights .. This section singles out the most important changes in Python 3.15. Brevity is key. +Python 3.15 will be the latest stable release of the Python programming +language, with a mix of changes to the language, the implementation, +and the standard library. +The biggest changes include +:ref:`lazy imports `, +:ref:`frozendict ` and +:ref:`sentinel ` builtins, +:ref:`UTF-8 as the default encoding `, +:ref:`unpacking in comprehensions `, +and a :ref:`stable ABI for free-threaded builds `. + +The library changes include a new +:ref:`profiling package ` with +:ref:`Tachyon `, +a high frequency statistical sampling profiler, +:ref:`more color ` in command-line output, +as well as the usual deprecations and removals, +and improvements in user-friendliness and correctness. + +This article doesn't attempt to provide a complete specification +of all new features, but instead gives a convenient overview. +For full details refer to the documentation, +such as the :ref:`Library Reference ` +and :ref:`Language Reference `. +To understand the complete implementation and design rationale for a change, +refer to the PEP for a particular new feature; +but note that PEPs usually are not kept up-to-date +once a feature has been fully implemented. +See `Porting to Python 3.15`_ for guidance on upgrading from +earlier versions of Python. + +-------------- .. PEP-sized items next. From e5b27ab79b9fcd82c6b325c294015e04e6448d7b Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Thu, 17 Sep 2026 21:23:06 +0300 Subject: [PATCH 03/11] Update example to be runnable --- Doc/whatsnew/3.15.rst | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index bffe69c3f8140f..60a47299b190f7 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -630,6 +630,9 @@ Improved error messages .. code-block:: python + from dataclasses import dataclass + from math import pi + @dataclass class Circle: radius: float @@ -651,7 +654,7 @@ Improved error messages .. code-block:: pytb Traceback (most recent call last): - File "/home/pablogsal/github/python/main/lel.py", line 42, in + File "example.py", line 18, in print(container.area) ^^^^^^^^^^^^^^ AttributeError: 'Container' object has no attribute 'area'. Did you mean '.inner.area' instead of '.area'? From 23009ae5cfe99ef39566121281813fb2a84b011b Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Thu, 17 Sep 2026 21:27:04 +0300 Subject: [PATCH 04/11] Add missing contributions --- Doc/whatsnew/3.15.rst | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index 60a47299b190f7..99fb5d43e1cbbd 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -1185,6 +1185,7 @@ dataclasses * Annotations for generated ``__init__`` methods no longer include internal type names. + (Contributed by David Ellis in :gh:`137530`.) dbm @@ -1251,6 +1252,7 @@ gc of significant memory pressure in production environments, it has been reverted back to the generational GC from 3.13. This is the GC now used in Python 3.14.5 and later and Python 3.15. + (Contributed by Sergey Miryanov in :gh:`148726`.) hashlib @@ -1767,6 +1769,7 @@ types as :class:`types.FrameLocalsProxyType`. This represents the type of the :attr:`frame.f_locals` attribute, as described in :pep:`667`. + (Contributed by Peter Bierma in :gh:`136492`.) typing @@ -1830,6 +1833,7 @@ unicodedata ----------- * The Unicode database has been updated to Unicode 17.0.0. + (Contributed by Benjamin Peterson in :gh:`138706`.) * Add :func:`unicodedata.isxidstart` and :func:`unicodedata.isxidcontinue` functions to check whether a character can start or continue a @@ -2136,6 +2140,7 @@ collections.abc * :class:`collections.abc.ByteString` has been removed from ``collections.abc.__all__``. :class:`!collections.abc.ByteString` has been deprecated since Python 3.12, and is scheduled for removal in Python 3.17. + (Contributed by Alex Waygood in :gh:`118803`.) ctypes @@ -2245,6 +2250,7 @@ typing * :class:`typing.ByteString` has been removed from ``typing.__all__``. :class:`!typing.ByteString` has been deprecated since Python 3.9, and is scheduled for removal in Python 3.17. + (Contributed by Alex Waygood in :gh:`118803`.) * The undocumented keyword argument syntax for creating :class:`~typing.NamedTuple` classes (for example, @@ -2324,6 +2330,7 @@ New deprecations argument to :func:`isinstance` or :func:`issubclass`, but warnings were not previously emitted if it was merely imported or accessed from the :mod:`!collections.abc` module. + (Contributed by Alex Waygood in :gh:`118803`.) * :mod:`hashlib`: @@ -2356,6 +2363,7 @@ New deprecations * Altering :attr:`IMAP4.file ` is now deprecated and slated for removal in Python 3.19. This property is now unused and changing its value does *not* explicitly close the current file. + (Contributed by Bénédikt Tran in :gh:`142307`.) * :mod:`profile`: @@ -2412,6 +2420,7 @@ New deprecations was subclassed or used as the second argument to :func:`isinstance` or :func:`issubclass`, but warnings were not previously emitted if it was merely imported or accessed from the :mod:`!typing` module. + (Contributed by Alex Waygood in :gh:`118803`.) * It is deprecated to call :func:`isinstance` and :func:`issubclass` checks on protocol classes that were not explicitly decorated with :func:`!runtime_checkable` @@ -2540,8 +2549,7 @@ New features * :c:type:`PyCriticalSection` and related functions are added to the Stable ABI. - - (Contributed in :gh:`149227`.) + (Contributed by Petr Viktorin in :gh:`149225`.) * Add a new :c:func:`PyImport_CreateModuleFromInitfunc` C API for creating a module from a *spec* and *initfunc*. @@ -2809,6 +2817,7 @@ Build changes On Windows, use ``build.bat --pymalloc-hugepages``. At runtime, huge pages must be explicitly enabled by setting the :envvar:`PYTHON_PYMALLOC_HUGEPAGES` environment variable to ``1``. + (Contributed by Pablo Galindo Salgado in :gh:`144319`.) * Annotating anonymous mmap usage is now supported if the Linux kernel supports :manpage:`PR_SET_VMA_ANON_NAME ` (Linux 5.17 or newer). @@ -2871,6 +2880,7 @@ that may require changes to your code. * :meth:`mmap.mmap.resize` has been removed on platforms that don't support the underlying syscall, instead of raising a :exc:`SystemError`. + (Contributed by AN Long in :gh:`138205`.) * A resource warning is now emitted for an unclosed :func:`xml.etree.ElementTree.iterparse` iterator if it opened a file. From 248a3fd723fd01cf966649b052837b843c746675 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Thu, 17 Sep 2026 22:03:57 +0300 Subject: [PATCH 05/11] Formatting --- Doc/whatsnew/3.15.rst | 48 +++++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index 99fb5d43e1cbbd..736d5fe2c00d7a 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -254,10 +254,10 @@ as lazy, with the same semantics as the ``lazy`` keyword:: import json # lazy import os # still eager -.. seealso:: :pep:`810` for the full specification and rationale. - (Contributed by Pablo Galindo Salgado and Dino Viehland in :gh:`142349`.) +.. seealso:: :pep:`810` for the full specification and rationale. + .. _whatsnew315-frozendict: @@ -300,10 +300,10 @@ updated to ``isinstance(arg, (dict, frozendict))`` to accept also the :class:`!frozendict` type, or to ``isinstance(arg, collections.abc.Mapping)`` to accept also other mapping types such as :class:`~types.MappingProxyType`. -.. seealso:: :pep:`814` for the full specification and rationale. - (Contributed by Victor Stinner and Donghee Na in :gh:`141510`.) +.. seealso:: :pep:`814` for the full specification and rationale. + .. _whatsnew315-sentinel: @@ -316,7 +316,7 @@ objects preserve identity when copied, support use in type expressions with the ``|`` operator, and can be pickled when they are importable by module and name. -(PEP by Tal Einat; contributed by Jelle Zijlstra in :gh:`148829`.) +(Contributed by Jelle Zijlstra in :gh:`148829`; PEP 661 written by Tal Einat.) .. seealso:: :pep:`661` for further details. @@ -336,10 +336,10 @@ profiling tools under a single, coherent namespace. This module contains: The ``cProfile`` module remains as an alias for backwards compatibility. The :mod:`profile` module is deprecated and will be removed in Python 3.17. -.. seealso:: :pep:`799` for further details. - (Contributed by Pablo Galindo and László Kiss Kollár in :gh:`138122`.) +.. seealso:: :pep:`799` for further details. + .. _whatsnew315-sampling-profiler: @@ -501,9 +501,10 @@ This change also extends to asynchronous generator expressions, such that, for example, ``(*a async for a in agen())`` is equivalent to ``(x async for a in agen() for x in a)``. +(Contributed by Adam Hartz in :gh:`143055`.) + .. seealso:: :pep:`798` for further details. -(Contributed by Adam Hartz in :gh:`143055`.) .. _whatsnew315-startup-files: @@ -611,10 +612,10 @@ In addition, APIs in the ``PyGILState`` family (most notably code will continue to work, but there will be no new ``PyGILState`` APIs in future versions of Python. -.. seealso:: :pep:`788` for further details. - (Contributed by Peter Bierma in :gh:`149101`.) +.. seealso:: :pep:`788` for further details. + .. _whatsnew315-improved-error-messages: @@ -746,13 +747,13 @@ Other language changes the :envvar:`PYTHONUTF8=0 ` environment variable or the :option:`-X utf8=0 <-X>` command-line option. + (Contributed by Adam Turner in :gh:`133711`; PEP 686 written by Inada Naoki.) + .. seealso:: :pep:`686` for further details. .. _UTF-8: https://en.wikipedia.org/wiki/UTF-8 .. _Unicode: https://home.unicode.org/ - (Contributed by Adam Turner in :gh:`133711`; PEP 686 written by Inada Naoki.) - .. _whatsnew315-color-interpreter-help: * The interpreter help (such as ``python --help``) is now in color. @@ -936,7 +937,7 @@ Other language changes 3.13, is no longer set or taken into consideration by the import system or standard library. Use :attr:`__spec__.cached ` instead. - (Contributed by Brett Cannon in :gh:`97879`) + (Contributed by Brett Cannon in :gh:`97879`.) Note that the :attr:`~module.__loader__` and :attr:`~module.__package__` attributes are also deprecated and scheduled for removal. @@ -1299,7 +1300,7 @@ http.server HTTP responses. (Contributed by Anton I. Sipos in :gh:`135057`.) -* Add a ``-H/--header`` option to the :program:`python -m http.server` +* Add a :option:`-H/--header ` option to the :program:`python -m http.server` command-line interface to support custom headers in HTTP responses. (Contributed by Anton I. Sipos in :gh:`135057`.) @@ -1332,7 +1333,7 @@ json :func:`~json.loads` functions: allow a callback for JSON literal array types to customize Python lists in the resulting decoded object. Passing combined :class:`frozendict` to - *object_pairs_hook* param and :class:`tuple` to ``array_hook`` will yield a + *object_pairs_hook* parameter and :class:`tuple` to *array_hook* will yield a deeply nested immutable Python structure representing the JSON data. (Contributed by Joao S. O. Bueno in :gh:`146440`.) @@ -1367,8 +1368,10 @@ mimetypes John Franey in :gh:`144217`, :gh:`145720`, :gh:`140937`, :gh:`139959`, :gh:`145698`, :gh:`145718`, :gh:`145918`, and :gh:`144213`.) + * Rename ``application/x-texinfo`` to ``application/texinfo``. (Contributed by Charlie Lin in :gh:`140165`.) + * Changed the MIME type for ``.ai`` files to ``application/pdf``. (Contributed by Stan Ulbrych in :gh:`141239`.) @@ -1488,6 +1491,7 @@ shelve * Added new :meth:`!reorganize` method to :mod:`shelve` used to recover unused free space previously occupied by deleted entries. (Contributed by Andrea Oliveri in :gh:`134004`.) + * Add support for custom serialization and deserialization functions in the :mod:`shelve` module. (Contributed by Furkan Onder in :gh:`99631`.) @@ -1513,7 +1517,7 @@ sqlite3 * The :ref:`command-line interface ` has several new features: - * SQL keyword completion on . + * SQL keyword completion on :kbd:`Tab`. (Contributed by Long Tan in :gh:`133393`.) .. _whatsnew315-color-sqlite3: @@ -1523,7 +1527,7 @@ sqlite3 details. (Contributed by Stan Ulbrych and Łukasz Langa in :gh:`133461`.) - * Table, index, trigger, view, column, function, and schema completion on . + * Table, index, trigger, view, column, function, and schema completion on :kbd:`Tab`. (Contributed by Long Tan in :gh:`136101`.) @@ -1626,27 +1630,32 @@ tarfile * :func:`~tarfile.data_filter` now normalizes symbolic link targets in order to avoid path traversal attacks. (Contributed by Petr Viktorin in :gh:`127987` and :cve:`2025-4138`.) + * :func:`~tarfile.TarFile.extractall` now skips fixing up directory attributes when a directory was removed or replaced by another kind of file. (Contributed by Petr Viktorin in :gh:`127987` and :cve:`2024-12718`.) + * :func:`~tarfile.TarFile.extract` and :func:`~tarfile.TarFile.extractall` now (re-)apply the extraction filter when substituting a link (hard or symbolic) with a copy of another archive member, and when fixing up directory attributes. The former raises a new exception, :exc:`~tarfile.LinkFallbackError`. (Contributed by Petr Viktorin for :cve:`2025-4330` and :cve:`2024-12718`.) + * :func:`~tarfile.TarFile.extract` and :func:`~tarfile.TarFile.extractall` no longer extract rejected members when :func:`~tarfile.TarFile.errorlevel` is zero. (Contributed by Matt Prodani and Petr Viktorin in :gh:`112887` and :cve:`2025-4435`.) + * :func:`~tarfile.TarFile.extract` and :func:`~tarfile.TarFile.extractall` now replace slashes with backslashes in symlink targets on Windows to prevent creation of corrupted links. (Contributed by Christoph Walcher in :gh:`57911`.) + * :func:`~tarfile.TarFile.gettarinfo` now replaces backslashes with slashes in - symlink targets on Windows to conform to the tar format standard. (Contributed - by Daniele Nicolodi in :gh:`151669`.) + symlink targets on Windows to conform to the tar format standard. + (Contributed by Daniele Nicolodi in :gh:`151669`.) threading @@ -2611,7 +2620,6 @@ New features * :c:func:`PyModule_FromDefAndSpec2` * :c:func:`PyModule_ExecDef` - The slots :c:macro:`Py_tp_bases` and :c:macro:`Py_tp_base` are now equivalent: they can be set either to a single type or a tuple of types. The :c:macro:`Py_tp_bases` slot is preferred; the other is ignored if both From 2e5c746410949606300f3a7d6f635ea900d8adac Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Thu, 17 Sep 2026 22:08:57 +0300 Subject: [PATCH 06/11] Wording --- Doc/whatsnew/3.15.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index 736d5fe2c00d7a..2dcd5549bdf2d2 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -2610,7 +2610,7 @@ New features ``PyModExport`` :ref:`module export hook ` also use the new :c:type:`!PySlot` struct. - These following functions are :term:`soft deprecated`: + The following functions are :term:`soft deprecated`: * :c:func:`PyType_FromSpec` * :c:func:`PyType_FromSpecWithBases` @@ -2752,8 +2752,8 @@ Deprecated C APIs (Contributed by Victor Stinner in :gh:`129813`.) * :c:func:`!_PyObject_CallMethodId`, :c:func:`!_PyObject_GetAttrId` and - :c:func:`!_PyUnicode_FromId` are deprecated since 3.15 and will be removed in - 3.20. Instead, use :c:func:`PyUnicode_InternFromString()` and cache the result in + :c:func:`!_PyUnicode_FromId` are deprecated since Python 3.15 and will be removed in + Python 3.20. Instead, use :c:func:`PyUnicode_InternFromString()` and cache the result in the module state, then call :c:func:`PyObject_CallMethod` or :c:func:`PyObject_GetAttr`. (Contributed by Victor Stinner in :gh:`141049`.) @@ -2771,7 +2771,7 @@ Deprecated C APIs (Contributed by Sergey B Kirpichev in :gh:`128813`.) * :c:member:`~PyConfig.bytes_warning` is deprecated - since 3.15 and will be removed in 3.17. + since Python 3.15 and will be removed in Python 3.17. (Contributed by Nikita Sobolev in :gh:`136355`.) * :c:macro:`!Py_INFINITY` macro is :term:`soft deprecated`, @@ -2797,7 +2797,7 @@ Deprecated C APIs (Contributed by Petr Viktorin in :gh:`146175`.) * :c:macro:`!Py_MATH_El` and :c:macro:`!Py_MATH_PIl` are deprecated - since 3.15 and will be removed in 3.20. + since Python 3.15 and will be removed in Python 3.20. (Contributed by Sergey B Kirpichev in :gh:`141004`.) From ae690e92cfbb0b1e18284896f01154760b245c52 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Thu, 17 Sep 2026 22:09:17 +0300 Subject: [PATCH 07/11] Punctionation --- Doc/whatsnew/3.15.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index 2dcd5549bdf2d2..70633c8b51472a 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -2300,7 +2300,7 @@ Deprecated New deprecations ---------------- -* :mod:`ast` +* :mod:`ast`: * Creating instances of abstract AST nodes (such as :class:`ast.AST` or :class:`!ast.expr`) is deprecated and will raise an error in Python 3.20. @@ -2326,7 +2326,7 @@ New deprecations (Contributed by Nikita Sobolev in :gh:`136355`.) -* :mod:`collections.abc` +* :mod:`collections.abc`: * The following statements now cause ``DeprecationWarning``\ s to be emitted at runtime: @@ -2445,7 +2445,7 @@ New deprecations :class:`!webbrowser.MacOS` and scheduled for removal in Python 3.17. (Contributed by Jeff Lyon in :gh:`137586`.) -* ``__version__`` +* ``__version__``: * The ``__version__``, ``version`` and ``VERSION`` attributes have been deprecated in these standard library modules and will be removed in From 9172915f96b02a224add3245dce042f4715ca340 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Thu, 17 Sep 2026 22:18:26 +0300 Subject: [PATCH 08/11] Don't create hyperlink for Tachyon logo --- Doc/whatsnew/3.15.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index 70633c8b51472a..fa285fa0ce5be8 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -349,6 +349,7 @@ Tachyon: High frequency statistical sampling profiler .. image:: ../../Lib/profiling/sampling/_assets/tachyon-logo.png :alt: Tachyon profiler logo :align: center + :class: no-scaled-link :width: 200px A new statistical sampling profiler (Tachyon) has been added as From a5d7f86c8b995153af1582457477b044ece3752b Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Fri, 18 Sep 2026 10:36:44 +0300 Subject: [PATCH 09/11] Experimental JIT --- Doc/whatsnew/3.15.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index fa285fa0ce5be8..57c0c0a472920c 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -110,7 +110,7 @@ Interpreter improvements: * :pep:`814`: :ref:`Add frozendict built-in type ` * :pep:`829`: :ref:`Package startup configuration files ` -* :ref:`The JIT compiler has been significantly upgraded ` +* :ref:`The experimental JIT compiler has been significantly upgraded ` * :ref:`Improved error messages ` Significant improvements in the standard library: @@ -2025,8 +2025,8 @@ csv .. _whatsnew315-jit: -Upgraded JIT compiler ---------------------- +Upgraded experimental JIT compiler +---------------------------------- Results from the `pyperformance `__ benchmark suite report From a29be31bed69fe3342ac0504df045847268438c0 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Mon, 21 Sep 2026 08:43:22 +0300 Subject: [PATCH 10/11] Apply batched suggestions from code review Co-authored-by: Stan Ulbrych Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> --- Doc/whatsnew/3.15.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Doc/whatsnew/3.15.rst b/Doc/whatsnew/3.15.rst index 57c0c0a472920c..4f482fcc59d90c 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -76,7 +76,7 @@ and a :ref:`stable ABI for free-threaded builds `. The library changes include a new :ref:`profiling package ` with :ref:`Tachyon `, -a high frequency statistical sampling profiler, +a high-frequency statistical sampling profiler, :ref:`more color ` in command-line output, as well as the usual deprecations and removals, and improvements in user-friendliness and correctness. @@ -90,6 +90,7 @@ To understand the complete implementation and design rationale for a change, refer to the PEP for a particular new feature; but note that PEPs usually are not kept up-to-date once a feature has been fully implemented. + See `Porting to Python 3.15`_ for guidance on upgrading from earlier versions of Python. @@ -117,7 +118,7 @@ Significant improvements in the standard library: * :pep:`799`: :ref:`A dedicated profiling package for organizing Python profiling tools ` -* :pep:`799`: :ref:`Tachyon: High frequency statistical sampling profiler +* :pep:`799`: :ref:`Tachyon: High-frequency statistical sampling profiler ` * :ref:`More color ` @@ -2889,7 +2890,7 @@ that may require changes to your code. * :meth:`mmap.mmap.resize` has been removed on platforms that don't support the underlying syscall, instead of raising a :exc:`SystemError`. - (Contributed by AN Long in :gh:`138205`.) + (Contributed by An Long in :gh:`138205`.) * A resource warning is now emitted for an unclosed :func:`xml.etree.ElementTree.iterparse` iterator if it opened a file. From 745157242bba3b94824b17e2a327200043ef1519 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Mon, 21 Sep 2026 08:43:56 +0300 Subject: [PATCH 11/11] Another hyphen --- 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 4f482fcc59d90c..aabc936a24af79 100644 --- a/Doc/whatsnew/3.15.rst +++ b/Doc/whatsnew/3.15.rst @@ -344,7 +344,7 @@ The :mod:`profile` module is deprecated and will be removed in Python 3.17. .. _whatsnew315-sampling-profiler: -Tachyon: High frequency statistical sampling profiler +Tachyon: High-frequency statistical sampling profiler ----------------------------------------------------- .. image:: ../../Lib/profiling/sampling/_assets/tachyon-logo.png