]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.14] GH-123299: Copyedit 3.14 What's New: New and Improved Modules (GH-139530)...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Sat, 4 Oct 2025 13:45:35 +0000 (15:45 +0200)
committerGitHub <noreply@github.com>
Sat, 4 Oct 2025 13:45:35 +0000 (16:45 +0300)
GH-123299: Copyedit 3.14 What's New: New and Improved Modules (GH-139530)
(cherry picked from commit c33dc154b4d219a696f3fbe8965a38907c371780)

Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
Doc/library/compression.rst
Doc/whatsnew/3.14.rst

index 618b4a3c2bd1705ff7a3e7713901493f23d39fad..98719be9992acc49105c2f0f3c971ef072c31392 100644 (file)
@@ -1,6 +1,8 @@
 The :mod:`!compression` package
 ===============================
 
+.. module:: compression
+
 .. versionadded:: 3.14
 
 The :mod:`!compression` package contains the canonical compression modules
index b460c0463370784de61be2f885125382a7fd1b95..f14d727f4aabaf03cc24e9d8530316cc887aee9b 100644 (file)
@@ -1212,10 +1212,30 @@ Default interactive shell
 New modules
 ===========
 
-* :mod:`annotationlib`: For introspecting :term:`annotations <annotation>`.
-  See :pep:`749` for more details.
+* :mod:`annotationlib`:
+  For introspecting :term:`annotations <annotation>`.
+  See :ref:`PEP 749 <whatsnew314-pep649>` for more details.
   (Contributed by Jelle Zijlstra in :gh:`119180`.)
 
+* :mod:`compression` (including :mod:`compression.zstd`):
+  A package for compression-related modules,
+  including a new module to support the Zstandard compression format.
+  See :ref:`PEP 784 <whatsnew314-pep784>` for more details.
+  (Contributed by Emma Harper Smith, Adam Turner, Gregory P. Smith, Tomas Roun,
+  Victor Stinner, and Rogdham in :gh:`132983`.)
+
+* :mod:`concurrent.interpreters`:
+  Support for multiple interpreters in the standard library.
+  See :ref:`PEP 734 <whatsnew314-pep734>` for more details.
+  (Contributed by Eric Snow in :gh:`134939`.)
+
+* :mod:`string.templatelib`:
+  Support for template string literals (t-strings).
+  See :ref:`PEP 750 <whatsnew314-pep750>` for more details.
+  (Contributed by Jim Baker, Guido van Rossum, Paul Everitt, Koudai Aono,
+  Lysandros Nikolaou, Dave Peck, Adam Turner, Jelle Zijlstra, Bénédikt Tran,
+  and Pablo Galindo Salgado in :gh:`132661`.)
+
 
 Improved modules
 ================
@@ -1233,7 +1253,7 @@ argparse
   and subparser names if mistyped by the user.
   (Contributed by Savannah Ostrowski in :gh:`124456`.)
 
-  .. _whatsnew314-color-argparse:
+.. _whatsnew314-color-argparse:
 
 * Enable color for help text, which can be disabled with the optional *color*
   parameter to :class:`argparse.ArgumentParser`.
@@ -1245,7 +1265,7 @@ argparse
 ast
 ---
 
-* Add :func:`ast.compare` for comparing two ASTs.
+* Add :func:`~ast.compare`, a function for comparing two ASTs.
   (Contributed by Batuhan Taskaya and Jeremy Hylton in :gh:`60191`.)
 
 * Add support for :func:`copy.replace` for AST nodes.
@@ -1254,15 +1274,17 @@ ast
 * Docstrings are now removed from an optimized AST in optimization level 2.
   (Contributed by Irit Katriel in :gh:`123958`.)
 
-* The ``repr()`` output for AST nodes now includes more information.
+* The :func:`repr` output for AST nodes now includes more information.
   (Contributed by Tomas Roun in :gh:`116022`.)
 
-* :func:`ast.parse`, when called with an AST as input, now always verifies
-  that the root node type is appropriate.
+* When called with an AST as input, the :func:`~ast.parse` function
+  now always verifies that the root node type is appropriate.
   (Contributed by Irit Katriel in :gh:`130139`.)
 
-* Add new ``--feature-version``, ``--optimize``, ``--show-empty`` options to
-  the command-line interface.
+* Add new options to the command-line interface:
+  :option:`--feature-version <ast --feature-version>`,
+  :option:`--optimize <ast --optimize>`, and
+  :option:`--show-empty <ast --show-empty>`.
   (Contributed by Semyon Moroz in :gh:`133367`.)
 
 
@@ -1281,20 +1303,23 @@ asyncio
   :meth:`asyncio.create_task`,
   :meth:`asyncio.loop.create_task`,
   :meth:`asyncio.TaskGroup.create_task`.
+
   (Contributed by Thomas Grainger in :gh:`128307`.)
 
 * There are two new utility functions for
   introspecting and printing a program's call graph:
   :func:`~asyncio.capture_call_graph` and :func:`~asyncio.print_call_graph`.
+  See :ref:`Asyncio introspection capabilities
+  <whatsnew314-asyncio-introspection>` for more details.
   (Contributed by Yury Selivanov, Pablo Galindo Salgado, and Łukasz Langa
   in :gh:`91048`.)
 
 
-  .. _whatsnew314-color-calendar:
-
 calendar
 --------
 
