- Kompiler yang mengubah program Python menjadi WebAssembly
- Berjalan 3x lebih cepat dibandingkan CPython (WASM) karena menghilangkan overhead interpreter
- Dibandingkan CPython (Native), kecepatannya sekitar 60%
- Ada beberapa cara untuk menjalankan Python dengan cepat di WebAssembly
- Menggunakan subset Python yang dapat dikompilasi menjadi kode berperforma tinggi: CPython, RPython (PyPy), dan Codon
- Menggunakan JIT di dalam Python: PyPy
- Mengoptimalkan kode yang dihasilkan dengan analisis statis: mypy & mypy-c, Nuitka
- Pada akhirnya, diputuskan untuk menggunakan Nuitka, kompiler pengoptimal Python
Nuitka
- Nuitka bekerja dengan mengonversi pemanggilan Python yang dijalankan program menjadi C menggunakan pemanggilan API internal CPython
- Mendukung sebagian besar program Python dan mengubah kode Python menjadi pemanggilan CPython yang sesuai
- Juga dapat berfungsi sebagai obfuscator kode (tidak ada yang bisa mendekompilasi program Anda!)
- Setelah menganalisis semua opsi secara mendalam, disadari bahwa cara tercepat untuk menjalankan Python di WebAssembly kemungkinan adalah menggunakan Nuitka
Mengompilasi Python ke WebAssembly dengan Nuitka
- Nuitka tampaknya menjadi opsi termudah untuk mempercepat Python dalam konteks WebAssembly karena sebagian besar pekerjaan untuk mengubah kode Python menjadi pemanggilan interpreter CPython dasarnya sudah selesai
- Nuitka belum berjalan di Python 3.12, jadi Python harus dikompilasi ulang ke WASI menggunakan Python 3.11 dan arsip
libpython.a yang dihasilkan harus digunakan
- Saat mencoba menjalankan file Wasm yang dihasilkan, muncul masalah lain sehingga PR diajukan untuk meng-upstream perubahan ke Nuitka
- Saat ini py2wasm menggunakan fork dari Nuitka, tetapi setelah perubahan tersebut diintegrasikan ke upstream, ada rencana menjadikan py2wasm sebagai lapisan tipis di atas Nuitka
- Kebutuhan awal kami adalah mempercepat eksekusi Python semaksimal mungkin agar backend Python Django dapat dipindahkan dari Google Cloud ke Wasmer Edge
- py2wasm akan membantu membawa aplikasi backend Python selangkah lebih dekat untuk berjalan di Edge dengan performa luar biasa, sehingga bisa menyediakan alternatif yang jauh lebih murah untuk meng-host aplikasi semacam ini dibandingkan penyedia cloud saat ini
Roadmap ke depan
Belum ada komentar.