- [`os-wasi` label](https://github.com/python/cpython/labels/OS-wasi) - [Devcontainer](https://github.com/python/cpython-devcontainers) ([image](https://github.com/python/cpython-devcontainers/pkgs/container/devcontainer)) - [ ] Support WASI SDK 27 on `main` ([issue](https://github.com/python/cpython/issues/137580)) - [ ] Get code working - [ ] Update CI - [ ] Update dev container - [ ] [Dev container](https://github.com/python/cpython-devcontainers) image - [x] [Proper CPU support](https://docs.docker.com/build/building/multi-platform/#cross-compilation) ([issue](https://github.com/python/cpython-devcontainers/issues/25)) - [x] [PR](https://github.com/python/cpython-devcontainers/pull/43) - [x] [Release](https://github.com/python/cpython-devcontainers/actions/runs/15334414373) () - [x] Update devcontainer to the latest [image](https://github.com/python/cpython-devcontainers/pkgs/container/devcontainer) ([PR](https://github.com/python/cpython/pull/135143)) - [x] [Development in general](https://github.com/python/cpython-devcontainers/issues/12) - [ ] [`.devcontainer`](https://github.com/python/cpython/tree/main/.devcontainer) with `latest` label being viable ([discussion](https://discuss.python.org/t/what-do-people-want-to-see-to-make-supporting-wasi-easier/94472)) - [x] [[#^wasi-sdk-NN|`wasi-sdk-NN` detection]] - [x] Update the devcontainer appropriately ([release run](https://github.com/python/cpython-devcontainers/actions/runs/16945609443)) - [ ] Update `.devcontainer` ([PR](https://github.com/python/cpython/pull/137734)) - [x] [CI](https://github.com/python/cpython/blob/main/.github/workflows/reusable-wasi.yml) ([issue](https://github.com/python/cpython-devcontainers/issues/26)) - [ ] `compose.yml` ([issue](https://github.com/python/cpython/issues/135693)) - [ ] [Default tools](https://github.com/python/cpython-devcontainers/issues/47) - [ ] Move `Tools/wasm/wasi` to the top-level? - [ ] Get the Buildbot using the dev container - [ ] [Stop setting `HOSTRUNNER` in `configure.ac`](https://github.com/python/cpython/issues/95952) - [x] [Stop using `./configure` directly to build in the buildbots](https://github.com/python/buildmaster-config/pull/526) - [ ] Update `configure.ac` - [ ] Lower stack size to 5 MiB - [ ] `Tools/wasm/wasi` - [ ] `configure.ac`? - [ ] `Makefile.pre.in` ? - [ ] PEP to specify WASI SDK compatibility expectations - [ ] Have `wasi/` check for `wasi-sdk/VERSION` -- [25 and later](https://github.com/WebAssembly/wasi-sdk/issues/471) -- to make sure the right version is used when auto-selecting WASI SDK? - [x] Use `/opt/wasi-sdk-NN` automatically based on what the appropriate version is ([PR](https://github.com/python/cpython/pull/137244)) ^wasi-sdk-NN - [ ] Update dev container to ship with all relevant WASI SDK versions - [ ] [Create a GitHub Action to install WASI SDK](https://github.com/WebAssembly/wasi-sdk/issues/468) (? Might not be necessary w/ a container image used in CI) - [ ] PEP for a wheel tag ([discussion](https://bytecodealliance.zulipchat.com/#narrow/channel/219900-wasi/topic/Platform.20tags.20for.20packages.20targeting.20WASI/with/516694780)) - [ ] See if we can use `--enable-wasm-dynamic-linking` so [componentize-py](https://github.com/bytecodealliance/componentize-py) doesn't have to [patch it](https://github.com/dicej/cpython/commit/118e9d8eeabb6345d57295f6cec1616694eacbc2#diff-49473dca262eeab3b4a43002adb08b4db31020d190caaad1594b47f1d5daa810R1269-R1272) - [ ] Set up Black formatting for `wasi/` - [ ] Move `wasi.py` functionality to `wasi/__main__.py` - [x] Copy code over and leave deprecated stub behind - [x] Update `CODEOWNERS` ^codeowners - [x] I own `wasi.py` - [x] I own `wasi/` - [x] Jointly own `README` - [ ] Update buildbots - [ ] `wasi package` - [ ] Research what should be shipped for building extensions - [ ] See if [exporting binaries](https://docs.docker.com/build/building/export/) from the devcontainer is possible - [ ] [External dependencies](https://github.com/python/cpython-source-deps) via `wasi externals` - [ ] Figure out what version policy we want (i.e. always latest or freeze versions like Windows builds?) - [ ] [zlib](https://github.com/python/cpython/issues/91246) (and potentially undoing part of https://github.com/python/cpython/pull/130297) - [ ] bzip2 - [ ] xz - [`get_externals.bat`](https://github.com/python/cpython/blob/5592399313c963c110280a7c98de974889e1d353/PCbuild/get_externals.bat#L61) - [`python.props`](https://github.com/python/cpython/blob/5592399313c963c110280a7c98de974889e1d353/PCbuild/python.props#L73) - [`externals.spdx.json`](https://github.com/python/cpython/blob/5592399313c963c110280a7c98de974889e1d353/Misc/externals.spdx.json#L160) - [ ] sqlite - [x] OpenSSL (not safe as WebAssembly doesn't have constant time ops) - [ ] Consider if providing a [wasmtime config](https://docs.wasmtime.dev/cli-options.html#cli-options-using-toml-file) makes sense over hard-coding flags - [ ] [Support `wasm32-wasip2`](https://github.com/python/cpython/issues/121634) - [x] Ability to specify host triple - [x] Find out if `wasip2` is compatible w/ preview1 hosts - [ ] buildbot - [ ] PEP 11 - [ ] Get 3rd-party extensions working - [ ] Networking under WASI 0.2 - [Joel's hack](https://github.com/dicej/cpython/commit/118e9d8eeabb6345d57295f6cec1616694eacbc2) - Any tests requiring threads probably won't work - See the [headers in wasi-libc](https://github.com/WebAssembly/wasi-libc/tree/main/libc-top-half/musl/include) for what can be turned on - Will probably require tweaking `config.site` - [ ] Single-file `python.wasm` distribution - [ ] Freezing the stdlib - [ ] `wasi-virt` - [ ] Make sure build details are still relevant - [ ] Check if all the flags set in `configure.ac` are necessary - [ ] Check what `__wasi__` usage can be removed - [ ] [Check](https://github.com/python/cpython/issues/115982) the [site config](https://github.com/python/cpython/blob/main/Tools/wasm/config.site-wasm32-wasi) is up-to-date - [ ] [[HTTP fetch API]]