Skip to content

Commit a1bae33

Browse files
CAM-Gerlachmiss-islington
authored andcommitted
pythongh-95913: Edit, link and sort 3.11 WhatsNew Build section (pythonGH-98588)
(cherry picked from commit e81fad6) Co-authored-by: C.A.M. Gerlach <[email protected]>
1 parent ae68a45 commit a1bae33

File tree

1 file changed

+67
-57
lines changed

1 file changed

+67
-57
lines changed

Doc/whatsnew/3.11.rst

Lines changed: 67 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1880,31 +1880,66 @@ Porting notes for the C API are
18801880
Build Changes
18811881
=============
18821882

1883-
* Building Python now requires a C11 compiler. Optional C11 features are not
1884-
required.
1885-
(Contributed by Victor Stinner in :issue:`46656`.)
1886-
1887-
* Building Python now requires support of IEEE 754 floating point numbers.
1888-
(Contributed by Victor Stinner in :issue:`46917`.)
1883+
* CPython now has :pep:`11` :pep:`Tier 3 support <11#tier-3>` for
1884+
cross compiling to the `WebAssembly <https://webassembly.org/>`_ platforms
1885+
`Emscripten <https://emscripten.org/>`_
1886+
(``wasm32-unknown-emscripten``, i.e. Python in the browser)
1887+
and `WebAssembly System Interface (WASI) <https://wasi.dev/>`_
1888+
(``wasm32-unknown-wasi``).
1889+
The effort is inspired by previous work like `Pyodide <https://pyodide.org/>`_.
1890+
These platforms provide a limited subset of POSIX APIs; Python standard
1891+
libraries features and modules related to networking, processes, threading,
1892+
signals, mmap, and users/groups are not available or don't work.
1893+
(Emscripten contributed by Christian Heimes and Ethan Smith in :gh:`84461`
1894+
and WASI contributed by Christian Heimes in :gh:`90473`;
1895+
platforms promoted in :gh:`95085`)
1896+
1897+
* Building Python now requires:
1898+
1899+
* A `C11 <https://en.cppreference.com/w/c/11>`_ compiler.
1900+
`Optional C11 features
1901+
<https://en.wikipedia.org/wiki/C11_(C_standard_revision)#Optional_features>`_
1902+
are not required.
1903+
(Contributed by Victor Stinner in :issue:`46656`.)
1904+
1905+
* Support for `IEEE 754 <https://en.wikipedia.org/wiki/IEEE_754>`_
1906+
floating point numbers.
1907+
(Contributed by Victor Stinner in :issue:`46917`.)
1908+
1909+
* Support for `floating point Not-a-Number (NaN)
1910+
<https://en.wikipedia.org/wiki/NaN#Floating_point>`_,
1911+
as the :c:macro:`!Py_NO_NAN` macro has been removed.
1912+
(Contributed by Victor Stinner in :issue:`46656`.)
1913+
1914+
* A `C99 <https://en.cppreference.com/w/c/99>`_
1915+
``<math.h>`` header file providing the
1916+
:c:func:`!copysign`, :c:func:`!hypot`, :c:func:`!isfinite`,
1917+
:c:func:`!isinf`, :c:func:`!isnan`, and :c:func:`!round` functions
1918+
(contributed by Victor Stinner in :issue:`45440`);
1919+
and a :c:data:`!NAN` constant or the :c:func:`!__builtin_nan` function
1920+
(Contributed by Victor Stinner in :issue:`46640`).
1921+
1922+
* The :mod:`tkinter` package now requires `Tcl/Tk <https://www.tcl.tk>`_
1923+
version 8.5.12 or newer.
1924+
(Contributed by Serhiy Storchaka in :issue:`46996`.)
18891925

1890-
* CPython can now be built with the ThinLTO option via ``--with-lto=thin``.
1891-
(Contributed by Dong-hee Na and Brett Holman in :issue:`44340`.)
1926+
* Build dependencies, compiler flags, and linker flags for most stdlib
1927+
extension modules are now detected by :program:`configure`. libffi, libnsl,
1928+
libsqlite3, zlib, bzip2, liblzma, libcrypt, Tcl/Tk, and uuid flags
1929+
are detected by `pkg-config
1930+
<https://www.freedesktop.org/wiki/Software/pkg-config/>`_ (when available).
1931+
:mod:`tkinter` now requires a pkg-config command
1932+
to detect development settings for `Tcl/Tk`_ headers and libraries.
1933+
(Contributed by Christian Heimes and Erlend Egeberg Aasland in
1934+
:issue:`45847`, :issue:`45747`, and :issue:`45763`.)
18921935

18931936
* libpython is no longer linked against libcrypt.
18941937
(Contributed by Mike Gilbert in :issue:`45433`.)
18951938

1896-
* Building Python now requires a C99 ``<math.h>`` header file providing
1897-
the following functions: ``copysign()``, ``hypot()``, ``isfinite()``,
1898-
``isinf()``, ``isnan()``, ``round()``.
1899-
(Contributed by Victor Stinner in :issue:`45440`.)
1900-
1901-
* Building Python now requires a C99 ``<math.h>`` header file providing
1902-
a ``NAN`` constant, or the ``__builtin_nan()`` built-in function.
1903-
(Contributed by Victor Stinner in :issue:`46640`.)
1904-
1905-
* Building Python now requires support for floating point Not-a-Number (NaN):
1906-
remove the ``Py_NO_NAN`` macro.
1907-
(Contributed by Victor Stinner in :issue:`46656`.)
1939+
* CPython can now be built with the
1940+
`ThinLTO <https://clang.llvm.org/docs/ThinLTO.html>`_ option
1941+
via passing ``thin`` to :option:`--with-lto`, i.e. ``--with-lto=thin``.
1942+
(Contributed by Dong-hee Na and Brett Holman in :issue:`44340`.)
19081943

