PythonのコードをWebAssemblyにコンパイルする「py2wasm」、Wasmerが発表

2024年4月22日

PythonコードをWebAssemblyにコンパイルする「py2wasm」がWasmer社から発表された。WebAssembly版CPythonよりも約3倍高速だ。PythonコードをCPythonのAPIコールに変換するトランスパイラがベースになっている。


WebAssemblyランタイムの開発と提供を行っているWasmer社は、PythonのコードをWebAssemblyバイナリにコンパイルする「Py2wasm」を発表しました

WebAssembly版CPythonよりも3倍高速に

PytonをWebAssemblyで実行する方法として、Pythonランタイムの標準実装となっているCPythonをWebAssemblyにコンパイルしたWebAssembly版CPythonを用いてPythonコードを実行することが可能です。

しかしWebAssembly版CPythonの実行速度をネイティブバイナリのCPythonと比較すると非常に遅いとされています。

一方、今回Wasmerが発表したpy2wasmでは、PythonコードそのものをWebAssemblyバイナリ化することなどによりインタプリタのオーバーヘッドを省略できるため、WebAssembly版CPython上でPythonコードを実行するよりも約3倍高速だと説明されています。

py2wasmはWebAssembly版CPythonよりも約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へ移行したいとの考えを明らかにしています。

あわせて読みたい

WebAssembly プログラミング言語 Python




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本