- Compilador que converte programas Python para WebAssembly
- Funciona 3 vezes mais rápido que CPython (WASM) ao eliminar a sobrecarga do interpretador
- Em comparação com CPython (nativo), atinge cerca de 60% da velocidade
- Há várias maneiras de executar Python rapidamente em WebAssembly
- Usar um subconjunto de Python que possa ser compilado em código com bom desempenho: CPython, RPython (PyPy) e Codon
- Usar JIT dentro do Python: PyPy
- Otimizar o código gerado com análise estática: mypy & mypy-c, Nuitka
- Aqui, a decisão final foi usar o compilador otimizador de Python, Nuitka
Nuitka
- O Nuitka funciona convertendo chamadas Python executadas pelo programa em C usando chamadas internas da API do CPython
- Suporta a maioria dos programas Python e converte o código Python nessas chamadas do CPython
- Também pode funcionar como um ofuscador de código (ninguém consegue descompilar o programa!)
- Depois de analisar profundamente todas as opções, ficou claro que a forma mais rápida de executar Python em WebAssembly provavelmente é usando o Nuitka
Compilando Python para WebAssembly com Nuitka
- O Nuitka parece ser a opção mais simples para acelerar Python no contexto de WebAssembly, porque grande parte do trabalho de converter código Python em chamadas do interpretador CPython subjacente já está pronta
- Como o Nuitka ainda não funciona com Python 3.12, foi necessário recompilar o Python 3.11 para WASI e usar o arquivo
libpython.a gerado
- Ao tentar executar o arquivo Wasm gerado, surgiu outro problema, então foi enviado um PR para incorporar as mudanças ao projeto principal do Nuitka
- No momento, o py2wasm usa um fork do Nuitka, mas o plano é transformar o py2wasm em uma camada fina sobre o Nuitka quando as mudanças forem integradas ao upstream
- O requisito inicial era acelerar ao máximo a execução de Python para migrar um backend Python Django do Google Cloud para o Wasmer Edge
- O py2wasm ajudará a aproximar a execução de apps backend em Python na Edge com desempenho impressionante, oferecendo uma alternativa muito mais barata para hospedar esses apps do que os provedores de nuvem atuais
Roteiro futuro
Ainda não há comentários.