+.. _whatsnew314-color-calendar:
+
 * By default, today's date is highlighted in color in :mod:`calendar`'s
   :ref:`command-line <calendar-cli>` text output.
   This can be controlled by :ref:`environment variables
@@ -1307,10 +1332,14 @@ concurrent.futures
 
 .. _whatsnew314-concurrent-futures-interp-pool:
 
-* Add :class:`~concurrent.futures.InterpreterPoolExecutor`,
-  which exposes "subinterpreters" (multiple Python interpreters in the
-  same process) to Python code.  This is separate from the proposed API
-  in :pep:`734`.
+* Add a new executor class, :class:`~concurrent.futures.InterpreterPoolExecutor`,
+  which exposes multiple Python interpreters in the same process
+  ('subinterpreters') to Python code.
+  This uses a pool of independent Python interpreters to execute calls
+  asynchronously.
+
+  This is separate from the new :mod:`~concurrent.interpreters` module
+  introduced by :ref:`PEP 734 <whatsnew314-pep734>`.
   (Contributed by Eric Snow in :gh:`124548`.)
 
 .. _whatsnew314-concurrent-futures-start-method:
@@ -1334,31 +1363,36 @@ concurrent.futures
 
   (Contributed by Gregory P. Smith in :gh:`84559`.)
 
-* Add :meth:`concurrent.futures.ProcessPoolExecutor.terminate_workers` and
-  :meth:`concurrent.futures.ProcessPoolExecutor.kill_workers` as
-  ways to terminate or kill all living worker processes in the given pool.
+* Add two new methods to :class:`~concurrent.futures.ProcessPoolExecutor`,
+  :meth:`~concurrent.futures.ProcessPoolExecutor.terminate_workers`
+  and :meth:`~concurrent.futures.ProcessPoolExecutor.kill_workers`,
+  as ways to terminate or kill all living worker processes in the given pool.
   (Contributed by Charles Machalow in :gh:`130849`.)
 
-* Add the optional ``buffersize`` parameter to
-  :meth:`concurrent.futures.Executor.map` to limit the number of submitted
+* Add the optional *buffersize* parameter to :meth:`Executor.map
+  <concurrent.futures.Executor.map>` to limit the number of submitted
   tasks whose results have not yet been yielded. If the buffer is full,
   iteration over the *iterables* pauses until a result is yielded from the
   buffer.
   (Contributed by Enzo Bonnal and Josh Rosenberg in :gh:`74028`.)
 
+
 configparser
 ------------
 
-* Security fix: will no longer write config files it cannot read. Attempting
-  to :meth:`configparser.ConfigParser.write` keys containing delimiters or
-  beginning with the section header pattern will raise a
-  :class:`configparser.InvalidWriteError`.
+* :mod:`!configparser` will no longer write config files it cannot read,
+  to improve security.
+  Attempting to :meth:`~configparser.ConfigParser.write` keys containing
+  delimiters or beginning with the section header pattern will raise an
+  :class:`~configparser.InvalidWriteError`.
   (Contributed by Jacob Lincoln in :gh:`129270`.)
 
+
 contextvars
 -----------
 
-* Support context manager protocol by :class:`contextvars.Token`.
+* Support the :term:`context manager` protocol
+  for :class:`~contextvars.Token` objects.
   (Contributed by Andrew Svetlov in :gh:`129889`.)
 
 
@@ -1366,8 +1400,8 @@ ctypes
 ------
 
 * The layout of :ref:`bit fields <ctypes-bit-fields-in-structures-unions>`
-  in :class:`~ctypes.Structure` and :class:`~ctypes.Union`
-  now matches platform defaults (GCC/Clang or MSVC) more closely.
+  in :class:`~ctypes.Structure` and :class:`~ctypes.Union` objects
+  is now a closer match to platform defaults (GCC/Clang or MSVC).
   In particular, fields no longer overlap.
   (Contributed by Matthias Görgens in :gh:`97702`.)
 
@@ -1386,7 +1420,7 @@ ctypes
 * On Windows, the :func:`~ctypes.CopyComPointer` function is now public.
   (Contributed by Jun Komoda in :gh:`127275`.)
 
-* :func:`ctypes.memoryview_at` now exists to create a
+* Add :func:`~ctypes.memoryview_at`, a function to create a
   :class:`memoryview` object that refers to the supplied pointer and
   length. This works like :func:`ctypes.string_at` except it avoids a
   buffer copy, and is typically useful when implementing pure Python
@@ -1394,7 +1428,7 @@ ctypes
   (Contributed by Rian Hunter in :gh:`112018`.)
 
 * Complex types, :class:`~ctypes.c_float_complex`,
-  :class:`~ctypes.c_double_complex` and :class:`~ctypes.c_longdouble_complex`,
+  :class:`~ctypes.c_double_complex`, and :class:`~ctypes.c_longdouble_complex`,
   are now available if both the compiler and the ``libffi`` library support
   complex C types.
   (Contributed by Sergey B Kirpichev in :gh:`61103`.)
@@ -1404,50 +1438,57 @@ ctypes
   (Contributed by Brian Ward in :gh:`119349`.)
 
 * Move :func:`ctypes.POINTER` types cache from a global internal cache
-  (``_pointer_type_cache``) to the :attr:`ctypes._CData.__pointer_type__`
-  attribute of the corresponding :mod:`ctypes` types.
+  (``_pointer_type_cache``) to the :attr:`_CData.__pointer_type__
+  <ctypes._CData.__pointer_type__>` attribute of the corresponding
+  :mod:`!ctypes` types.
   This will stop the cache from growing without limits in some situations.
   (Contributed by Sergey Miryanov in :gh:`100926`.)
 
-* The :class:`ctypes.py_object` type now supports subscription,
+* The :class:`~ctypes.py_object` type now supports subscription,
   making it a :term:`generic type`.
   (Contributed by Brian Schubert in :gh:`132168`.)
 
-* :mod:`ctypes` now supports :term:`free-threading builds <free threading>`.
+* :mod:`!ctypes` now supports :term:`free-threading builds <free threading>`.
   (Contributed by Kumar Aditya and Peter Bierma in :gh:`127945`.)
 
+
 curses
 ------
 
 * Add the :func:`~curses.assume_default_colors` function,
   a refinement of the :func:`~curses.use_default_colors` function which
-  allows to change the color pair ``0``.
+  allows changing the color pair ``0``.
   (Contributed by Serhiy Storchaka in :gh:`133139`.)
 
+
 datetime
 --------
 
-* Add :meth:`datetime.time.strptime` and :meth:`datetime.date.strptime`.
+* Add the :meth:`~datetime.date.strptime` method to the
+  :class:`datetime.date` and :class:`datetime.time` classes.
   (Contributed by Wannes Boeykens in :gh:`41431`.)
 
+
 decimal
 -------
 
-* Add alternative :class:`~decimal.Decimal` constructor
-  :meth:`Decimal.from_number() <decimal.Decimal.from_number>`.
+* Add :meth:`.Decimal.from_number` as an alternative constructor for
+  :class:`~decimal.Decimal`.
   (Contributed by Serhiy Storchaka in :gh:`121798`.)
 
-* Expose :func:`decimal.IEEEContext` to support creation of contexts
+* Expose :func:`~decimal.IEEEContext` to support creation of contexts
   corresponding to the IEEE 754 (2008) decimal interchange formats.
   (Contributed by Sergey B Kirpichev in :gh:`53032`.)
 
+
 difflib
 -------
 
 * Comparison pages with highlighted changes generated by the
-  :class:`difflib.HtmlDiff` class now support dark mode.
+  :class:`~difflib.HtmlDiff` class now support 'dark mode'.
   (Contributed by Jiahao Li in :gh:`129939`.)
 
+
 dis
 ---
 
@@ -1472,7 +1513,7 @@ dis
 errno
 -----
 
-* Add :data:`errno.EHWPOISON` error code.
+* Add the :data:`~errno.EHWPOISON` error code constant.
   (Contributed by James Roy in :gh:`126585`.)
 
 
@@ -1480,39 +1521,43 @@ faulthandler
 ------------
 
 * Add support for printing the C stack trace on systems that
-  :ref:`support it <c-stack-compatibility>` via :func:`faulthandler.dump_c_stack`
-  or via the *c_stack* argument in :func:`faulthandler.enable`.
+  :ref:`support it <c-stack-compatibility>` via the new
+  :func:`~faulthandler.dump_c_stack` function or via the *c_stack* argument
+  in :func:`faulthandler.enable`.
   (Contributed by Peter Bierma in :gh:`127604`.)
 
 
 fnmatch
 -------
 
-* Added :func:`fnmatch.filterfalse` for excluding names matching a pattern.
+* Add :func:`~fnmatch.filterfalse`, a function to reject names
+  matching a given pattern.
   (Contributed by Bénédikt Tran in :gh:`74598`.)
 
 
 fractions
 ---------
 
-* Add support for converting any objects that have the
-  :meth:`!as_integer_ratio` method to a :class:`~fractions.Fraction`.
+* A :class:`~fractions.Fraction` object may now be constructed from any
+  object with the :meth:`!as_integer_ratio` method.
   (Contributed by Serhiy Storchaka in :gh:`82017`.)
 
-* Add alternative :class:`~fractions.Fraction` constructor
-  :meth:`Fraction.from_number() <fractions.Fraction.from_number>`.
+* Add :meth:`.Fraction.from_number` as an alternative constructor for
+  :class:`~fractions.Fraction`.
   (Contributed by Serhiy Storchaka in :gh:`121797`.)
 
 
 functools
 ---------
 
-* Add support to :func:`functools.partial` and
-  :func:`functools.partialmethod` for :data:`functools.Placeholder` sentinels
-  to reserve a place for positional arguments.
+* Add the :data:`~functools.Placeholder` sentinel.
+  This may be used with the :func:`~functools.partial`
+  or :func:`~functools.partialmethod` functions to reserve a place
+  for positional arguments in the returned :ref:`partial object
+  <partial-objects>`.
   (Contributed by Dominykas Grigonis in :gh:`119127`.)
 
-* Allow the *initial* parameter of :func:`functools.reduce` to be passed
+* Allow the *initial* parameter of :func:`~functools.reduce` to be passed
   as a keyword argument.
   (Contributed by Sayandip Dutta in :gh:`125916`.)
 
@@ -1530,16 +1575,17 @@ getopt
 getpass
 -------
 
-* Support keyboard feedback by :func:`getpass.getpass` via the keyword-only
-  optional argument ``echo_char``. Placeholder characters are rendered whenever
-  a character is entered, and removed when a character is deleted.
+* Support keyboard feedback in the :func:`~getpass.getpass` function via
+  the keyword-only optional argument *echo_char*.
+  Placeholder characters are rendered whenever a character is entered,
+  and removed when a character is deleted.
   (Contributed by Semyon Moroz in :gh:`77065`.)
 
 
 graphlib
 --------
 
-* Allow :meth:`graphlib.TopologicalSorter.prepare` to be called more than once
+* Allow :meth:`.TopologicalSorter.prepare` to be called more than once
   as long as sorting has not started.
   (Contributed by Daniel Pope in :gh:`130914`.)
 
@@ -1547,13 +1593,14 @@ graphlib
 heapq
 -----
 
-* Add functions for working with max-heaps:
+* The :mod:`!heapq` module has improved support for working with max-heaps,
+  via the following new functions:
 
-  * :func:`heapq.heapify_max`,
-  * :func:`heapq.heappush_max`,
-  * :func:`heapq.heappop_max`,
-  * :func:`heapq.heapreplace_max`
-  * :func:`heapq.heappushpop_max`
+  * :func:`~heapq.heapify_max`
+  * :func:`~heapq.heappush_max`
+  * :func:`~heapq.heappop_max`
+  * :func:`~heapq.heapreplace_max`
+  * :func:`~heapq.heappushpop_max`
 
 
 hmac
@@ -1578,9 +1625,12 @@ http
   the command-line interface (``python -m http.server``) through the following
   options:
 
-  * ``--tls-cert <path>``: Path to the TLS certificate file.
-  * ``--tls-key <path>``: Optional path to the private key file.
-  * ``--tls-password-file <path>``: Optional path to the password file for the private key.
+  * :option:`--tls-cert \<path\> <http.server --tls-cert>`:
+    Path to the TLS certificate file.
+  * :option:`--tls-key \<path\> <http.server --tls-key>`:
+    Optional path to the private key file.
+  * :option:`--tls-password-file \<path\> <http.server --tls-password-file>`:
+    Optional path to the password file for the private key.
 
   (Contributed by Semyon Moroz in :gh:`85162`.)
 
@@ -1588,7 +1638,7 @@ http
 imaplib
 -------
 
-* Add :meth:`IMAP4.idle() <imaplib.IMAP4.idle>`, implementing the IMAP4
+* Add :meth:`.IMAP4.idle`, implementing the IMAP4
   ``IDLE`` command as defined in :rfc:`2177`.
   (Contributed by Forest in :gh:`55454`.)
 
@@ -1596,15 +1646,16 @@ imaplib
 inspect
 -------
 
-* :func:`inspect.signature` takes a new argument *annotation_format* to control
+* :func:`~inspect.signature` takes a new argument *annotation_format* to control
   the :class:`annotationlib.Format` used for representing annotations.
   (Contributed by Jelle Zijlstra in :gh:`101552`.)
 
-* :meth:`inspect.Signature.format` takes a new argument *unquote_annotations*.
-  If true, string :term:`annotations <annotation>` are displayed without surrounding quotes.
+* :meth:`.Signature.format` takes a new argument *unquote_annotations*.
+  If true, string :term:`annotations <annotation>` are displayed without
+  surrounding quotes.
   (Contributed by Jelle Zijlstra in :gh:`101552`.)
 
-* Add function :func:`inspect.ispackage` to determine whether an object is a
+* Add function :func:`~inspect.ispackage` to determine whether an object is a
   :term:`package` or not.
   (Contributed by Zhikang Yan in :gh:`125634`.)
 
@@ -1616,7 +1667,7 @@ io
   :exc:`BlockingIOError` if the operation cannot immediately return bytes.
   (Contributed by Giovanni Siragusa in :gh:`109523`.)
 
-* Add protocols :class:`io.Reader` and :class:`io.Writer` as simpler
+* Add the :class:`~io.Reader` and :class:`~io.Writer` protocols as simpler
   alternatives to the pseudo-protocols :class:`typing.IO`,
   :class:`typing.TextIO`, and :class:`typing.BinaryIO`.
   (Contributed by Sebastian Rittau in :gh:`127648`.)
@@ -1625,16 +1676,18 @@ io
 json
 ----
 
-* Add notes for JSON serialization errors that allow to identify the source
-  of the error.
+* Add exception notes for JSON serialization errors that allow
+  identifying the source of the error.
   (Contributed by Serhiy Storchaka in :gh:`122163`.)
 
-* Enable the :mod:`json` module to work as a script using the :option:`-m`
-  switch: :program:`python -m json`.
+* Allow using the :mod:`json` module as a script using the :option:`-m` switch:
+  :program:`python -m json`.
+  This is now preferred to :program:`python -m json.tool`,
+  which is :term:`soft deprecated`.
   See the :ref:`JSON command-line interface <json-commandline>` documentation.
   (Contributed by Trey Hunner in :gh:`122873`.)
 
-  .. _whatsnew314-color-json:
+.. _whatsnew314-color-json:
 
 * By default, the output of the :ref:`JSON command-line interface
   <json-commandline>` is highlighted in color.
@@ -1642,18 +1695,19 @@ json
   <using-on-controlling-color>`.
   (Contributed by Tomas Roun in :gh:`131952`.)
 
