PyPI accepte enfin les packages Python compilés en WebAssembly

Pourquoi ça compte pour toi
Jusqu'à présent, les 300+ packages Pyodide étaient maintenus à la main par une poignée de devs — un goulot d'étranglement absolu. Désormais, n'importe quel créateur peut compiler du C, du Rust ou du C++ en WebAssembly, l'empaqueter en wheel Python et le distribuer via PyPI sans intermédiaire. C'est ouvert à tous. Si tu as une lib C/C++/Rust et que tu veux la rendre utilisable en Python dans le navigateur, tu as maintenant un chemin clair.
Ce qu'il faut retenir
- 1.Pyodide 314.0 permet de publier des wheels WASM directement sur PyPI (standard PEP 783)
- 2.28 packages le font déjà (onnx, pydantic_core, yaml-rs, imgui-bundle, etc.)
- 3.Fini le goulot : pas de revue manuelle, juste ta CI/CD et tu publies
Tu galères avec le jargon ?
Lis la version réécrite en mode débutant — toutes les idées, sans le jargon.
Pourquoi ça change la donne
Pyodide te permet de faire tourner du Python pur dans le navigateur (via WebAssembly). Mais dès que tu veux utiliser une lib native — NumPy, un binding Rust, peu importe — tu étais bloqué. L'équipe Pyodide devait compiler et héberger chaque package elle-même. Résultat : des centaines de paquets en attente, zéro scalabilité.
Maintenant ? Tu compiles ton wheel WASM avec cibuildwheel, tu le tagges pyemscripten_2026_0_wasm32, et tu le pousses sur PyPI comme un wheel Linux classique. Terminé.
L'exemple concret : luau-wasm
Simon Willison (journaliste tech passionné par Pyodide) a testé le truc en empaquetant Luau, un langage Lua rapide écrit en C++ par Roblox. Résultat :
import micropip
await micropip.install("luau-wasm")
import luau_wasm
print(luau_wasm.execute(r'''
local animals = {"fox", "owl", "frog"}
table.sort(animals, function(a, b) return #a < #b end)
for i, name in animals do
print(i .. ". " .. name)
end
'''))
C'est du Python, tournant en WASM dans ton navigateur, exécutant du Lua compilé. 276 KB en tout.
Qui publie déjà ?
Les 28 premiers adoptants :
- ▸Libs Rust : uuid7-rs, yaml-rs, toml-rs, uuid_utils
- ▸Libs de calcul : onnx, pydantic_core, arro3 (Apache Arrow), powerfit-em
- ▸Divers : imgui-bundle, cadquery, typst, robotraconteur
L'écosystème démarre à zéro mais avec un cadre clair, ça devrait s'accélérer.
Pour qui ?
- ▸Créateurs de libs C/C++/Rust : tu peux enfin toucher les devs Python/web sans maintenir deux distributions.
- ▸Devs web Python : fini l'attente pour une nouvelle version d'une lib — elle arrive sur PyPI comme les autres.
- ▸Startups low-code/no-code : tu peux embarquer des calculs lourds en WASM dans le navigateur sans serveur.
Attention : c'est pas une solution pour remplacer npm ou tout basculer côté client (la perf du WASM c'est pas magique). Mais pour du calcul interactif, du traitement local de données sensibles, ou des démos hors ligne, c'est une vraie porte ouverte.
Et concrètement pour toi ?
Choisis ton profil — la lecture de l'article change selon qui tu es.
Pour toi, c'est le signe que Python continue à grignoter le web : jusqu'à présent, Python était serveur-side, maintenant il peut s'exécuter dans le navigateur sans dépendre d'un intermédiaire centralisé. C'est un shift silencieux vers plus de calcul décentralisé — comprends que la limite entre frontend et backend se brouille.
Essayer maintenant
Explorer luau-wasm sur Pyodide REPL →Source
Pour aller plus loin
Cet article t'a donné envie d'approfondir ? Deux formations Noésis t'attendent :