- Python प्रोग्रामों को WebAssembly में बदलने वाला compiler
- interpreter overhead हटाकर यह CPython(WASM) की तुलना में 3 गुना तेज चलता है
- CPython(Native) की तुलना में इसकी गति लगभग 60% है
- WebAssembly पर Python को तेज़ी से चलाने के कई तरीके हैं
- Python के ऐसे subset का उपयोग जो high-performance code में compile हो सके: CPython, RPython(PyPy) और Codon
- Python के भीतर JIT का उपयोग: PyPy
- static analysis का उपयोग करके generated code को optimize करना: mypy & mypy-c, Nuitka
- यहाँ अंततः Python optimizing compiler Nuitka का उपयोग करने का निर्णय लिया गया
Nuitka
- Nuitka, प्रोग्राम द्वारा किए जाने वाले Python calls को internal CPython API calls का उपयोग करके C में बदलकर काम करता है
- यह अधिकांश Python प्रोग्रामों को support करता है और Python code को संबंधित CPython calls में बदल देता है
- यह code obfuscator की तरह भी काम कर सकता है (कोई भी प्रोग्राम को decompile नहीं कर सकता!)
- सभी विकल्पों का गहराई से विश्लेषण करने के बाद यह समझ आया कि WebAssembly पर Python चलाने का सबसे तेज़ तरीका शायद Nuitka का उपयोग करना है
Nuitka का उपयोग करके Python को WebAssembly में compile करना
- क्योंकि Python code को मूल CPython interpreter calls में बदलने का अधिकांश काम Nuitka पहले ही कर चुका है, इसलिए WebAssembly context में Python की speed बढ़ाने के लिए यह सबसे आसान विकल्प लगता है
- चूँकि Nuitka अभी Python 3.12 पर काम नहीं करता, इसलिए Python 3.11 को WASI के लिए फिर से compile करना पड़ा और generated
libpython.a archive का उपयोग करना पड़ा
- generated Wasm file को चलाने की कोशिश करते समय एक और समस्या आई, इसलिए Nuitka में बदलाव upstream करने के लिए एक PR submit किया गया
- फिलहाल py2wasm, Nuitka के एक fork का उपयोग करता है, लेकिन बदलाव upstream में merge हो जाने के बाद py2wasm को Nuitka के ऊपर एक thin layer बनाने की योजना है
- Python execution को अधिकतम तेज़ बनाकर Python Django backend को Google Cloud से Wasmer Edge पर migrate करना हमारी शुरुआती आवश्यकता थी
- py2wasm, Python backend apps को Edge पर शानदार performance के साथ चलाने के एक कदम और करीब लाता है, जिससे मौजूदा cloud providers की तुलना में ऐसे apps host करने के लिए कहीं सस्ता विकल्प उपलब्ध कराने में मदद मिलेगी
आगे का roadmap
अभी कोई टिप्पणी नहीं है.