Pyodide で使用するために WASM ホイールを PyPI に公開する
Pyodide で使用するために WASM ホイールを PyPI に公開する
2026 年 6 月 13 日
Pyodide 314.0 のリリース発表 (Hacker News 経由) には、私が長い間楽しみにしていたニュースが含まれています。
Pyodide (または PEP 783 で定義されている PyEmscripten プラットフォームと互換性のある Python ランタイム) 用に構築された Python パッケージを PyPI に直接公開し、実行時にインストールできるようになりました。
以前は、Pyodide のメンテナは 300 を超えるパッケージを自分たちで保守、構築、ホストする必要がありました。新しいパッケージごとに手動でのレビューが必要になるため、これはメンテナーに多大な負担をもたらし、コミュニティにとって大きなボトルネックとなりました。
今後、パッケージ管理者は、Linux、macOS、または Windows 上のネイティブ ホイールの場合と同様に、Pyodide ホイールを簡単に構築して PyPI に公開できるようになります。
これは、4 月 21 日に公開された、これをサポートする PyPI 自体への PR です。
私はピオディドを崇拝していますが、過去にはこの制限に不満を感じていました。 C または Rust の拡張機能を WASM 用にホイール ファイルにコンパイルすることは可能ですが、これまではそれらを配布する簡単な方法がありませんでした。
多くの人々の努力のおかげで、この問題は修正されました。
luau-wasm で試してみる
何かパッケージできるものを見つけてお祝いすることにしました。かなりの数の実験的な Pyodide プロジェクトが存在していますが、これに最も適しているのは、3 月 9 日からの Luau WebAssembly 研究の急増であると思われました。
Luau は、Roblox によって開発され、MIT ライセンスの下でリリースされた、「段階的型システムを備えた Lua をベースにした小型、高速、組み込み可能なプログラミング言語」です。
C++ で書かれています。 WebAssembly にコンパイルして Pyodide 内で実行できることはすでにわかっていたので、実験をパッケージ化し、GitHub Actions を使用して PyPI に公開するタスクを Codex + GPT-5.5 xhigh に設定しました。
多少の反復が必要でしたが、結果は次のとおりです。 luau-wasm は 276KB を公開する新しい PyPI パッケージです。 luau_wasm-0.1a0-cp314-cp314-pyemscripten_2026_0_wasm32.whl Pyodide で次のように使用できるファイル:
import micropip await micropip.install("luau-wasm") import luau_wasm print(luau_wasm.execute(r''' local animals = {"fox", "owl", "frog", "rabbit"} table.sort(animals, function(a, b) return #a for i, name in animals do print(i .. ". " .. name .. " (" .. #name .. ")") end '''))
Pyodide REPL デモでそのコードを実行して、実際の動作を確認できます。
luau-wasm の GitHub リポジトリには、すべてのビルドおよびデプロイ スクリプト (最新の cibuildwheel を使用) が含まれており、Pyodide をロードしてインストールする HTML デモ ページもデプロイされます。 luau-wasm それを試すためのインターフェイスを提供します: https://simonw.github.io/luau-wasm/

これまでにこれを使用しているパッケージが何個ありますか?
現在、このプラットフォーム用にホイールを公開しているパッケージがいくつあるか知りたかったのです。
ChatGPT を少しいじった後、BigQuery 上の PyPI の公開データセットに対して実行したこの BigQuery SQL にたどり着きました。これはクエリ結果の生の JSON で、これは最新のアップロード日によってパッケージの重複を排除する Datasete Lite の SQLite SQL クエリです。
クエリが正しければ、現在 28 の PyPI パッケージが新しいバージョンで公開されています。 pyemscripten_202*_wasm32 タグ:
luau-wasm、uuid7-rs、cmm-16bit、pyOpenTTDAdmin、imgui-bundle、numbertoolkit、bashkit、geoarrow-rust-core、arro3-io、arro3-core、arro3-compute、onnx、powerfit-em、tcod、chonkie-core、tokie、robotraconteur、pydantic_core、 yaml-rs、cadquery-ocp-novtk-OCP.wasm、uuid_utils、base64_utils、pycdfpp、lib3mf-OCP.wasm、typst、toml-rs、onnx-weekly、dummy-pyodide-ext-test
今後数か月、数年でさらに多くの人々が現れることを願っています。
