@@ -1896,31 +1896,66 @@ Porting notes for the C API are
18961896Build Changes
18971897=============
18981898
1899- * Building Python now requires a C11 compiler. Optional C11 features are not
1900- required.
1901- (Contributed by Victor Stinner in :issue: `46656 `.)
1902-
1903- * Building Python now requires support of IEEE 754 floating point numbers.
1904- (Contributed by Victor Stinner in :issue: `46917 `.)
1899+ * CPython now has :pep: `11 ` :pep: `Tier 3 support <11#tier-3 >` for
1900+ cross compiling to the `WebAssembly <https://webassembly.org/ >`_ platforms
1901+ `Emscripten <https://emscripten.org/ >`_
1902+ (``wasm32-unknown-emscripten ``, i.e. Python in the browser)
1903+ and `WebAssembly System Interface (WASI) <https://wasi.dev/ >`_
1904+ (``wasm32-unknown-wasi ``).
1905+ The effort is inspired by previous work like `Pyodide <https://pyodide.org/ >`_.
1906+ These platforms provide a limited subset of POSIX APIs; Python standard
1907+ libraries features and modules related to networking, processes, threading,
1908+ signals, mmap, and users/groups are not available or don't work.
1909+ (Emscripten contributed by Christian Heimes and Ethan Smith in :gh: `84461 `
1910+ and WASI contributed by Christian Heimes in :gh: `90473 `;
1911+ platforms promoted in :gh: `95085 `)
1912+
1913+ * Building Python now requires:
1914+
1915+ * A `C11 <https://en.cppreference.com/w/c/11 >`_ compiler.
1916+ `Optional C11 features
1917+ <https://en.wikipedia.org/wiki/C11_(C_standard_revision)#Optional_features> `_
1918+ are not required.
1919+ (Contributed by Victor Stinner in :issue: `46656 `.)
1920+
1921+ * Support for `IEEE 754 <https://en.wikipedia.org/wiki/IEEE_754 >`_
1922+ floating point numbers.
1923+ (Contributed by Victor Stinner in :issue: `46917 `.)
1924+
1925+ * Support for `floating point Not-a-Number (NaN)
1926+ <https://en.wikipedia.org/wiki/NaN#Floating_point> `_,
1927+ as the :c:macro: `!Py_NO_NAN ` macro has been removed.
1928+ (Contributed by Victor Stinner in :issue: `46656 `.)
1929+
1930+ * A `C99 <https://en.cppreference.com/w/c/99 >`_
1931+ ``<math.h> `` header file providing the
1932+ :c:func: `!copysign `, :c:func: `!hypot `, :c:func: `!isfinite `,
1933+ :c:func: `!isinf `, :c:func: `!isnan `, and :c:func: `!round ` functions
1934+ (contributed by Victor Stinner in :issue: `45440 `);
1935+ and a :c:data: `!NAN ` constant or the :c:func: `!__builtin_nan ` function
1936+ (Contributed by Victor Stinner in :issue: `46640 `).
1937+
1938+ * The :mod: `tkinter ` package now requires `Tcl/Tk <https://www.tcl.tk >`_
1939+ version 8.5.12 or newer.
1940+ (Contributed by Serhiy Storchaka in :issue: `46996 `.)
19051941
1906- * CPython can now be built with the ThinLTO option via ``--with-lto=thin ``.
1907- (Contributed by Dong-hee Na and Brett Holman in :issue: `44340 `.)
1942+ * Build dependencies, compiler flags, and linker flags for most stdlib
1943+ extension modules are now detected by :program: `configure `. libffi, libnsl,
1944+ libsqlite3, zlib, bzip2, liblzma, libcrypt, Tcl/Tk, and uuid flags
1945+ are detected by `pkg-config
1946+ <https://www.freedesktop.org/wiki/Software/pkg-config/> `_ (when available).
1947+ :mod: `tkinter ` now requires a pkg-config command
1948+ to detect development settings for `Tcl/Tk `_ headers and libraries.
1949+ (Contributed by Christian Heimes and Erlend Egeberg Aasland in
1950+ :issue: `45847 `, :issue: `45747 `, and :issue: `45763 `.)
19081951
19091952* libpython is no longer linked against libcrypt.
19101953 (Contributed by Mike Gilbert in :issue: `45433 `.)
19111954
1912- * Building Python now requires a C99 ``<math.h> `` header file providing
1913- the following functions: ``copysign() ``, ``hypot() ``, ``isfinite() ``,
1914- ``isinf() ``, ``isnan() ``, ``round() ``.
1915- (Contributed by Victor Stinner in :issue: `45440 `.)
1916-
1917- * Building Python now requires a C99 ``<math.h> `` header file providing
1918- a ``NAN `` constant, or the ``__builtin_nan() `` built-in function.
1919- (Contributed by Victor Stinner in :issue: `46640 `.)
1920-
1921- * Building Python now requires support for floating point Not-a-Number (NaN):
1922- remove the ``Py_NO_NAN `` macro.
1923- (Contributed by Victor Stinner in :issue: `46656 `.)
1955+ * CPython can now be built with the
1956+ `ThinLTO <https://clang.llvm.org/docs/ThinLTO.html >`_ option
1957+ via passing ``thin `` to :option: `--with-lto `, i.e. ``--with-lto=thin ``.
1958+ (Contributed by Dong-hee Na and Brett Holman in :issue: `44340 `.)
19241959
19251960* Freelists for object structs can now be disabled. A new :program: `configure `
19261961 option :option: `!--without-freelists ` can be used to disable all freelists
@@ -1929,55 +1964,30 @@ Build Changes
19291964
19301965* ``Modules/Setup `` and ``Modules/makesetup `` have been improved and tied up.
19311966 Extension modules can now be built through ``makesetup ``. All except some
1932- test modules can be linked statically into main binary or library.
1967+ test modules can be linked statically into a main binary or library.
19331968 (Contributed by Brett Cannon and Christian Heimes in :issue: `45548 `,
19341969 :issue: `45570 `, :issue: `45571 `, and :issue: `43974 `.)
19351970
1936- * Build dependencies, compiler flags, and linker flags for most stdlib
1937- extension modules are now detected by :program: `configure `. libffi, libnsl,
1938- libsqlite3, zlib, bzip2, liblzma, libcrypt, Tcl/Tk, and uuid flags
1939- are detected by ``pkg-config `` (when available). :mod: `tkinter ` now
1940- requires ``pkg-config `` command to detect development settings for Tcl/Tk
1941- headers and libraries.
1942- (Contributed by Christian Heimes and Erlend Egeberg Aasland in
1943- :issue: `45847 `, :issue: `45747 `, and :issue: `45763 `.)
1944-
19451971 .. note ::
1946- Use the environment variables :envvar: `TCLTK_CFLAGS ` and
1947- :envvar: `TCLTK_LIBS ` to manually specify the location of Tcl/Tk headers
1948- and libraries. The :program: `configure ` options ``--with-tcltk-includes ``
1949- and ``--with-tcltk-libs `` have been removed.
1972+ Use the environment variables :envvar: `!TCLTK_CFLAGS ` and
1973+ :envvar: `!TCLTK_LIBS ` to manually specify the location of Tcl/Tk headers
1974+ and libraries. The :program: `configure ` options
1975+ :option: `!--with-tcltk-includes ` and :option: `!--with-tcltk-libs `
1976+ have been removed.
19501977
19511978 On RHEL 7 and CentOS 7 the development packages do not provide ``tcl.pc ``
1952- and ``tk.pc ``, use :envvar: ` TCLTK_LIBS="-ltk8.5 -ltkstub8.5 -ltcl8.5" `.
1979+ and ``tk.pc ``; use `` TCLTK_LIBS="-ltk8.5 -ltkstub8.5 -ltcl8.5" ` `.
19531980 The directory ``Misc/rhel7 `` contains ``.pc `` files and instructions
1954- how to build Python with RHEL 7's and CentOS 7's Tcl/Tk and OpenSSL.
1955-
1956- * CPython now has :pep: `11 ` tier 3 support for cross compiling to WebAssembly
1957- platform ``wasm32-unknown-emscripten `` (Python in the browser). The effort
1958- is inspired by previous work like `Pyodide <https://pyodide.org/ >`_.
1959- Emscripten provides a limited subset of POSIX APIs. Python standard
1960- libraries features and modules related to networking, processes, threading,
1961- signals, mmap, and users/groups are not available or don't work.
1962- (Contributed by Christian Heimes and Ethan Smith in :gh: `84461 `,
1963- promoted in :gh: `95085 `)
1964-
1965- * CPython now has :pep: `11 ` tier 3 support for cross compiling to WebAssembly
1966- platform ``wasm32-unknown-wasi `` (WebAssembly System Interface). Like on
1967- Emscripten, only a subset of Python's standard library is available on WASI.
1968- (Contributed by Christian Heimes in :gh: `90473 `, promoted in :gh: `95085 `)
1981+ on how to build Python with RHEL 7's and CentOS 7's Tcl/Tk and OpenSSL.
19691982
19701983* CPython will now use 30-bit digits by default for the Python :class: `int `
19711984 implementation. Previously, the default was to use 30-bit digits on platforms
19721985 with ``SIZEOF_VOID_P >= 8 ``, and 15-bit digits otherwise. It's still possible
19731986 to explicitly request use of 15-bit digits via either the
1974- ``--enable-big-digits `` option to the configure script or (for Windows) the
1975- ``PYLONG_BITS_IN_DIGIT `` variable in ``PC/pyconfig.h ``, but this option may
1976- be removed at some point in the future. (Contributed by Mark Dickinson in
1977- :issue: `45569 `.)
1978-
1979- * The :mod: `tkinter ` package now requires Tcl/Tk version 8.5.12 or newer.
1980- (Contributed by Serhiy Storchaka in :issue: `46996 `.)
1987+ :option: `--enable-big-digits ` option to the configure script
1988+ or (for Windows) the ``PYLONG_BITS_IN_DIGIT `` variable in ``PC/pyconfig.h ``,
1989+ but this option may be removed at some point in the future.
1990+ (Contributed by Mark Dickinson in :issue: `45569 `.)
19811991
19821992
19831993.. _whatsnew311-c-api :
0 commit comments