+
 linecache
 ---------
 
-* :func:`linecache.getline` can retrieve source code for frozen modules.
+* :func:`~linecache.getline` can now retrieve source code for frozen modules.
   (Contributed by Tian Gao in :gh:`131638`.)
 
 
 logging.handlers
 ----------------
 
-* :class:`logging.handlers.QueueListener` now implements the context
-  manager protocol, allowing it to be used in a :keyword:`with` statement.
+* :class:`~logging.handlers.QueueListener` objects now support the
+  :term:`context manager` protocol.
   (Contributed by Charles Machalow in :gh:`132106`.)
 
 * :meth:`QueueListener.start <logging.handlers.QueueListener.start>` now
@@ -1671,14 +1725,13 @@ math
 mimetypes
 ---------
 
-* Document the command-line for :mod:`mimetypes`.
-  It now exits with ``1`` on failure instead of ``0``
-  and ``2`` on incorrect command-line parameters instead of ``1``.
-  Also, errors are printed to stderr instead of stdout and their text is made
-  tighter.
+* Add a public :ref:`command-line <mimetypes-cli>` for the module,
+  invoked via :program:`python -m mimetypes`.
   (Contributed by Oleg Iarygin and Hugo van Kemenade in :gh:`93096`.)
 
-* Add MS and :rfc:`8081` MIME types for fonts:
+* Add several new MIME types based on RFCs and common usage:
+
+  .. rubric:: Microsoft and :rfc:`8081` MIME types for fonts
 
   * Embedded OpenType: ``application/vnd.ms-fontobject``
   * OpenType Layout (OTF) ``font/otf``
