summaryrefslogtreecommitdiffstats
path: root/Tools/wasm/README.md
diff options
context:
space:
mode:
authorChristian Heimes <christian@python.org>2022-05-19 10:43:16 (GMT)
committerGitHub <noreply@github.com>2022-05-19 10:43:16 (GMT)
commit137fd3d88aa46669f5717734e823f4c594ab2843 (patch)
treea527865e1f3729ef3d7c69a43d08072d8d837d9c /Tools/wasm/README.md
parente48ac9c1003c3816198cbfb6132a995150f9b048 (diff)
downloadcpython-137fd3d88aa46669f5717734e823f4c594ab2843.zip
cpython-137fd3d88aa46669f5717734e823f4c594ab2843.tar.gz
cpython-137fd3d88aa46669f5717734e823f4c594ab2843.tar.bz2
gh-90473: Decrease recursion limit and skip tests on WASI (GH-92803)
Diffstat (limited to 'Tools/wasm/README.md')
-rw-r--r--Tools/wasm/README.md21
1 files changed, 19 insertions, 2 deletions
diff --git a/Tools/wasm/README.md b/Tools/wasm/README.md
index 83806f0..977b2bb 100644
--- a/Tools/wasm/README.md
+++ b/Tools/wasm/README.md
@@ -220,10 +220,27 @@ AddType application/wasm wasm
# WASI (wasm32-wasi)
-WASI builds require [WASI SDK](https://github.com/WebAssembly/wasi-sdk) and
-currently [wasix](https://github.com/singlestore-labs/wasix) for POSIX
+WASI builds require [WASI SDK](https://github.com/WebAssembly/wasi-sdk) 15.0+
+and currently [wasix](https://github.com/singlestore-labs/wasix) for POSIX
compatibility stubs.
+## WASI limitations and issues (WASI SDK 15.0)
+
+A lot of Emscripten limitations also apply to WASI. Noticable restrictions
+are:
+
+- Call stack size is limited. Default recursion limit and parser stack size
+ are smaller than in regular Python builds.
+- ``socket(2)`` cannot create new socket file descriptors. WASI programs can
+ call read/write/accept on a file descriptor that is passed into the process.
+- ``socket.gethostname()`` and host name resolution APIs like
+ ``socket.gethostbyname()`` are not implemented and always fail.
+- ``chmod(2)`` is not available. It's not possible to modify file permissions,
+ yet. A future version of WASI may provide a limited ``set_permissions`` API.
+- File locking (``fcntl``) is not available.
+- ``os.pipe()``, ``os.mkfifo()``, and ``os.mknod()`` are not supported.
+
+
# Detect WebAssembly builds
## Python code