diff --git a/.gitattributes b/.gitattributes
index 823e3e975a23a8..d654721239318e 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -83,6 +83,7 @@ Include/opcode_ids.h generated
Include/token.h generated
Lib/_opcode_metadata.py generated
Lib/keyword.py generated
+Lib/idlelib/help.html generated
Lib/test/certdata/*.pem generated
Lib/test/certdata/*.0 generated
Lib/test/levenshtein_examples.json generated
diff --git a/Doc/c-api/function.rst b/Doc/c-api/function.rst
index 764b2ac610be4d..0bac638957155e 100644
--- a/Doc/c-api/function.rst
+++ b/Doc/c-api/function.rst
@@ -200,7 +200,7 @@ There are a few functions specific to Python functions.
runtime behavior depending on optimization decisions, it does not change
the semantics of the Python code being executed.
- If *event* is ``PyFunction_EVENT_DESTROY``, Taking a reference in the
+ If *event* is ``PyFunction_EVENT_DESTROY``, taking a reference in the
callback to the about-to-be-destroyed function will resurrect it, preventing
it from being freed at this time. When the resurrected object is destroyed
later, any watcher callbacks active at that time will be called again.
diff --git a/Doc/glossary.rst b/Doc/glossary.rst
index c0ca0be304ebe4..a4066d42927f64 100644
--- a/Doc/glossary.rst
+++ b/Doc/glossary.rst
@@ -1025,6 +1025,15 @@ Glossary
applied to all scopes, only those relying on a known set of local
and nonlocal variable names are restricted to optimized scopes.
+ optional module
+ An :term:`extension module` that is part of the :term:`standard library`,
+ but may be absent in some builds of :term:`CPython`,
+ usually due to missing third-party libraries or because the module
+ is not available for a given platform.
+
+ See :ref:`optional-module-requirements` for a list of optional modules
+ that require third-party libraries.
+
package
A Python :term:`module` which can contain submodules or recursively,
subpackages. Technically, a package is a Python module with a
diff --git a/Doc/howto/free-threading-extensions.rst b/Doc/howto/free-threading-extensions.rst
index 3776132c685414..5647ab2d87c79c 100644
--- a/Doc/howto/free-threading-extensions.rst
+++ b/Doc/howto/free-threading-extensions.rst
@@ -203,7 +203,7 @@ Memory Allocation APIs
Python's memory management C API provides functions in three different
:ref:`allocation domains `: "raw", "mem", and "object".
For thread-safety, the free-threaded build requires that only Python objects
-are allocated using the object domain, and that all Python object are
+are allocated using the object domain, and that all Python objects are
allocated using that domain. This differs from the prior Python versions,
where this was only a best practice and not a hard requirement.
@@ -344,12 +344,12 @@ This means you cannot rely on nested critical sections to lock multiple objects
at once, as the inner critical section may suspend the outer ones. Instead, use
:c:macro:`Py_BEGIN_CRITICAL_SECTION2` to lock two objects simultaneously.
-Note that the locks described above are only :c:type:`!PyMutex` based locks.
+Note that the locks described above are only :c:type:`PyMutex` based locks.
The critical section implementation does not know about or affect other locking
mechanisms that might be in use, like POSIX mutexes. Also note that while
-blocking on any :c:type:`!PyMutex` causes the critical sections to be
+blocking on any :c:type:`PyMutex` causes the critical sections to be
suspended, only the mutexes that are part of the critical sections are
-released. If :c:type:`!PyMutex` is used without a critical section, it will
+released. If :c:type:`PyMutex` is used without a critical section, it will
not be released and therefore does not get the same deadlock avoidance.
Important Considerations
@@ -397,7 +397,8 @@ The wheels, shared libraries, and binaries are indicated by a ``t`` suffix.
* `pypa/manylinux `_ supports the
free-threaded build, with the ``t`` suffix, such as ``python3.13t``.
* `pypa/cibuildwheel `_ supports the
- free-threaded build if you set
+ free-threaded build on Python 3.13 and 3.14. On Python 3.14, free-threaded
+ wheels will be built by default. On Python 3.13, you will need to set
`CIBW_ENABLE to cpython-freethreading `_.
Limited C API and Stable ABI
diff --git a/Doc/howto/free-threading-python.rst b/Doc/howto/free-threading-python.rst
index 24069617c47ae1..e4df7a787a2b17 100644
--- a/Doc/howto/free-threading-python.rst
+++ b/Doc/howto/free-threading-python.rst
@@ -116,12 +116,14 @@ after the main thread is running. The following objects are immortalized:
* :ref:`classes ` (type objects)
Because immortal objects are never deallocated, applications that create many
-objects of these types may see increased memory usage. This is expected to be
-addressed in the 3.14 release.
+objects of these types may see increased memory usage under Python 3.13. This
+has been addressed in the 3.14 release, where the aforementioned objects use
+deferred reference counting to avoid reference count contention.
Additionally, numeric and string literals in the code as well as strings
-returned by :func:`sys.intern` are also immortalized. This behavior is
-expected to remain in the 3.14 free-threaded build.
+returned by :func:`sys.intern` are also immortalized in the 3.13 release. This
+behavior is part of the 3.14 release as well and it is expected to remain in
+future free-threaded builds.
Frame objects
@@ -150,11 +152,12 @@ compared to the default GIL-enabled build. In 3.13, this overhead is about
40% on the `pyperformance `_ suite.
Programs that spend most of their time in C extensions or I/O will see
less of an impact. The largest impact is because the specializing adaptive
-interpreter (:pep:`659`) is disabled in the free-threaded build. We expect
-to re-enable it in a thread-safe way in the 3.14 release. This overhead is
-expected to be reduced in upcoming Python release. We are aiming for an
-overhead of 10% or less on the pyperformance suite compared to the default
-GIL-enabled build.
+interpreter (:pep:`659`) is disabled in the free-threaded build.
+
+The specializing adaptive interpreter has been re-enabled in a thread-safe way
+in the 3.14 release. The performance penalty on single-threaded code in
+free-threaded mode is now roughly 5-10%, depending on the platform and C
+compiler used.
Behavioral changes
diff --git a/Doc/includes/optional-module.rst b/Doc/includes/optional-module.rst
new file mode 100644
index 00000000000000..262e73f2eaa09f
--- /dev/null
+++ b/Doc/includes/optional-module.rst
@@ -0,0 +1,9 @@
+This is an :term:`optional module`.
+If it is missing from your copy of CPython,
+look for documentation from your distributor (that is,
+whoever provided Python to you).
+If you are the distributor, see :ref:`optional-module-requirements`.
+
+.. Similar notes appear in the docs of the modules:
+ - zipfile
+ - tarfile
diff --git a/Doc/library/asyncio.rst b/Doc/library/asyncio.rst
index 444db01390d922..0f72e31dee5f1d 100644
--- a/Doc/library/asyncio.rst
+++ b/Doc/library/asyncio.rst
@@ -79,6 +79,10 @@ You can experiment with an ``asyncio`` concurrent context in the :term:`REPL`:
>>> await asyncio.sleep(10, result='hello')
'hello'
+This REPL provides limited compatibility with :envvar:`PYTHON_BASIC_REPL`.
+It is recommended that the default REPL is used
+for full functionality and the latest features.
+
.. audit-event:: cpython.run_stdin "" ""
.. versionchanged:: 3.12.5 (also 3.11.10, 3.10.15, 3.9.20, and 3.8.20)
diff --git a/Doc/library/bz2.rst b/Doc/library/bz2.rst
index ebe2e43febaefa..12650861c0fb5d 100644
--- a/Doc/library/bz2.rst
+++ b/Doc/library/bz2.rst
@@ -25,6 +25,8 @@ The :mod:`bz2` module contains:
* The :func:`compress` and :func:`decompress` functions for one-shot
(de)compression.
+.. include:: ../includes/optional-module.rst
+
(De)compression of files
------------------------
diff --git a/Doc/library/compression.zstd.rst b/Doc/library/compression.zstd.rst
index a901403621b84f..89b6fe540f5ba7 100644
--- a/Doc/library/compression.zstd.rst
+++ b/Doc/library/compression.zstd.rst
@@ -33,6 +33,8 @@ The :mod:`!compression.zstd` module contains:
* The :class:`CompressionParameter`, :class:`DecompressionParameter`, and
:class:`Strategy` classes for setting advanced (de)compression parameters.
+.. include:: ../includes/optional-module.rst
+
Exceptions
----------
diff --git a/Doc/library/ctypes.rst b/Doc/library/ctypes.rst
index d8dac24c8ab532..9c0b246c095483 100644
--- a/Doc/library/ctypes.rst
+++ b/Doc/library/ctypes.rst
@@ -14,6 +14,8 @@
data types, and allows calling functions in DLLs or shared libraries. It can be
used to wrap these libraries in pure Python.
+.. include:: ../includes/optional-module.rst
+
.. _ctypes-ctypes-tutorial:
diff --git a/Doc/library/curses.rst b/Doc/library/curses.rst
index e60197ddd89adb..057d338edda92a 100644
--- a/Doc/library/curses.rst
+++ b/Doc/library/curses.rst
@@ -23,6 +23,8 @@ Linux and the BSD variants of Unix.
.. include:: ../includes/wasm-mobile-notavail.rst
+.. include:: ../includes/optional-module.rst
+
.. note::
Whenever the documentation mentions a *character* it can be specified
diff --git a/Doc/library/ensurepip.rst b/Doc/library/ensurepip.rst
index fa102c4a080103..165b9a9f823154 100644
--- a/Doc/library/ensurepip.rst
+++ b/Doc/library/ensurepip.rst
@@ -30,6 +30,8 @@ when creating a virtual environment) or after explicitly uninstalling
needed to bootstrap ``pip`` are included as internal parts of the
package.
+.. include:: ../includes/optional-module.rst
+
.. seealso::
:ref:`installing-index`
diff --git a/Doc/library/gzip.rst b/Doc/library/gzip.rst
index 4bdcec66088db2..cb36be42a83f12 100644
--- a/Doc/library/gzip.rst
+++ b/Doc/library/gzip.rst
@@ -11,6 +11,8 @@
This module provides a simple interface to compress and decompress files just
like the GNU programs :program:`gzip` and :program:`gunzip` would.
+.. include:: ../includes/optional-module.rst
+
The data compression is provided by the :mod:`zlib` module.
The :mod:`gzip` module provides the :class:`GzipFile` class, as well as the
diff --git a/Doc/library/idle.rst b/Doc/library/idle.rst
index e547c96b580bfd..52e3726a0f5af5 100644
--- a/Doc/library/idle.rst
+++ b/Doc/library/idle.rst
@@ -13,7 +13,7 @@ IDLE --- Python editor and shell
single: Integrated Development Environment
..
- Remember to update Lib/idlelib/help.html with idlelib.help.copy_source() when modifying this file.
+ Remember to update Lib/idlelib/help.html with idlelib.help.copy_strip() when modifying this file.
--------------
@@ -37,6 +37,10 @@ IDLE has the following features:
* configuration, browsers, and other dialogs
+The IDLE application is implemented in the :mod:`idlelib` package.
+
+.. include:: ../includes/optional-module.rst
+
Menus
-----
@@ -88,7 +92,7 @@ Save
Save As...
Save the current window with a Save As dialog. The file saved becomes the
- new associated file for the window. (If your file namager is set to hide
+ new associated file for the window. (If your file manager is set to hide
extensions, the current extension will be omitted in the file name box.
If the new filename has no '.', '.py' and '.txt' will be added for Python
and text files, except that on macOS Aqua,'.py' is added for all files.)
@@ -206,7 +210,7 @@ New Indent Width
Strip Trailing Whitespace
Remove trailing space and other whitespace characters after the last
- non-whitespace character of a line by applying str.rstrip to each line,
+ non-whitespace character of a line by applying :meth:`str.rstrip` to each line,
including lines within multiline strings. Except for Shell windows,
remove extra newlines at the end of the file.
diff --git a/Doc/library/lzma.rst b/Doc/library/lzma.rst
index 69f7cb8d48d7ae..8a4f68f3502521 100644
--- a/Doc/library/lzma.rst
+++ b/Doc/library/lzma.rst
@@ -23,6 +23,8 @@ module. Note that :class:`LZMAFile` and :class:`bz2.BZ2File` are *not*
thread-safe, so if you need to use a single :class:`LZMAFile` instance
from multiple threads, it is necessary to protect it with a lock.
+.. include:: ../includes/optional-module.rst
+
.. exception:: LZMAError
diff --git a/Doc/library/readline.rst b/Doc/library/readline.rst
index f649fce5efc377..75db832c546b64 100644
--- a/Doc/library/readline.rst
+++ b/Doc/library/readline.rst
@@ -26,6 +26,8 @@ Readline library in general.
.. include:: ../includes/wasm-mobile-notavail.rst
+.. include:: ../includes/optional-module.rst
+
.. note::
The underlying Readline library API may be implemented by
diff --git a/Doc/library/sqlite3.rst b/Doc/library/sqlite3.rst
index 9d56e81dee10d5..3b1a9c2f6eefe9 100644
--- a/Doc/library/sqlite3.rst
+++ b/Doc/library/sqlite3.rst
@@ -31,7 +31,9 @@ PostgreSQL or Oracle.
The :mod:`!sqlite3` module was written by Gerhard Häring. It provides an SQL interface
compliant with the DB-API 2.0 specification described by :pep:`249`, and
-requires SQLite 3.15.2 or newer.
+requires the third-party `SQLite `_ library.
+
+.. include:: ../includes/optional-module.rst
This document includes four main sections:
diff --git a/Doc/library/ssl.rst b/Doc/library/ssl.rst
index e0d85c852fa655..fa0a5234720422 100644
--- a/Doc/library/ssl.rst
+++ b/Doc/library/ssl.rst
@@ -18,8 +18,9 @@
This module provides access to Transport Layer Security (often known as "Secure
Sockets Layer") encryption and peer authentication facilities for network
sockets, both client-side and server-side. This module uses the OpenSSL
-library. It is available on all modern Unix systems, Windows, macOS, and
-probably additional platforms, as long as OpenSSL is installed on that platform.
+library.
+
+.. include:: ../includes/optional-module.rst
.. note::
diff --git a/Doc/library/tarfile.rst b/Doc/library/tarfile.rst
index c4614bf28a4aea..5ff8502bbe219f 100644
--- a/Doc/library/tarfile.rst
+++ b/Doc/library/tarfile.rst
@@ -21,6 +21,14 @@ Some facts and figures:
* reads and writes :mod:`gzip`, :mod:`bz2`, :mod:`compression.zstd`, and
:mod:`lzma` compressed archives if the respective modules are available.
+ ..
+ The following paragraph should be similar to ../includes/optional-module.rst
+
+ If any of these :term:`optional modules ` are missing from
+ your copy of CPython, look for documentation from your distributor (that is,
+ whoever provided Python to you).
+ If you are the distributor, see :ref:`optional-module-requirements`.
+
* read/write support for the POSIX.1-1988 (ustar) format.
* read/write support for the GNU tar format including *longname* and *longlink*
diff --git a/Doc/library/tkinter.rst b/Doc/library/tkinter.rst
index 22e08c45d01ef9..81177533be84c9 100644
--- a/Doc/library/tkinter.rst
+++ b/Doc/library/tkinter.rst
@@ -36,6 +36,8 @@ details that are unchanged.
Most documentation you will find online still uses the old API and
can be woefully outdated.
+.. include:: ../includes/optional-module.rst
+
.. seealso::
* `TkDocs `_
diff --git a/Doc/library/turtle.rst b/Doc/library/turtle.rst
index b687231bd489cc..58b99e0d44173a 100644
--- a/Doc/library/turtle.rst
+++ b/Doc/library/turtle.rst
@@ -29,6 +29,8 @@ introduced in Logo `_, developed by Wally Feurzeig, Seymour Papert and Cynthia Solomon
in 1967.
+.. include:: ../includes/optional-module.rst
+
Get started
===========
diff --git a/Doc/library/zipfile.rst b/Doc/library/zipfile.rst
index f6ec33640b60d2..5a8bbc8c1aedf7 100644
--- a/Doc/library/zipfile.rst
+++ b/Doc/library/zipfile.rst
@@ -23,6 +23,16 @@ decryption of encrypted files in ZIP archives, but it currently cannot
create an encrypted file. Decryption is extremely slow as it is
implemented in native Python rather than C.
+..
+ The following paragraph should be similar to ../includes/optional-module.rst
+
+Handling compressed archives requires :term:`optional modules `
+such as :mod:`zlib`, :mod:`bz2`, :mod:`lzma`, and :mod:`compression.zstd`.
+If any of them are missing from your copy of CPython,
+look for documentation from your distributor (that is,
+whoever provided Python to you).
+If you are the distributor, see :ref:`optional-module-requirements`.
+
The module defines the following items:
.. exception:: BadZipFile
diff --git a/Doc/library/zlib.rst b/Doc/library/zlib.rst
index b961f7113d3686..ce0a22b9456d0b 100644
--- a/Doc/library/zlib.rst
+++ b/Doc/library/zlib.rst
@@ -8,9 +8,9 @@
--------------
For applications that require data compression, the functions in this module
-allow compression and decompression, using the zlib library. The zlib library
-has its own home page at https://www.zlib.net. zlib 1.2.2.1 is the minium
-supported version.
+allow compression and decompression, using the `zlib library `_.
+
+.. include:: ../includes/optional-module.rst
zlib's functions have many options and often need to be used in a particular
order. This documentation doesn't attempt to cover all of the permutations;
diff --git a/Doc/using/configure.rst b/Doc/using/configure.rst
index 1f773a3a547c2b..cdadbe51417499 100644
--- a/Doc/using/configure.rst
+++ b/Doc/using/configure.rst
@@ -4,10 +4,13 @@ Configure Python
.. highlight:: sh
+
+.. _build-requirements:
+
Build Requirements
==================
-Features and minimum versions required to build CPython:
+To build CPython, you will need:
* A `C11 `_ compiler. `Optional C11
features
@@ -22,83 +25,136 @@ Features and minimum versions required to build CPython:
* Support for threads.
-To build optional modules:
-
-* `libbz2 `_ for the :mod:`bz2` module.
-
-* `libb2 `_ (:ref:`BLAKE2 `)
- for the :mod:`hashlib` module.
-
-* `libffi `_ 3.3.0 is the recommended
- minimum version for the :mod:`ctypes` module.
-
-* ``liblzma`` for the :mod:`lzma` module.
-
-* `libmpdec `_ 2.5.0
- for the :mod:`decimal` module.
-
-* ``libncurses`` or ``libncursesw`` for the :mod:`curses` module.
-
-* ``libpanel`` or ``libpanelw`` for the :mod:`curses.panel` module.
-
-* `libreadline `_ or
- `libedit `_
- for the :mod:`readline` module.
-
-* `libuuid `_ for the :mod:`uuid` module.
-
-* `OpenSSL `_ 1.1.1 is the minimum version and
- OpenSSL 3.0.18 is the recommended minimum version for the
- :mod:`ssl` and :mod:`hashlib` extension modules.
+.. versionchanged:: 3.5
+ On Windows, Visual Studio 2015 or later is now required.
-* `SQLite `_ 3.15.2 for the :mod:`sqlite3` extension module.
+.. versionchanged:: 3.6
+ Selected C99 features, like ```` and ``static inline`` functions,
+ are now required.
-* `Tcl/Tk `_ 8.5.12 for the :mod:`tkinter` module.
+.. versionchanged:: 3.7
+ Thread support is now required.
-* `zlib `_ 1.2.2.1 is the minimum version for the
- :mod:`zlib` module.
+.. versionchanged:: 3.11
+ C11 compiler, IEEE 754 and NaN support are now required.
+ On Windows, Visual Studio 2017 or later is required.
-* `zstd `_ 1.4.5 is the minimum version for
- the :mod:`compression.zstd` module.
+See also :pep:`7` "Style Guide for C Code" and :pep:`11` "CPython platform
+support".
-For a full list of dependencies required to build all modules and how to install
-them, see the
-`devguide `_.
-* Autoconf 2.72 and aclocal 1.16.5 are required to regenerate the
- :file:`configure` script.
+.. _optional-module-requirements:
+
+Requirements for optional modules
+---------------------------------
+
+Some :term:`optional modules ` of the standard library
+require third-party libraries installed for development
+(for example, header files must be available).
+
+Missing requirements are reported in the ``configure`` output.
+Modules that are missing due to missing dependencies are listed near the end
+of the ``make`` output,
+sometimes using an internal name, for example, ``_ctypes`` for :mod:`ctypes`
+module.
+
+If you distribute a CPython interpreter without optional modules,
+it's best practice to advise users, who generally expect that
+standard library modules are available.
+
+Dependencies to build optional modules are:
+
+.. list-table::
+ :header-rows: 1
+ :align: left
+
+ * - Dependency
+ - Minimum version
+ - Python module
+ * - `libbz2 `_
+ -
+ - :mod:`bz2`
+ * - `libffi `_
+ - 3.3.0 recommended
+ - :mod:`ctypes`
+ * - `liblzma `_
+ -
+ - :mod:`lzma`
+ * - `libmpdec `_
+ - 2.5.0
+ - :mod:`decimal` [1]_
+ * - `libreadline `_ or
+ `libedit `_ [2]_
+ -
+ - :mod:`readline`
+ * - `libuuid `_
+ -
+ - ``_uuid`` [3]_
+ * - `ncurses `_ [4]_
+ -
+ - :mod:`curses`
+ * - `OpenSSL `_
+ - | 3.0.18 recommended
+ | (1.1.1 minimum)
+ - :mod:`ssl`, :mod:`hashlib` [5]_
+ * - `SQLite `_
+ - 3.15.2
+ - :mod:`sqlite3`
+ * - `Tcl/Tk `_
+ - 8.5.12
+ - :mod:`tkinter`, :ref:`IDLE `, :mod:`turtle`
+ * - `zlib `_
+ - 1.2.2.1
+ - :mod:`zlib`, :mod:`gzip`, :mod:`ensurepip`
+ * - `zstd `_
+ - 1.4.5
+ - :mod:`compression.zstd`
+
+.. [1] If *libmpdec* is not available, the :mod:`decimal` module will use
+ a pure-Python implementation.
+ See :option:`--with-system-libmpdec` for details.
+.. [2] See :option:`--with-readline` for choosing the backend for the
+ :mod:`readline` module.
+.. [3] The :mod:`uuid` module uses ``_uuid`` to generate "safe" UUIDs.
+ See the module documentation for details.
+.. [4] The :mod:`curses` module requires the ``libncurses`` or ``libncursesw``
+ library.
+ The :mod:`curses.panel` module additionally requires the ``libpanel`` or
+ ``libpanelw`` library.
+.. [5] If OpenSSL is not available, the :mod:`hashlib` module will use
+ bundled implementations of several hash functions.
+ See :option:`--with-builtin-hashlib-hashes` for *forcing* usage of OpenSSL.
+
+Note that the table does not include all optional modules; in particular,
+platform-specific modules like :mod:`winreg` are not listed here.
+
+.. seealso::
+
+ * The `devguide `_
+ includes a full list of dependencies required to build all modules and
+ instructions on how to install them on common platforms.
+ * :option:`--with-system-expat` allows building with an external
+ `libexpat `_ library.
+ * :ref:`configure-options-for-dependencies`
.. versionchanged:: 3.1
- Tcl/Tk version 8.3.1 is now required.
+ Tcl/Tk version 8.3.1 is now required for :mod:`tkinter`.
.. versionchanged:: 3.5
- On Windows, Visual Studio 2015 or later is now required.
- Tcl/Tk version 8.4 is now required.
-
-.. versionchanged:: 3.6
- Selected C99 features are now required, like ```` and ``static
- inline`` functions.
+ Tcl/Tk version 8.4 is now required for :mod:`tkinter`.
.. versionchanged:: 3.7
- Thread support and OpenSSL 1.0.2 are now required.
+ OpenSSL 1.0.2 is now required for :mod:`hashlib` and :mod:`ssl`.
.. versionchanged:: 3.10
- OpenSSL 1.1.1 is now required.
- Require SQLite 3.7.15.
+ OpenSSL 1.1.1 is now required for :mod:`hashlib` and :mod:`ssl`.
+ SQLite 3.7.15 is now required for :mod:`sqlite3`.
.. versionchanged:: 3.11
- C11 compiler, IEEE 754 and NaN support are now required.
- On Windows, Visual Studio 2017 or later is required.
- Tcl/Tk version 8.5.12 is now required for the :mod:`tkinter` module.
+ Tcl/Tk version 8.5.12 is now required for :mod:`tkinter`.
.. versionchanged:: 3.13
- Autoconf 2.71, aclocal 1.16.5 and SQLite 3.15.2 are now required.
-
-.. versionchanged:: 3.14
- Autoconf 2.72 is now required.
-
-See also :pep:`7` "Style Guide for C Code" and :pep:`11` "CPython platform
-support".
+ SQLite 3.15.2 is now required for :mod:`sqlite3`.
Generated files
@@ -127,8 +183,19 @@ The container is optional, the following command can be run locally::
autoreconf -ivf -Werror
-The generated files can change depending on the exact ``autoconf-archive``,
-``aclocal`` and ``pkg-config`` versions.
+The generated files can change depending on the exact versions of the
+tools used.
+The container that CPython uses has
+`Autoconf `_ 2.72,
+``aclocal`` from `Automake `_ 1.16.5,
+and `pkg-config `_ 1.8.1.
+
+.. versionchanged:: 3.13
+ Autoconf 2.71 and aclocal 1.16.5 and are now used to regenerate
+ :file:`configure`.
+
+.. versionchanged:: 3.14
+ Autoconf 2.72 is now used to regenerate :file:`configure`.
.. _configure-options:
@@ -409,6 +476,8 @@ Linker options
Name for machine-dependent library files.
+.. _configure-options-for-dependencies:
+
Options for third-party dependencies
------------------------------------
@@ -431,12 +500,6 @@ Options for third-party dependencies
C compiler and linker flags for ``gdbm``.
-.. option:: LIBB2_CFLAGS
-.. option:: LIBB2_LIBS
-
- C compiler and linker flags for ``libb2`` (:ref:`BLAKE2 `),
- used by :mod:`hashlib` module, overriding ``pkg-config``.
-
.. option:: LIBEDIT_CFLAGS
.. option:: LIBEDIT_LIBS
@@ -902,6 +965,13 @@ Libraries options
.. versionchanged:: 3.13
Default to using the installed ``mpdecimal`` library.
+ .. versionchanged:: 3.15
+
+ A bundled copy of the library will no longer be selected
+ implicitly if an installed ``mpdecimal`` library is not found.
+ In Python 3.15 only, it can still be selected explicitly using
+ ``--with-system-libmpdec=no`` or ``--without-system-libmpdec``.
+
.. deprecated-removed:: 3.13 3.16
A copy of the ``mpdecimal`` library sources will no longer be distributed
with Python 3.16.
diff --git a/Doc/using/unix.rst b/Doc/using/unix.rst
index 9ec4e3419321a4..a9950ef7525497 100644
--- a/Doc/using/unix.rst
+++ b/Doc/using/unix.rst
@@ -84,11 +84,17 @@ On FreeBSD and OpenBSD
Building Python
===============
+.. seealso::
+
+ If you want to contribute to CPython, refer to the
+ `devguide `_,
+ which includes build instructions and other tips on setting up environment.
+
If you want to compile CPython yourself, first thing you should do is get the
`source `_. You can download either the
-latest release's source or just grab a fresh `clone
-`_. (If you want
-to contribute patches, you will need a clone.)
+latest release's source or grab a fresh `clone
+`_.
+You will also need to install the :ref:`build requirements `.
The build process consists of the usual commands::
diff --git a/Lib/idlelib/News3.txt b/Lib/idlelib/News3.txt
index 30784578cc637f..53d83762f99ec5 100644
--- a/Lib/idlelib/News3.txt
+++ b/Lib/idlelib/News3.txt
@@ -4,6 +4,9 @@ Released on 2025-10-07
=========================
+gh-129873: Simplify displaying the IDLE doc by only copying the text
+section of idle.html to idlelib/help.html. Patch by Stan Ulbrych.
+
gh-112936: IDLE - Include Shell menu in single-process mode,
though with Restart Shell and View Last Restart disabled.
Patch by Zhikang Yan.
@@ -26,9 +29,6 @@ Released on 2024-10-07
gh-120104: Fix padding in config and search dialog windows in IDLE.
-gh-129873: Simplify displaying the IDLE doc by only copying the text
-section of idle.html to idlelib/help.html. Patch by Stan Ulbrych.
-
gh-120083: Add explicit black IDLE Hovertip foreground color needed for
recent macOS. Fixes Sonoma showing unreadable white on pale yellow.
Patch by John Riggles.
diff --git a/Lib/idlelib/help.html b/Lib/idlelib/help.html
index ebff9a309d9081..fc618ab727d1fb 100644
--- a/Lib/idlelib/help.html
+++ b/Lib/idlelib/help.html
@@ -53,7 +53,7 @@ File menu (Shell and Editor) to each line,
including lines within multiline strings. Except for Shell windows,
remove extra newlines at the end of the file.
@@ -337,16 +337,16 @@ Key bindings