PythonのコードをWebAssemblyにコンパイルする「py2wasm」、Wasmerが発表
PythonコードをWebAssemblyにコンパイルする「py2wasm」がWasmer社から発表された。WebAssembly版CPythonよりも約3倍高速だ。PythonコードをCPythonのAPIコールに変換するトランスパイラがベースになっている。
WebAssemblyランタイムの開発と提供を行っているWasmer社は、PythonのコードをWebAssemblyバイナリにコンパイルする「Py2wasm」を発表しました。
Announcing py2wasm – A #Python to #WebAssembly compiler that speeds up by 3x your Python apps!https://t.co/0v4YLZC7lY
— Wasmer (@wasmerio) April 18, 2024
WebAssembly版CPythonよりも3倍高速に
PytonをWebAssemblyで実行する方法として、Pythonランタイムの標準実装となっているCPythonをWebAssemblyにコンパイルしたWebAssembly版CPythonを用いてPythonコードを実行することが可能です。
しかしWebAssembly版CPythonの実行速度をネイティブバイナリのCPythonと比較すると非常に遅いとされています。
一方、今回Wasmerが発表したpy2wasmでは、PythonコードそのものをWebAssemblyバイナリ化することなどによりインタプリタのオーバーヘッドを省略できるため、WebAssembly版CPython上でPythonコードを実行するよりも約3倍高速だと説明されています。
PythonコードをCPythonのAPIコールにトランスパイル
PythonコードをWebAssemblyバイナリにコンパイルするpy2wasmコンパイラは、Nuitkaをベースに開発されたと説明されています。
NuitkaはPythonコードをCPythonのAPIコールに変換するトランスパイラです。トランスパイル後のコードをCコンパイラを用いてコンパイルすることで、ネイティブバイナリを生成可能です。
py2wasmはこのNuitkaをベースにWASI(WebAssembly Sysmtem Interface)対応のWebAssemblyバイナリを生成するようにカスタマイズされたものです。
Wasmer社では近い将来、py2wasmをWasmerのパッケージとして公開する予定とのことです。
また、同社自身も今後さらにpy2wasmの高速化を実現し、Python Djangoで構築された同社のバックエンドをWebAssemblyベースのWasmer Edgeへ移行したいとの考えを明らかにしています。
あわせて読みたい
Redisをフォークした「Valkey 7.2.5」安定版が早くも登場。AWS、Google、Oracle、Heroku、Alibaba Cloudなど賛同が広がる
≪前の記事
生成AIのためのGPU投資、さくらインターネットが1000億円、KDDIも1000億円、GMOは100億円規模を発表。経済産業省の認定プログラムを受け