將WASM輪子釋出到PyPI以便與Pyodide一起使用
Pyodide 314.0版本現在允許將WebAssembly編譯的Python包直接釋出到PyPI並執行時安裝,大大簡化了分發流程。示例包luau-wasm已成功釋出,目前已有28個包採用此新方式。
Pyodide 314.0版本於2026年6月13日釋出,帶來了一個里程碑式的改變:Python包現在可以編譯為WebAssembly(WASM)並作為輪子檔案直接釋出到PyPI,然後在瀏覽器中的Pyodide執行時安裝。這一功能由來已久,Pyodide團隊長期以來一直是分散式Python科學計算棧進入瀏覽器的關鍵橋樑,但過去他們不得不手動構建並託管超過300個包,每新增一個包都需要人工稽核,成為社群發展的巨大瓶頸。現在,包開發者可以像釋出Linux、macOS或Windows原生輪子一樣,將Pyodide相容的WASM輪子釋出到PyPI。支援這一功能的PyPI拉取請求已於4月21日合併。
為了驗證這一新功能,作者Simon Willison建立了一個名為luau-wasm的示例包。Luau是Roblox開發的一種“小巧、快速、可嵌入的程式語言,基於Lua並具有漸進型別系統”,採用MIT許可證釋出。其編譯器用C++編寫。Willison此前已成功將Luau編譯為WebAssembly並在Pyodide中執行,此次他利用Codex和GPT-5.5模型,構建了一個完整的GitHub Actions工作流,實現了從編譯到釋出的全自動化。最終產物是一個276KB的輪子檔案,使用者只需幾行程式碼即可在Pyodide中安裝並執行Luau指令碼。他還部署了一個HTML演示頁面,該頁面載入Pyodide、安裝luau-wasm並提供一個互動式介面,使用者可以在瀏覽器中嘗試執行Luau程式碼,示例包括斐波那契數列計算等。
此外,Willison透過BigQuery查詢了PyPI的公開資料集,發現已有28個包使用了新的pyemscripten_202*_wasm32標籤。這些包涵蓋多種用途,包括uuid7-rs、imgui-bundle、pydantic_core、typst等。隨著這一機制的普及,未來預計會有更多Python包支援在瀏覽器中直接執行,進一步推動WebAssembly生態的發展。