- Python programlarını WebAssembly'ye dönüştüren bir derleyici
- Yorumlayıcı ek yükünü ortadan kaldırdığı için CPython(WASM)'a göre 3 kat daha hızlı çalışıyor
- CPython(Native) ile karşılaştırıldığında ise hız yaklaşık %60 seviyesinde
- Python'ı WebAssembly üzerinde hızlı çalıştırmanın birkaç farklı yolu var
- Yüksek performanslı koda derlenebilen bir Python alt kümesi kullanmak: CPython, RPython(PyPy) ve Codon
- Python içinde JIT kullanmak: PyPy
- Statik analiz kullanarak üretilen kodu optimize etmek: mypy & mypy-c, Nuitka
- Burada nihayetinde Python optimize edici derleyici olan Nuitka'yı kullanmaya karar verilmiş
Nuitka
- Nuitka, programın yaptığı Python çağrılarını dahili CPython API çağrılarını kullanarak C'ye dönüştürerek çalışır
- Çoğu Python programını destekler ve Python kodunu ilgili CPython çağrılarına dönüştürür
- Bir kod karıştırıcı olarak da çalışabilir (kimse programı decompile edemez!)
- Tüm seçenekler derinlemesine incelendikten sonra, WebAssembly üzerinde Python çalıştırmanın muhtemelen en hızlı yolunun Nuitka kullanmak olduğu fark edilmiş
Nuitka kullanarak Python'ı WebAssembly'ye derlemek
- Nuitka, Python kodunu temel CPython yorumlayıcı çağrılarına dönüştürme işinin büyük kısmını zaten tamamladığı için, WebAssembly bağlamında Python'ı hızlandırmak için en kolay seçenek gibi görünüyor
- Nuitka henüz Python 3.12'de çalışmadığından, Python'ı 3.11 olarak WASI için yeniden derlemek ve üretilen
libpython.a arşivini kullanmak gerekmiş
- Üretilen Wasm dosyasını çalıştırmaya çalışırken başka bir sorun daha ortaya çıktığı için, değişiklikleri Nuitka'ya upstream etmek amacıyla bir PR gönderilmiş
- Şu anda py2wasm, Nuitka'nın bir fork'unu kullanıyor; ancak değişiklikler upstream'e entegre edildiğinde py2wasm'ı Nuitka üzerinde ince bir katman haline getirmeyi planlıyorlar
- Python çalıştırmasını olabildiğince hızlandırarak Python Django backend'ini Google Cloud'dan Wasmer Edge'e taşımak ilk gereksinimleriydi
- py2wasm, Python backend uygulamalarını Edge üzerinde etkileyici performansla çalıştırmaya bir adım daha yaklaştırarak, bu tür uygulamaları barındırmak için mevcut bulut sağlayıcılarına göre çok daha ucuz bir alternatif sunmaya yardımcı olacak
Gelecek yol haritası
Henüz yorum yok.