Tecnología

¿Qué es Pyodide? Los paquetes de Python ya pueden publicar wheels WebAssembly en PyPI

Hacker Newshace 3 h
Editor de código abierto en una laptop sobre un escritorio iluminado por el sol
Editor de código abierto en una laptop sobre un escritorio iluminado por el solPhoto: Daniil Komov / Pexels

La versión 314.0 de Pyodide permite a los paquetes de Python publicar wheels WebAssembly directamente en PyPI. El anuncio difundido en Hacker News marca un punto de inflexión para el ecosistema de Python en el navegador. Veamos qué es Pyodide y por qué importa.

Pyodide es una compilación del intérprete CPython de Python a WebAssembly (Wasm). WebAssembly es un formato de bytecode portable que los navegadores modernos pueden ejecutar. Gracias a Pyodide, el código Python corre directamente en el navegador sin necesidad de instalar Node.js ni Python en la máquina. El proyecto nació como código abierto en Mozilla y ahora lo mantiene una comunidad independiente.

¿Por qué Python en el navegador? Tres casos de uso principales. Primero, educación: un estudiante puede aprender Python en el navegador sin instalar nada. JupyterLite, del Project Jupyter, corre sobre Pyodide y se ha extendido en las aulas. Segundo, visualización de datos: dashboards que corren en la página hacen análisis dinámico con pandas y matplotlib. Tercero, comunicación científica: un investigador puede publicar un artículo con Python ejecutable en el navegador.

El concepto de wheels WebAssembly (Wasm wheels): el código compilado para distribución Python se entrega como un paquete pre-compilado llamado "wheel". Los wheels clásicos se producen por sistema operativo (Linux/macOS/Windows) y arquitectura de CPU (x86_64, arm64). Los wheels WebAssembly se compilan para la diana WebAssembly y se ejecutan directamente en el navegador.

Se hicieron dos configuraciones de bajo nivel. Primero, la infraestructura de PyPI reconoce y aloja oficialmente la diana WebAssembly. Segundo, la capa de instalación de paquetes de Pyodide (`micropip`) descubre e instala automáticamente estos nuevos wheels. Para los desarrolladores, esto añade la diana WebAssembly a la acción "publicar paquete Python".

Límite importante: no todos los paquetes se compilan limpiamente a WebAssembly. Los paquetes Python puros ya funcionaban. Los paquetes con extensiones en C (NumPy, SciPy, pandas, scikit-learn) se han soportado en Pyodide a través de compilaciones a medida. El nuevo paso permite a autores de paquetes de terceros ofrecer ellos mismos esa diana a través de PyPI.

Flujo previo: un desarrollador que quería usar paquetes tipo NumPy en Pyodide debía esperar una distribución compilada por el equipo Pyodide. El nuevo modelo permite al mantenedor del paquete publicar su propio wheel WebAssembly. Es una puerta importante para la amplitud del ecosistema.

En rendimiento, WebAssembly suele ser más rápido que JavaScript puro, pero el WebAssembly en hilo principal sigue limitado por la memoria y CPU del navegador. Las últimas versiones de Pyodide han ampliado el soporte de hilos Worker para empujar más allá la computación paralela.

Dimensión de seguridad: WebAssembly corre dentro del sandbox del navegador, así que no tiene acceso directo a archivos del sistema o recursos de red. Eso hace a Pyodide seguro para estudiantes, investigadores y demos públicas. Desde la perspectiva de seguridad empresarial, esos límites también son una ventaja.

Contexto para Turquía: las plataformas educativas de TÜBİTAK ULAKBİM y las iniciativas de recursos educativos abiertos del YÖK son candidatos naturales para escalar entornos Python en navegador como Pyodide. Los cursos de data science de Boğaziçi, METU e ITU ya se mueven hacia material de laboratorio basado en JupyterLite/Pyodide.

Clave concreta para desarrolladores: si publica un nuevo paquete Python, considere añadir una diana de wheel WebAssembly a su pipeline de build. cibuildwheel y auditwheel añadieron soporte WebAssembly en sus últimas versiones. Si mantiene un paquete existente, espere una demanda creciente de ejecutar su paquete en el navegador vía Pyodide. Este artículo no constituye consejo para desarrolladores.

Este artículo es un resumen editorial asistido por IA basado en Hacker News. La imagen es una foto de archivo de Daniil Komov en Pexels.

Para seguir leyendo