WebAssemblyランタイム「Wasmer 2.3」が公開、スタックスイッチャを導入

 米Wasmerは6月7日、WebAssemblyランタイムの最新版「Wasmer 2.3」を発表した。スタックスイッチャ「Corosensei」の導入、ネイティブコンパイルのサポートなどの特徴が加わっている。

 WasmerはサーバーサイドのWebAssemblyランタイム。WASIとEmscriptenをサポートし、ほぼネイティブレベルという速度、それにセキュリティを特徴とする。軽量なコンテナを作成してデスクトップ、クラウド、エッジなどで動かすことができる。MIT Licenseの下で公開されている。Wasmer 2.3は2021年6月に登場した2系の最新版。3月に公開した2.2に続くリリースとなる。次期メジャーリリースである3.0を控えたリリースと位置付けている。

 スタックスイッチャーCorosenseiを導入した。Rustで作成されており、ホスト言語とWasm/WebAsseblyへのスイッチを可能にするという。Rust 1.59のインラインアセンブリのネイティブサポートにより実現した。これまでWasmと同じスタックを使ってWebAssemblyの呼び出しが行われていたが、攻撃に対して脆弱だったと説明している。

 ネイティブコンパイルとしてWasm/WASI(WebAssembly System Interface)へのコンパイルをサポートした。WasmerはWebAssemblyプログラムのコンパイルにあたって、Singlepass、Cranelift、LLVMの3種類を使い分けるが、インハウスで開発したSinglepassコンパイラ関連でも強化が加わった。Singlepassはスマートコントラクトを安全かつ高速に走らせることができるなどブロックチェーンに最適と位置付けており、最新版ではバックトレースのサポートを強化し、Dylibエンジンで動かすことができるようになった。

 合わせて、Craneliftはバージョン0.82となった。これにより、SIMD命令セットのサポートが実現し、ISLEを使った新しいコンパイル手法を試すことができるという。このほかにも多数の機能強化が加わっている。

Wasmer
https://wasmer.io