From daa64d6a5900beea1f1973e5e01121967bc6fa6c Mon Sep 17 00:00:00 2001 From: Christian Heimes Date: Wed, 27 Jul 2022 08:18:34 +0200 Subject: [PATCH] gh-95085: Promote Emscripten and WASI to PEP 11 tier 3 (GH-95086) --- Doc/whatsnew/3.11.rst | 17 +++++++++++++---- ...022-07-21-09-17-01.gh-issue-95085.E9x2S_.rst | 2 ++ Tools/wasm/README.md | 2 +- configure | 6 +++++- configure.ac | 4 ++-- 5 files changed, 23 insertions(+), 8 deletions(-) create mode 100644 Misc/NEWS.d/next/Build/2022-07-21-09-17-01.gh-issue-95085.E9x2S_.rst diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst index b7ec8ad5547..f458f8e6a40 100644 --- a/Doc/whatsnew/3.11.rst +++ b/Doc/whatsnew/3.11.rst @@ -1551,10 +1551,19 @@ Build Changes The :program:`configure` options ``--with-tcltk-includes`` and ``--with-tcltk-libs`` have been removed. -* CPython now has experimental support for cross compiling to WebAssembly - platform ``wasm32-emscripten``. The effort is inspired by previous work - like Pyodide. - (Contributed by Christian Heimes and Ethan Smith in :issue:`40280`.) +* CPython now has :pep:`11` tier 3 support for cross compiling to WebAssembly + platform ``wasm32-unknown-emscripten`` (Python in the browser). The effort + is inspired by previous work like `Pyodide `_. + Emscripten provides a limited subset of POSIX APIs. Python standard + libraries features and modules related to networking, processes, threading, + signals, mmap, and users/groups are not available or don't work. + (Contributed by Christian Heimes and Ethan Smith in :gh:`84461`, + promoted in :gh:`95085`) + +* CPython now has :pep:`11` tier 3 support for cross compiling to WebAssembly + platform ``wasm32-unknown-wasi`` (WebAssembly System Interface). Like on + Emscripten, only a subset of Python's standard library is available on WASI. + (Contributed by Christian Heimes in :gh:`90473`, promoted in :gh:`95085`) * CPython will now use 30-bit digits by default for the Python :class:`int` implementation. Previously, the default was to use 30-bit digits on platforms diff --git a/Misc/NEWS.d/next/Build/2022-07-21-09-17-01.gh-issue-95085.E9x2S_.rst b/Misc/NEWS.d/next/Build/2022-07-21-09-17-01.gh-issue-95085.E9x2S_.rst new file mode 100644 index 00000000000..02dbd2b8b31 --- /dev/null +++ b/Misc/NEWS.d/next/Build/2022-07-21-09-17-01.gh-issue-95085.E9x2S_.rst @@ -0,0 +1,2 @@ +Platforms ``wasm32-unknown-emscripten`` and ``wasm32-unknown-wasi`` have +been promoted to :pep:`11` tier 3 platform support. diff --git a/Tools/wasm/README.md b/Tools/wasm/README.md index c1daddda463..37bd395baff 100644 --- a/Tools/wasm/README.md +++ b/Tools/wasm/README.md @@ -167,7 +167,7 @@ functions. - Heap memory and stack size are limited. Recursion or extensive memory consumption can crash Python. - Most stdlib modules with a dependency on external libraries are missing, - e.g. ``ctypes``, ``readline``, ``sqlite3``, ``ssl``, and more. + e.g. ``ctypes``, ``readline``, ``ssl``, and more. - Shared extension modules are not implemented yet. All extension modules are statically linked into the main binary. The experimental configure option ``--enable-wasm-dynamic-linking`` enables dynamic extensions diff --git a/configure b/configure index 6190680d874..77c4bdb1d39 100755 --- a/configure +++ b/configure @@ -6342,7 +6342,11 @@ case $host/$ac_cv_cc_name in #( PY_SUPPORT_TIER=3 ;; #( s390x-*-linux-gnu/gcc) : PY_SUPPORT_TIER=3 ;; #( - x86_64-*-freebsd*/clang) : + wasm32-unknown-emscripten/clang) : + PY_SUPPORT_TIER=3 ;; #( + wasm32-unknown-wasi/clang) : + PY_SUPPORT_TIER=3 ;; #( + x86_64-*-freebsd*/clang) : PY_SUPPORT_TIER=3 ;; #( *) : PY_SUPPORT_TIER=0 diff --git a/configure.ac b/configure.ac index 2c1b2ddeaf4..78eebd57bd2 100644 --- a/configure.ac +++ b/configure.ac @@ -1141,8 +1141,8 @@ AS_CASE([$host/$ac_cv_cc_name], [armv7l-*-linux-gnueabihf/gcc], [PY_SUPPORT_TIER=3], dnl ARMv7 LE with hardware floats, any vendor, glibc, gcc [powerpc64le-*-linux-gnu/clang], [PY_SUPPORT_TIER=3], dnl Linux on PPC64 little endian, glibc, clang [s390x-*-linux-gnu/gcc], [PY_SUPPORT_TIER=3], dnl Linux on 64bit s390x (big endian), glibc, gcc - dnl [wasm32-unknown-emscripten/clang], [PY_SUPPORT_TIER=3], dnl WebAssembly Emscripten - dnl [wasm32-unknown-wasi/clang], [PY_SUPPORT_TIER=3], dnl WebAssembly System Interface + [wasm32-unknown-emscripten/clang], [PY_SUPPORT_TIER=3], dnl WebAssembly Emscripten + [wasm32-unknown-wasi/clang], [PY_SUPPORT_TIER=3], dnl WebAssembly System Interface [x86_64-*-freebsd*/clang], [PY_SUPPORT_TIER=3], dnl FreeBSD on AMD64 [PY_SUPPORT_TIER=0] )