Publishing WASM wheels to PyPI for use with Pyodide

· Source: Simon Willison's Weblog · Field: Technology & Digital — Software Development & Engineering, Emerging Technologies & Innovation · Depth: Advanced, short

Summary

The Pyodide 314.0 release announcement, made on June 13th, 2026, confirms that Python packages built for Pyodide using the PyEmscripten platform (PEP 783) can now be published directly to PyPI and installed at runtime. This significant change alleviates a major burden on Pyodide maintainers, who previously had to build and host over 300 packages manually. The underlying PyPI support for this functionality landed on April 21st. As a demonstration, the author successfully packaged "luau-wasm", a C++-based Luau interpreter compiled to WebAssembly, publishing a 276KB "luau_wasm-0.1a0-cp314-cp314-pyemscripten_2026_0_wasm32.whl" file to PyPI. A BigQuery analysis of PyPI's public dataset reveals that 28 packages currently utilize these new "pyemscripten_202*_wasm32" tags.

Key takeaway

For Python package maintainers developing for browser-based environments, this PyPI update significantly streamlines distribution. You can now publish WebAssembly wheels directly, eliminating the previous manual review bottleneck and reducing reliance on Pyodide maintainers. Consider updating your build pipelines with cibuildwheel to include "pyemscripten_202*_wasm32" tags. This enables broader adoption of your C/C++/Rust extensions within Pyodide applications, expanding your package's reach.

Key insights

PyPI now directly supports WebAssembly (WASM) wheels for Pyodide, simplifying package distribution and reducing maintainer burden.

Principles

Method

Package maintainers can build and publish Pyodide wheels to PyPI using tools like cibuildwheel, similar to native wheels, then install via micropip.install().

In practice

Topics

Code references

Best for: Software Engineer, DevOps Engineer

Related on AIssential

Open in AIssential →

Editorial summary, takeaway, and curation by AIssential. Original article published by Simon Willison's Weblog.