検索
ニュース

「Wasmer 6.0」が登場、ネイティブに近い速度でWebAssemblyを実行可能 主要な強化点は?実行時のバックエンド切り替えもサポート

Wasmerは、WebAssembly(Wasm)ランタイムの最新版「Wasmer 6.0」を発表した。

Share
Tweet
LINE
Hatena

 Wasmerは2025年4月25日(米国時間)、同社のWebAssembly(Wasm)ランタイムの最新版「Wasmer 6.0」を発表した。

 WebAssemblyは、Webブラウザなどモダンな実行環境での効率的なコード実行とコンパクトなコード表現を実現する安全でポータブルな低レベルフォーマット。World Wide Web Consortium(W3C)がコア仕様をW3C勧告として公開している。Wasmerは、WebAssemblyをネイティブで実行できるようにするオープンソースのランタイムだ。

 Wasmerは、Wasmer 5.0のリリース以来、「V8」「Wasmi」「WAMR」といったバックエンドのサポートを追加してきたが、単一のバックエンドしか各バイナリにコンパイルできなかった。複数のバイナリを配布することは、ライブラリ開発者にとって、あるいはエッジ展開において大きな負担となっていた。Wasmer 6.0ではこの制限を取り除き、30〜50%%の速度向上を実現した。

 なお、V8はGoogleのJavaScriptエンジン、WasmiはRustで実装されたオープンソースのインタープリタ、WAMRはCで実装されたオープンソースのエッジ向けWasmランタイムだ。

WebAssemblyの速度向上など、Wasmer 6.0の主要な強化点は?

 Wasmerは、Wasmer 6.0の主な機能強化点として以下を挙げている。

  • LLVMバックエンドの改善により、WebAssemblyがネイティブに近い速度で実行可能に
  • LLVM、V8、JSバックエンドでゼロコストのWebAssembly例外処理をサポートし、PHPの速度が3〜4倍に向上
  • 実行時におけるバックエンドの切り替えをサポート(「wasmer run … --v8」「wasmer run ... --jsc」、…)
  • WASIXを改善。WASIXは、WebAssemblyでネットワークやファイル、メモリなどのシステムリソースを抽象化するAPI仕様「WASI」を拡張し、POSIX(Portable Operating System Interface)に対応させたもの
  • 多くのバグ修正と改善

 Wasmerの最新版は、以下のコマンドでインストールする。

curl https://get.wasmer.io -sSfL | sh

LLVMバックエンドの改善でネイティブに近い速度でWasmが実行可能に

 Wasmer 6.0では、LLVMコードジェネレータを刷新し、冗長なパスの削除と、新しい実験的なパスに基づくレジスタの割り当ての改善により、ベンチマーク結果が以下のように向上している。

  • Coremark:ネイティブ(100%の速度)、Wasmer 5(90%)、Wasmer 6(95%)
  • WordPress(コールドスタート時間):ネイティブPHP(100%)、Wasmer 5(54%)、Wasmer 6(80%)
  • PHPBench:ネイティブPHP(100%)、Wasmer 5(37%)、Wasmer 6(69%)

Coremark(数値が大きいほど良い)(提供:Wasmer)

PHPBench(数値が小さいほど良い)(提供:Wasmer)

WordPressコールドスタート時間(数値が小さいほど良い)(提供:Wasmer)

WebAssembly例外処理のサポート(LLVMとV8による)

 Wasmer 6.0はWASM例外処理をサポートし、パフォーマンスの向上に加え、例外処理に依存する言語のより良いサポートが可能となった。

実行時における複数バックエンドのサポート

 Wasmer APIの内部構造の大部分がリファクタリングされた。開発者が使い慣れているAPIの多くは、これまでと同様だが、以下のような例外がある。

  • 一部のSystemトレイトと型がwasmer::からwasmer::sys::に移動した
  • Wasm-C-API(WebAssembly C and C++ API)のサポートが刷新され、バックエンドを動的に使用できるようになった

WASIXの改善

 WASIXの内部構造が大幅に改善された。

  • サブプロセスとパイプ:完全に分離されているが、高速なIPC(プロセス間通信)が可能
  • ファイルシステム:スマートなinodeキャッシュとCOWにより、マルチテナントのエッジ環境でのRAM使用量が減少した
  • posix_spawn:内部で重いforkを使用せずに済むようになった

Copyright © ITmedia, Inc. All Rights Reserved.