Wasmer.ioは、Pythonで書かれたコードをWebAssemblyに変換するコンパイラである「py2wasm」を、4月19日(現地時間)に発表した。
py2wasmを使用することでオーバーヘッドが回避されることにより、ベースラインインタプリタと比較して3倍高速なPythonプログラムの実行を可能にしている。
WebAssemblyによってPythonを高速化する方法としては、コンパイルによってパフォーマンスの高いコードへ変換するPythonサブセットの使用、Python内でのJITの使用、静的解析による生成コードの最適化が挙げられる。しかしながら、完全な構文またはモジュールをサポートするPythonサブセットはまだ登場しておらず、Python JITはウォーミングアップが必要であり、WebAssemblyでのサポートは容易ではない(不可能ではない)。静的解析の利用は、複雑な解釈が必要となり生成されるバイナリが非常に大きくなる一方で、大幅なパフォーマンス向上は期待できない。
このような理由から、開発チームではNuitkaでPythonをWebAssemblyにコンパイルする方法を選択し、現時点ではpy2wasmにおいてNuitkaのフォークを使用しているが、将来的にはpy2wasmをNuitkaの上位レイヤにすることを目指しているという。
- 関連リンク
この記事は参考になりましたか?
- この記事の著者
-
CodeZine編集部(コードジンヘンシュウブ)
CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です