O criador de tempo de execução do WebAssembly, Wasmer, revelou o py2wasm, um compilador Python para WebAssembly que transforma programas Python no formato de instrução binária WebAssembly (também conhecido como Wasm).

Usando um fork do compilador Nuitka Python, py2wasm converte programas Python em Wasm, permitindo que eles sejam executados sem sobrecarga do interpretador. Introduzido em 18 de abril, o py2wasm aborda uma situação em que o desempenho dos programas Python no WebAssembly tem sido inferior ao ideal, escreveu o fundador e CEO da Wasmer, Syrus Akbary, em uma postagem no blog. Akbary disse que o py2wasm obtém cerca de 70% da velocidade nativa do Python e é cerca de 2,5x a 3x mais rápido que o interpretador Python.

Wasmer usou Nuitka para acelerar o Python no WebAssembly porque a maior parte do trabalho árduo já foi feita para transpilar o código Python em chamadas de intérprete CPython subjacentes. Nuitka funciona transpilando as chamadas Python de um programa para C, usando chamadas internas da API CPython, disse Akbary. Nuitka suporta a maioria dos programas Python e também pode funcionar como um ofuscador de código, evitando que alguém descompile um programa.

Como Nuitka ainda não funciona com Python 3.12, Wasmer teve que recompilar Python para Python 3.11 para WASI (WebAssembly Systems Interface) e usar o gerado libpython.a arquivo. Nuitka então poderia usar esta biblioteca ao direcionar WASI e WebAssembly para construir o executável. Como o transpilador Nuitka foi executado em uma arquitetura de 64 bits, mas o código gerado estava sendo executado em uma arquitetura de 32 bits, foi necessário trabalhar para consertar o protótipo, disse Akbary.

O escritor sênior da InfoWorld, Serdar Yegulalp, contribuiu para este relatório.