@@ -1686,18 +1739,14 @@ mimetypes
   * WOFF 1.0 ``font/woff``
   * WOFF 2.0 ``font/woff2``
 
-  (Contributed by Sahil Prajapati and Hugo van Kemenade in :gh:`84852`.)
-
-* Add :rfc:`9559` MIME types for Matroska audiovisual data container
-  structures, containing:
+  .. rubric:: :rfc:`9559` MIME types for Matroska audiovisual
+              data container structures
 
   * audio with no video: ``audio/matroska`` (``.mka``)
   * video: ``video/matroska`` (``.mkv``)
   * stereoscopic video: ``video/matroska-3d`` (``.mk3d``)
 
-  (Contributed by Hugo van Kemenade in :gh:`89416`.)
-
-* Add MIME types for images with RFCs:
+  .. rubric:: Images with RFCs
 
   * :rfc:`1494`: CCITT Group 3 (``.g3``)
   * :rfc:`3362`: Real-time Facsimile, T.38 (``.t38``)
@@ -1706,9 +1755,7 @@ mimetypes
   * :rfc:`4047`: Flexible Image Transport System (``.fits``)
   * :rfc:`7903`: Enhanced Metafile (``.emf``) and Windows Metafile (``.wmf``)
 
-  (Contributed by Hugo van Kemenade in :gh:`85957`.)
-
-* More MIME type changes:
+  .. rubric:: Other MIME type additions and changes
 
   * :rfc:`2361`: Change type for ``.avi`` to ``video/vnd.avi``
     and for ``.wav`` to ``audio/vnd.wave``
