- Un compilador que convierte programas de Python a WebAssembly
- Elimina la sobrecarga del intérprete, por lo que funciona 3 veces más rápido que CPython (WASM)
- En comparación con CPython (nativo), alcanza aproximadamente el 60% de la velocidad
- Hay varias formas de ejecutar Python rápidamente en WebAssembly
- Usar un subconjunto de Python que pueda compilarse a código de alto rendimiento: CPython, RPython (PyPy) y Codon
- Usar JIT dentro de Python: PyPy
- Optimizar el código generado mediante análisis estático: mypy & mypy-c, Nuitka
- Aquí decidieron finalmente usar Nuitka, un compilador optimizador de Python
Nuitka
- Nuitka funciona convirtiendo las llamadas de Python que realiza el programa a C usando llamadas internas de la API de CPython
- Soporta la mayoría de los programas de Python y transforma el código Python en esas llamadas de CPython correspondientes
- También puede funcionar como ofuscador de código (¡nadie podrá descompilar el programa!)
- Tras analizar a fondo todas las opciones, concluyeron que probablemente la forma más rápida de ejecutar Python en WebAssembly es usar Nuitka
Compilar Python a WebAssembly usando Nuitka
- Nuitka parece ser la opción más sencilla para acelerar Python en un contexto WebAssembly, porque la mayor parte del trabajo de convertir código Python a llamadas del intérprete base de CPython ya está hecho
- Como Nuitka todavía no funciona en Python 3.12, tuvieron que recompilar Python 3.11 para WASI y usar el archivo generado
libpython.a
- Al intentar ejecutar el archivo Wasm generado, apareció otro problema, por lo que enviaron un PR para llevar los cambios a upstream en Nuitka
- Actualmente py2wasm usa un fork de Nuitka, pero cuando los cambios se integren upstream, planean convertir py2wasm en una capa ligera sobre Nuitka
- Su requisito inicial era acelerar al máximo la ejecución de Python para mover un backend Python Django de Google Cloud a Wasmer Edge
- py2wasm acerca un paso más la ejecución de apps backend de Python en el Edge con un rendimiento sorprendente, lo que ayudaría a ofrecer una alternativa mucho más barata para hospedar estas aplicaciones que los proveedores cloud actuales
Hoja de ruta futura
Aún no hay comentarios.