19091944
* Freelists for object structs can now be disabled. A new :program:`configure`
19101945
option :option:`!--without-freelists` can be used to disable all freelists
@@ -1913,55 +1948,30 @@ Build Changes
19131948

19141949
* ``Modules/Setup`` and ``Modules/makesetup`` have been improved and tied up.
19151950
Extension modules can now be built through ``makesetup``. All except some
1916-
test modules can be linked statically into main binary or library.
1951+
test modules can be linked statically into a main binary or library.
19171952
(Contributed by Brett Cannon and Christian Heimes in :issue:`45548`,
19181953
:issue:`45570`, :issue:`45571`, and :issue:`43974`.)
19191954

1920-
* Build dependencies, compiler flags, and linker flags for most stdlib
1921-
extension modules are now detected by :program:`configure`. libffi, libnsl,
1922-
libsqlite3, zlib, bzip2, liblzma, libcrypt, Tcl/Tk, and uuid flags
1923-
are detected by ``pkg-config`` (when available). :mod:`tkinter` now
1924-
requires ``pkg-config`` command to detect development settings for Tcl/Tk
1925-
headers and libraries.
1926-
(Contributed by Christian Heimes and Erlend Egeberg Aasland in
1927-
:issue:`45847`, :issue:`45747`, and :issue:`45763`.)
1928-
19291955
.. note::
1930-
Use the environment variables :envvar:`TCLTK_CFLAGS` and
1931-
:envvar:`TCLTK_LIBS` to manually specify the location of Tcl/Tk headers
1932-
and libraries. The :program:`configure` options ``--with-tcltk-includes``
1933-
and ``--with-tcltk-libs`` have been removed.
1956+
Use the environment variables :envvar:`!TCLTK_CFLAGS` and
1957+
:envvar:`!TCLTK_LIBS` to manually specify the location of Tcl/Tk headers
1958+
and libraries. The :program:`configure` options
1959+
:option:`!--with-tcltk-includes` and :option:`!--with-tcltk-libs`
1960+
have been removed.
19341961

19351962
On RHEL 7 and CentOS 7 the development packages do not provide ``tcl.pc``
1936-
and ``tk.pc``, use :envvar:`TCLTK_LIBS="-ltk8.5 -ltkstub8.5 -ltcl8.5"`.
1963+
and ``tk.pc``; use ``TCLTK_LIBS="-ltk8.5 -ltkstub8.5 -ltcl8.5"``.
19371964
The directory ``Misc/rhel7`` contains ``.pc`` files and instructions
1938-
how to build Python with RHEL 7's and CentOS 7's Tcl/Tk and OpenSSL.
1939-
1940-
* CPython now has :pep:`11` tier 3 support for cross compiling to WebAssembly
1941-
platform ``wasm32-unknown-emscripten`` (Python in the browser). The effort
1942-
is inspired by previous work like `Pyodide <https://pyodide.org/>`_.
1943-
Emscripten provides a limited subset of POSIX APIs. Python standard
1944-
libraries features and modules related to networking, processes, threading,
1945-
signals, mmap, and users/groups are not available or don't work.
1946-
(Contributed by Christian Heimes and Ethan Smith in :gh:`84461`,
1947-
promoted in :gh:`95085`)
1948-
1949-
* CPython now has :pep:`11` tier 3 support for cross compiling to WebAssembly
1950-
platform ``wasm32-unknown-wasi`` (WebAssembly System Interface). Like on
1951-
Emscripten, only a subset of Python's standard library is available on WASI.
1952-
(Contributed by Christian Heimes in :gh:`90473`, promoted in :gh:`95085`)
1965+
on how to build Python with RHEL 7's and CentOS 7's Tcl/Tk and OpenSSL.
19531966

19541967
* CPython will now use 30-bit digits by default for the Python :class:`int`
19551968
implementation. Previously, the default was to use 30-bit digits on platforms
19561969
with ``SIZEOF_VOID_P >= 8``, and 15-bit digits otherwise. It's still possible
19571970
to explicitly request use of 15-bit digits via either the
1958-
``--enable-big-digits`` option to the configure script or (for Windows) the
1959-
``PYLONG_BITS_IN_DIGIT`` variable in ``PC/pyconfig.h``, but this option may
1960-
be removed at some point in the future. (Contributed by Mark Dickinson in
1961-
:issue:`45569`.)
1962-
1963-
* The :mod:`tkinter` package now requires Tcl/Tk version 8.5.12 or newer.
1964-
(Contributed by Serhiy Storchaka in :issue:`46996`.)
1971+
:option:`--enable-big-digits` option to the configure script
1972+
or (for Windows) the ``PYLONG_BITS_IN_DIGIT`` variable in ``PC/pyconfig.h``,
1973+
but this option may be removed at some point in the future.
1974+
(Contributed by Mark Dickinson in :issue:`45569`.)
19651975

19661976

19671977
.. _whatsnew311-c-api:

0 commit comments

Comments
 (0)