@@ -1716,6 +1763,8 @@ mimetypes
   * :rfc:`5334`: Add Ogg media (``.oga``, ``.ogg`` and ``.ogx``)
   * :rfc:`6713`: Add gzip ``application/gzip`` (``.gz``)
   * :rfc:`9639`: Add FLAC ``audio/flac`` (``.flac``)
+  * :rfc:`9512` ``application/yaml`` MIME type for YAML files (``.yaml``
+    and ``.yml``)
   * Add 7z ``application/x-7z-compressed`` (``.7z``)
   * Add Android Package ``application/vnd.android.package-archive`` (``.apk``)
     when not strict
@@ -1738,11 +1787,9 @@ mimetypes
   * `W3C <https://www.w3.org/TR/epub-33/#app-media-type>`__:
     Add EPUB ``application/epub+zip`` (``.epub``)
 
-  (Contributed by Hugo van Kemenade in :gh:`129965`.)
-
-* Add :rfc:`9512` ``application/yaml`` MIME type for YAML files (``.yaml``
-  and ``.yml``). (Contributed by Sasha "Nelie" Chernykh and Hugo van Kemenade
-  in :gh:`132056`.)
+  (Contributed by Sahil Prajapati and Hugo van Kemenade in :gh:`84852`,
+  by Sasha "Nelie" Chernykh and Hugo van Kemenade in :gh:`132056`,
+  and by Hugo van Kemenade in :gh:`89416`, :gh:`85957`, and :gh:`129965`.)
 
 
 multiprocessing
