17 puntos por xguru 2024-04-23 | Aún no hay comentarios. | Compartir por WhatsApp
  • 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

  • Más adelante esperan publicar py2wasm como un paquete de Wasmer para que pueda usarse simplemente ejecutando el siguiente comando
    wasmer run py2wasm --dir=. -- myfile.py -o myfile.wasm  
    

Aún no hay comentarios.

Aún no hay comentarios.