Publishing WASM wheels to PyPI for use with Pyodide
Simon Willison · Simon Willison · 2026-06-13
Pyodide 314.0 enables Python package maintainers to publish WebAssembly wheels directly to PyPI under the new PyEmscripten platform tag, eliminating the manual bottleneck of 300+ Pyodide-maintained packages, a change Simon Willison celebrates by publishing luau-wasm, a Luau scripting engine compiled to WebAssembly.
Appears in
Extraction
Topics: pyodidewebassemblypython-packagingpypiwasm-wheels
Claims
- Pyodide 314.0 allows package maintainers to publish Python packages built for the PyEmscripten platform (PEP 783) directly to PyPI, installable at runtime via micropip.
- Previously, Pyodide maintainers had to manually maintain and host over 300 packages, creating a significant bottleneck requiring manual review for every new package.
- Simon Willison created luau-wasm, a 276KB PyPI package wrapping Roblox's Luau scripting language (C++) compiled to WebAssembly, built using cibuildwheel and GitHub Actions.
- As of the post, 28 PyPI packages are already publishing wheels with the new pyemscripten_202*_wasm32 platform tags.
- PyPI support for the PyEmscripten platform was merged on April 21, 2026.
Key quotes
You can now publish Python packages built for Pyodide (or any Python runtime compatible with the PyEmscripten platform defined in PEP 783) directly to PyPI and install them at runtime.
Previously, the Pyodide maintainers had to maintain, build, and host over 300 packages ourselves. This created a significant burden on our maintainers and became a major bottleneck for the community, as every new package required manual review.
I adore Pyodide, and have been frustrated in the past by this limitation. It's possible to compile C or Rust extensions to WASM in a wheel file, but before now there was no easy way to distribute them.