17 poin oleh xguru 2024-04-23 | Belum ada komentar. | Bagikan ke WhatsApp
  • 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

  • Ke depannya, diharapkan py2wasm dapat dipublikasikan sebagai paket Wasmer sehingga cukup menjalankan perintah berikut untuk menggunakannya
    wasmer run py2wasm --dir=. -- myfile.py -o myfile.wasm  
    

Belum ada komentar.

Belum ada komentar.