Publicação de rodas WASM no PyPI para uso com Pyodide
Publicação de rodas WASM no PyPI para uso com Pyodide
13 de junho de 2026
O anúncio de lançamento do Pyodide 314.0 (via Hacker News) inclui notícias que aguardo há muito tempo:
Agora você pode publicar pacotes Python criados para Pyodide (ou qualquer tempo de execução Python compatível com a plataforma PyEmscripten definida no PEP 783) diretamente no PyPI e instalá-los em tempo de execução.
Anteriormente, os mantenedores do Pyodide tinham que manter, construir e hospedar mais de 300 pacotes nós mesmos. Isso criou um fardo significativo para nossos mantenedores e se tornou um grande gargalo para a comunidade, já que cada novo pacote exigia revisão manual.
Seguindo em frente, os mantenedores de pacotes podem simplesmente construir e publicar rodas Pyodide no PyPI, assim como fazem para rodas nativas no Linux, macOS ou Windows.
Aqui está o PR do próprio PyPI apoiando isso, que chegou em 21 de abril.
Eu adoro Pyodide e já fiquei frustrado no passado com essa limitação. É possível compilar extensões C ou Rust para WASM em um arquivo wheel, mas antes não havia uma maneira fácil de distribuí-las.
Graças aos esforços de muitas pessoas, isso foi corrigido!
Experimentando com luau-wasm
Decidi comemorar encontrando algo que pudesse embalar. Tenho alguns projetos experimentais do Pyodide por aí, mas o mais adequado para isso parece ser meu pico de pesquisa no Luau WebAssembly de 9 de março.
Luau é uma “linguagem de programação pequena, rápida e incorporável baseada em Lua com um sistema de tipo gradual”, desenvolvida pela Roblox e lançada sob licença do MIT.
Está escrito em C++. Eu já sabia que era possível compilá-lo no WebAssembly e executá-lo dentro do Pyodide, então configurei o Codex + GPT-5.5 xhigh para a tarefa de empacotar meu experimento e publicá-lo no PyPI usando GitHub Actions.
Demorou alguma iteração, mas aqui está o resultado: luau-wasm é um pacote PyPI totalmente novo que publica um pacote de 276 KB luau_wasm-0.1a0-cp314-cp314-pyemscripten_2026_0_wasm32.whl arquivo que pode ser usado no Pyodide assim:
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 '''))
Você pode executar esse código na demonstração do Pyodide REPL para vê-lo em ação.
O repositório GitHub para luau-wasm inclui todos os scripts de construção e implantação (usando o cibuildwheel mais recente) e também implanta uma página de demonstração HTML que carrega o Pyodide, instala luau-wasm e fornece uma interface para experimentar: https://simonw.github.io/luau-wasm/

Quantos pacotes estão usando isso até agora?
Fiquei curioso para ver quantos pacotes estão atualmente publicando rodas para esta plataforma.
Depois de alguns ajustes no ChatGPT, cheguei a este BigQuery SQL que executei no conjunto de dados público do PyPI no BigQuery. Aqui está o JSON bruto dos resultados da consulta e aqui está uma consulta SQLite SQL no Datasette Lite que desduplica os pacotes pela data de upload mais recente.
Se a consulta estiver correta, existem atualmente 28 pacotes PyPI publicados com o novo pyemscripten_202*_wasm32 tags:
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
Esperamos ver muito mais deles aparecendo nos próximos meses e anos.
