Skip to content

gh-95085: Promote Emscripten and WASI to PEP 11 tier 3 (GH-95086) #95086

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 27, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 13 additions & 4 deletions Doc/whatsnew/3.11.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1554,10 +1554,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 <https://pyodide.org/>`_.
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
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Platforms ``wasm32-unknown-emscripten`` and ``wasm32-unknown-wasi`` have
been promoted to :pep:`11` tier 3 platform support.
2 changes: 1 addition & 1 deletion Tools/wasm/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,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
Expand Down
6 changes: 5 additions & 1 deletion configure

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -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]
)
Expand Down