@@ -1758,8 +1805,8 @@ multiprocessing
   <multiprocessing-start-method-spawn>` remains the default start method.
 
   If the threading incompatible *fork* method is required, you must explicitly
-  request it via a context from :func:`multiprocessing.get_context` (preferred)
-  or change the default via :func:`multiprocessing.set_start_method`.
+  request it via a context from :func:`~multiprocessing.get_context` (preferred)
+  or change the default via :func:`~multiprocessing.set_start_method`.
 
   See :ref:`forkserver restrictions <multiprocessing-programming-forkserver>`
   for information and differences with the *fork* method and how this change
@@ -1768,7 +1815,7 @@ multiprocessing
 
   (Contributed by Gregory P. Smith in :gh:`84559`.)
 
-* :mod:`multiprocessing`'s ``"forkserver"`` start method now authenticates
+* :mod:`multiprocessing`'s ``'forkserver'`` start method now authenticates
   its control socket to avoid solely relying on filesystem permissions
   to restrict what other processes could cause the forkserver to spawn workers
   and run code.
@@ -1784,20 +1831,22 @@ multiprocessing
   (Contributed by Roy Hyunjin Han for :gh:`103134`.)
 
 * Add support for shared :class:`set` objects via
-  :meth:`SyncManager.set() <multiprocessing.managers.SyncManager.set>`.
-  The :func:`set` in :func:`multiprocessing.Manager` method is now available.
+  :meth:`.SyncManager.set`.
+  The :func:`set` in :func:`~multiprocessing.Manager` method is now available.
   (Contributed by Mingyu Park in :gh:`129949`.)
 
-* Add :func:`multiprocessing.Process.interrupt` which terminates the child
+* Add the :meth:`~multiprocessing.Process.interrupt`
+  to :class:`multiprocessing.Process` objects, which terminates the child
   process by sending :py:const:`~signal.SIGINT`. This enables
   :keyword:`finally` clauses to print a stack trace for the terminated
   process. (Contributed by Artem Pulkin in :gh:`131913`.)
 
+
 operator
 --------
 
-* Two new functions :func:`operator.is_none` and :func:`operator.is_not_none`
-  have been added, such that ``operator.is_none(obj)`` is equivalent
+* Add :func:`~operator.is_none` and :func:`~operator.is_not_none` as a pair
+  of functions, such that ``operator.is_none(obj)`` is equivalent
   to ``obj is None`` and ``operator.is_not_none(obj)`` is equivalent
   to ``obj is not None``.
   (Contributed by Raymond Hettinger and Nico Mexis in :gh:`115808`.)
@@ -1806,17 +1855,17 @@ operator
 os
 --
 
-* Add the :func:`os.reload_environ` function to update :data:`os.environ` and
+* Add the :func:`~os.reload_environ` function to update :data:`os.environ` and
   :data:`os.environb` with changes to the environment made by
   :func:`os.putenv`, by :func:`os.unsetenv`, or made outside Python in the
   same process.
   (Contributed by Victor Stinner in :gh:`120057`.)
 
 * Add the :data:`~os.SCHED_DEADLINE` and :data:`~os.SCHED_NORMAL` constants
-  to the :mod:`os` module.
+  to the :mod:`!os` module.
   (Contributed by James Roy in :gh:`127688`.)
 
-* Add the :func:`os.readinto` function to read into a
+* Add the :func:`~os.readinto` function to read into a
   :ref:`buffer object <bufferobjects>` from a file descriptor.
   (Contributed by Cody Maloney in :gh:`129205`.)
 
@@ -1824,8 +1873,8 @@ os
 os.path
 -------
 
-* The *strict* parameter to :func:`os.path.realpath` accepts a new value,
-  :data:`os.path.ALLOW_MISSING`.
+* The *strict* parameter to :func:`~os.path.realpath` accepts a new value,
+  :data:`~os.path.ALLOW_MISSING`.
   If used, errors other than :exc:`FileNotFoundError` will be re-raised;
   the resulting path can be missing but it will be free of symlinks.
   (Contributed by Petr Viktorin for :cve:`2025-4517`.)
@@ -1844,8 +1893,8 @@ pathlib
 
   (Contributed by Barney Gale in :gh:`73991`.)
 
-* Add :attr:`pathlib.Path.info` attribute, which stores an object
-  implementing the :class:`pathlib.types.PathInfo` protocol (also new). The
+* Add the :attr:`~pathlib.Path.info` attribute, which stores an object
+  implementing the new :class:`pathlib.types.PathInfo` protocol. The
   object supports querying the file type and internally caching
   :func:`~os.stat` results. Path objects generated by
   :meth:`~pathlib.Path.iterdir` are initialized with file type information
@@ -1856,7 +1905,7 @@ pathlib
 pdb
 ---
 
-* Hardcoded breakpoints (:func:`breakpoint` and :func:`pdb.set_trace`) now
+* Hardcoded breakpoints (:func:`breakpoint` and :func:`~pdb.set_trace`) now
   reuse the most recent :class:`~pdb.Pdb` instance that calls
   :meth:`~pdb.Pdb.set_trace`, instead of creating a new one each time.
   As a result, all the instance specific data like :pdbcmd:`display` and
@@ -1906,15 +1955,16 @@ pickle
 * Set the default protocol version on the :mod:`pickle` module to 5.
   For more details, see :ref:`pickle protocols <pickle-protocols>`.
 
-* Add notes for pickle serialization errors that allow to identify the source
-  of the error.
+* Add exception notes for pickle serialization errors that allow
+  identifying the source of the error.
   (Contributed by Serhiy Storchaka in :gh:`122213`.)
 
 
 platform
 --------
 
-* Add :func:`platform.invalidate_caches` to invalidate the cached results.
+* Add :func:`~platform.invalidate_caches`, a function to invalidate
+  cached results in the :mod:`!platform` module.
   (Contributed by Bénédikt Tran in :gh:`122549`.)
 
 
@@ -1934,8 +1984,8 @@ re
   unlike ``\Z``, which has subtly different behavior.
   (Contributed by Serhiy Storchaka in :gh:`133306`.)
 
-* ``\B`` in :mod:`regular expression <re>` now matches the empty input string.
-  Now it is always the opposite of ``\b``.
+* ``\B`` in :mod:`regular expression <re>` now matches the empty input string,
+  meaning that it is now always the opposite of ``\b``.
   (Contributed by Serhiy Storchaka in :gh:`124130`.)
 
 
@@ -1965,11 +2015,12 @@ socket
   * Add many new constants.
     (Contributed by Serhiy Storchaka in :gh:`132734`.)
 
+
 ssl
 ---
 
-* Indicate through :data:`ssl.HAS_PHA` whether the :mod:`ssl` module supports
-  TLSv1.3 post-handshake client authentication (PHA).
+* Indicate through the :data:`~ssl.HAS_PHA` Boolean whether the :mod:`!ssl`
+  module supports TLSv1.3 post-handshake client authentication (PHA).
   (Contributed by Will Childs-Klein in :gh:`128036`.)
 
 
@@ -1985,7 +2036,7 @@ struct
 symtable
 --------
 
-* Expose the following :class:`symtable.Symbol` methods:
+* Expose the following :class:`~symtable.Symbol` methods:
 
   * :meth:`~symtable.Symbol.is_comp_cell`
   * :meth:`~symtable.Symbol.is_comp_iter`
@@ -2000,28 +2051,41 @@ sys
 * The previously undocumented special function :func:`sys.getobjects`,
   which only exists in specialized builds of Python, may now return objects
   from other interpreters than the one it's called in.
+  (Contributed by Eric Snow in :gh:`125286`.)
 
 * Add :func:`sys._is_immortal` for determining if an object is :term:`immortal`.
   (Contributed by Peter Bierma in :gh:`128509`.)
 
-* On FreeBSD, :data:`sys.platform` doesn't contain the major version anymore.
+* On FreeBSD, :data:`sys.platform` no longer contains the major version number.
   It is always ``'freebsd'``, instead of ``'freebsd13'`` or ``'freebsd14'``.
+  (Contributed by Michael Osipov in :gh:`129393`.)
 
 * Raise :exc:`DeprecationWarning` for :func:`sys._clear_type_cache`. This
   function was deprecated in Python 3.13 but it didn't raise a runtime warning.
 
+* Add :func:`sys.remote_exec` to implement the new external debugger interface.
+  See :ref:`PEP 768 <whatsnew314-pep768>` for details.
+  (Contributed by Pablo Galindo Salgado, Matt Wozniski, and Ivona Stojanovic
+  in :gh:`131591`.)
+
+* Add the :data:`sys._jit` namespace, containing utilities for introspecting
+  just-in-time compilation.
+  (Contributed by Brandt Bucher in :gh:`133231`.)
+
 
 sys.monitoring
 --------------
 
-* Two new events are added: :monitoring-event:`BRANCH_LEFT` and
-  :monitoring-event:`BRANCH_RIGHT`. The ``BRANCH`` event is deprecated.
+* Add two new monitoring events, :monitoring-event:`BRANCH_LEFT` and
+  :monitoring-event:`BRANCH_RIGHT`.
+  These replace and deprecate the :monitoring-event:`!BRANCH` event.
+  (Contributed by Mark Shannon in :gh:`122548`.)
 
 
 sysconfig
 ---------
 
-* Add ``ABIFLAGS`` key to :func:`sysconfig.get_config_vars` on Windows.
+* Add ``ABIFLAGS`` key to :func:`~sysconfig.get_config_vars` on Windows.
   (Contributed by Xuehai Pan in :gh:`131799`.)
 
 
@@ -2031,15 +2095,18 @@ 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.
@@ -2059,17 +2126,18 @@ tkinter
 -------
 
 * Make :mod:`tkinter` widget methods :meth:`!after` and :meth:`!after_idle`
-  accept arguments passed by keyword.
+  accept keyword arguments.
   (Contributed by Zhikang Yan in :gh:`126899`.)
 
-* Add ability to specify name for :class:`!tkinter.OptionMenu` and
+* Add ability to specify name for :class:`!tkinter.OptionMenu` and
   :class:`!tkinter.ttk.OptionMenu`.
   (Contributed by Zhikang Yan in :gh:`130482`.)
 
+
 turtle
 ------
 
-* Add context managers for :func:`turtle.fill`, :func:`turtle.poly`
+* Add context managers for :func:`turtle.fill`, :func:`turtle.poly`,
   and :func:`turtle.no_animation`.
   (Contributed by Marie Roald and Yngve Mardal Moe in :gh:`126350`.)
 
@@ -2087,44 +2155,59 @@ typing
 
 .. _whatsnew314-typing-union:
 
-* :class:`types.UnionType` and :class:`typing.Union` are now aliases for each other,
-  meaning that both old-style unions (created with ``Union[int, str]``) and new-style
-  unions (``int | str``) now create instances of the same runtime type. This unifies
-  the behavior between the two syntaxes, but leads to some differences in behavior that
+* The :class:`types.UnionType` and :class:`typing.Union` types are now
+  aliases for each other, meaning that both old-style unions
+  (created with ``Union[int, str]``) and new-style unions (``int | str``)
+  now create instances of the same runtime type. This unifies the behavior
+  between the two syntaxes, but leads to some differences in behavior that
   may affect users who introspect types at runtime:
 
-  - Both syntaxes for creating a union now produce the same string representation in
-    ``repr()``. For example, ``repr(Union[int, str])``
-    is now ``"int | str"`` instead of ``"typing.Union[int, str]"``.
-  - Unions created using the old syntax are no longer cached. Previously, running
-    ``Union[int, str]`` multiple times would return the same object
-    (``Union[int, str] is Union[int, str]`` would be ``True``), but now it will
-    return two different objects. Users should use ``==`` to compare unions for equality, not
-    ``is``. New-style unions have never been cached this way.
-    This change could increase memory usage for some programs that use a large number of
-    unions created by subscripting ``typing.Union``. However, several factors offset this cost:
-    unions used in annotations are no longer evaluated by default in Python 3.14
-    because of :pep:`649`; an instance of :class:`types.UnionType` is
-    itself much smaller than the object returned by ``Union[]`` was on prior Python
-    versions; and removing the cache also saves some space. It is therefore
-    unlikely that this change will cause a significant increase in memory usage for most
-    users.
+  - Both syntaxes for creating a union now produce the same string
+    representation in :func:`repr`.
+    For example, ``repr(Union[int, str])`` is now ``"int | str"`` instead of
+    ``"typing.Union[int, str]"``.
+
+  - Unions created using the old syntax are no longer cached.
+    Previously, running ``Union[int, str]`` multiple times would return
+    the same object (``Union[int, str] is Union[int, str]`` would be ``True``),
+    but now it will return two different objects.
+    Use ``==`` to compare unions for equality, not ``is``.
+    New-style unions have never been cached this way.
+    This change could increase memory usage for some programs that use
+    a large number of unions created by subscripting ``typing.Union``.
+    However, several factors offset this cost:
+    unions used in annotations are no longer evaluated by default in Python
+    3.14 because of :pep:`649`; an instance of :class:`types.UnionType` is
+    itself much smaller than the object returned by ``Union[]`` was on prior
+    Python versions; and removing the cache also saves some space.
+    It is therefore unlikely that this change will cause a significant increase
+    in memory usage for most users.
+
   - Previously, old-style unions were implemented using the private class
-    ``typing._UnionGenericAlias``. This class is no longer needed for the implementation,
-    but it has been retained for backward compatibility, with removal scheduled for Python
-    3.17. Users should use documented introspection helpers like :func:`typing.get_origin`
-    and :func:`typing.get_args` instead of relying on private implementation details.
-  - It is now possible to use :class:`typing.Union` itself in :func:`isinstance` checks.
-    For example, ``isinstance(int | str, typing.Union)`` will return ``True``; previously
-    this raised :exc:`TypeError`.
-  - The ``__args__`` attribute of :class:`typing.Union` objects is no longer writable.
-  - It is no longer possible to set any attributes on :class:`typing.Union` objects.
+    ``typing._UnionGenericAlias``.
+    This class is no longer needed for the implementation,
+    but it has been retained for backward compatibility,
+    with removal scheduled for Python 3.17.
+    Users should use documented introspection helpers like
+    :func:`~typing.get_origin` and :func:`typing.get_args` instead of
+    relying on private implementation details.
+
+  - It is now possible to use :class:`typing.Union` itself in
+    :func:`isinstance` checks.
+    For example, ``isinstance(int | str, typing.Union)`` will return ``True``;
+    previously this raised :exc:`TypeError`.
+
+  - The :attr:`!__args__` attribute of :class:`typing.Union` objects is
+    no longer writable.
+
+  - It is no longer possible to set any attributes on :class:`~typing.Union`
+    objects.
     This only ever worked for dunder attributes on previous versions, was never
     documented to work, and was subtly broken in many cases.
 
   (Contributed by Jelle Zijlstra in :gh:`105499`.)
 
-* :class:`typing.TypeAliasType` now supports star unpacking.
+* :class:`~typing.TypeAliasType` now supports star unpacking.
 
 
 unicodedata
@@ -2133,11 +2216,11 @@ unicodedata
 * The Unicode database has been updated to Unicode 16.0.0.
 
 
-.. _whatsnew314-color-unittest:
-
 unittest
 --------
 
+.. _whatsnew314-color-unittest:
+
 * :mod:`unittest` output is now colored by default.
   This can be controlled by :ref:`environment variables
   <using-on-controlling-color>`.
@@ -2175,7 +2258,7 @@ urllib
 * Improve ergonomics and standards compliance when parsing and emitting
   ``file:`` URLs.
 
-  In :func:`urllib.request.url2pathname`:
+  In :func:`~urllib.request.url2pathname`:
 
   - Accept a complete URL when the new *require_scheme* argument is set to
     true.
@@ -2186,7 +2269,7 @@ urllib
   - Raise :exc:`~urllib.error.URLError` if a URL authority isn't local,
     except on Windows where we return a UNC path as before.
 
-  In :func:`urllib.request.pathname2url`:
+  In :func:`~urllib.request.pathname2url`:
 
   - Return a complete URL when the new *add_scheme* argument is set to true.
   - Include an empty URL authority when a path begins with a slash. For
@@ -2202,16 +2285,17 @@ urllib
 uuid
 ----
 
-* Add support for UUID versions 6, 7, and 8 via :func:`uuid.uuid6`,
-  :func:`uuid.uuid7`, and :func:`uuid.uuid8` respectively, as specified
+* Add support for UUID versions 6, 7, and 8 via :func:`~uuid.uuid6`,
+  :func:`~uuid.uuid7`, and :func:`~uuid.uuid8` respectively, as specified
   in :rfc:`9562`.
   (Contributed by Bénédikt Tran in :gh:`89083`.)
 
-* :const:`uuid.NIL` and :const:`uuid.MAX` are now available to represent the
+* :const:`~uuid.NIL` and :const:`~uuid.MAX` are now available to represent the
   Nil and Max UUID formats as defined by :rfc:`9562`.
   (Contributed by Nick Pope in :gh:`128427`.)
 
-* Allow to generate multiple UUIDs at once via :option:`python -m uuid --count <uuid --count>`.
+* Allow generating multiple UUIDs simultaneously on the command-line via
+  :option:`python -m uuid --count <uuid --count>`.
   (Contributed by Simon Legner in :gh:`131236`.)
 
 
@@ -2229,14 +2313,13 @@ webbrowser
 zipfile
 -------
 
-* Added :func:`ZipInfo._for_archive <zipfile.ZipInfo._for_archive>`
+* Added :meth:`ZipInfo._for_archive <zipfile.ZipInfo._for_archive>`, a method
   to resolve suitable defaults for a :class:`~zipfile.ZipInfo` object
   as used by :func:`ZipFile.writestr <zipfile.ZipFile.writestr>`.
   (Contributed by Bénédikt Tran in :gh:`123424`.)
 
-* :meth:`zipfile.ZipFile.writestr` now respects ``SOURCE_DATE_EPOCH`` that
-  distributions can set centrally and have build tools consume this in order
-  to produce reproducible output.
+* :meth:`.ZipFile.writestr` now respects the :envvar:`SOURCE_DATE_EPOCH`
+  environment variable in order to better support reproducible builds.
   (Contributed by Jiahao Li in :gh:`91279`.)
 
 
@@ -2256,17 +2339,18 @@ Optimizations
   (Contributed by Adam Turner, Bénédikt Tran, Chris Markiewicz, Eli Schwartz,
   Hugo van Kemenade, Jelle Zijlstra, and others in :gh:`118761`.)
 
-* The interpreter avoids some reference count modifications internally when
-  it's safe to do so. This can lead to different values returned from
-  :func:`sys.getrefcount` and :c:func:`Py_REFCNT` compared to previous versions
-  of Python.  See :ref:`below <whatsnew314-refcount>` for details.
+* The interpreter now avoids some reference count modifications internally
+  when it's safe to do so.
+  This can lead to different values being returned from :func:`sys.getrefcount`
+  and :c:func:`Py_REFCNT` compared to previous versions of Python.
+  See :ref:`below <whatsnew314-refcount>` for details.
 
 
 asyncio
 -------
 
-* Standard benchmark results have improved by 10-20%, following the
-  implementation of a new per-thread double linked list
+* Standard benchmark results have improved by 10-20% following the
+  implementation of a new per-thread doubly linked list
   for :class:`native tasks <asyncio.Task>`,
   also reducing memory usage.
   This enables external introspection tools such as
@@ -3265,6 +3349,16 @@ Changes in the Python API
   with annotations should continue to work, some undocumented details may behave
   differently.
 
+* As part of making the :mod:`mimetypes` CLI public,
+  it now exits with ``1`` on failure instead of ``0``
+  and ``2`` on incorrect command-line parameters instead of ``1``.
+  Error messages are now printed to stderr.
+
+* The ``\B`` pattern in regular expression now matches the empty string
+  when given as the entire pattern, which may cause behavioural changes.
+
+* On FreeBSD, :data:`sys.platform` no longer contains the major version number.
+
 
 Changes in the C API
 --------------------