Publicação de rodas WASM no PyPI para uso com Pyodide

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/

Publicação de rodas WASM no PyPI para uso com Pyodide

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.



Source link

Postagens Similares

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *