スタンドアロンなWebAssemblyランタイム「Wasmer 2.0」正式リリース、Win/Mac/Linux対応。SIMDに対応、実行速度が約50%改善、参照型対応など
米Wasmer社はオープンソースのWebAssemblyランタイム「Wasmer 2.0」の正式リリースを発表しました。
Wasmer 2.0, Its a big deal!https://t.co/RHIdeOiRBJ
— Wasmer (@wasmerio) June 16, 2021
WebAssemblyはもともとWebブラウザ上で高速に実行できるバイナリフォーマットとして開発されましたが、現在ではWebブラウザだけでなくOSやコンテナ、ブロックチェーンなどさまざまな環境で実行可能になっており、多様なランタイムが開発されています。
参考:KubernetesのノードとしてWebAssemblyランタイムを用いる「Krustlet」、CNCFのサンドボックスプロジェクトに申請
Wasmerはその代表的なランタイムの1つ。WindowsやMac、Linux上でWebAssemblyを実行できるスタンドアロンなランタイムです。WasmerをWindowsやMac、Linuxにインストールすることで、RustやGoなどのコードから生成したWebAssemblyバイナリがOS上で実行可能になります。
WebAssemblyをOS上などさまざまなプラットフォームで実行できるようにするためのAPIなどを定めたWASI(WebAssembly System Interface)にも対応しています。
SIMD対応、実行性能が50%向上など
Wasmer 2.0ではSIMD(Single Instruction, Multiple Data)に対応しました。
SIMDとは、一般に1つの命令で同時に複数のデータを処理できるプロセッサの命令、もしくはその処理のことを指します。これを活用することで、単純な演算を大量に繰り返すような画像処理や機械学習、物理演算などの処理を高速に実行できるようになります。
これによりWebAssemblyによる画像処理や機械学習などの対応促進が期待できます。
また、新たに参照型(Reference Types)が実装されました。参照型の変数は、渡された関数の中で値が書き換えられると、その変更は呼び出し元の変数の値にも反映されます。そのためモジュール間での高速な値の受け渡しなどに有効とされています。
WasmerはWebAssemblyバイナリを内部でCPUのネイティブバイナリにコンパイルして実行していますが、そのコンパイラがプラガブルになっています。このコンパイラを用いた実行速度も2倍近く改善されています。
今回、Wasmer 2.0でのLLVMコンパイラでは浮動小数点の演算速度が約56%向上し、Craneliftでは約48%向上していると説明されています。
関連記事
あわせて読みたい
GitHubによるDockerコンテナレジストリ「GitHub Packages Container registry」が正式サービスに
≪前の記事
ずっと無料で使えるクラウドの「Free Tier」主要サービスまとめ。2021年版