WebAssemblyランタイム「Wasmer」がiOSをサポート、iOS上でWebAssemblyを実行。「Wasmer 5.0」正式版リリース
米Wasmer社はスタンドアロンなWebAssemblyランタイム「Wasmer 5.0」の正式リリースを発表しました。
Wasmer 5.0では、iOSのサポート、WebAssemblyランタイムのバックエンドがV8やWAMRなどに変更可能になるなどの新機能が加わりました。
Introducing Wasmer 5.0.
— Wasmer (@wasmerio) October 29, 2024
Experimental V8, Wasmi and WAMR backends
iOS support
Enhanced Performance
Upgraded LLVM and Cranelifthttps://t.co/wpwcmMT0tg
iOS上でWebAssemblyを実行
iOSではこれまでSafariブラウザ上以外でのWebAssemblyの実行は制限されており、そのため2022年にリリースされたWasmer 2.1でのiOSのサポートは、WebAssemblyファイルをiOSのダイナミックライブラリ形式である「.dylib」にプリコンパイルすることで(何らかのアプリケーションからの呼び出しにより)実行可能にするという変則的なサポートにとどまっていました。
参考:WebAssemblyランタイム「Wasmer 2.1」リリース。WASI用に仮想ファイルシステムを実装し、ブラウザでもWASIが利用可能に
Wasmer 5.0ではその制限が一部緩和されたようで、iOS上でWasmerによる直接WebAssemblyの実行が可能になりました。
ただしiOSではSafari以外のサードパーティアプリでのJITの実行が制限されているため、新たに追加されたインタプリタモードでの実行となります。インタプリタモードは後述のV8、Wasmi、WAMRによるものです。
WasmerのiOSサポートによってiOS上でスタンドアロンのWebAssemblyランタイムによるWebAssemblyの実行という選択肢が追加されたことになります。
バックエンドにV8やWAMRなど選択可能に
Wasmerはデフォルトの機能としてWebAssemblyバイナリをネイティブバイナリに変換して実行するコンパイラとして、Singlepass、Cranlift、LLVMの3種類を備えているほか、macOSとLinux環境ではJavascriptCoreなどを用いてWebAssemblyバイナリの実行を可能にしています。
今回、このWebAssemblyランタイムのバックエンドとしてV8、Wasmi(Wasm Interpreter)、WAMR(WebAssembly Micro Runtime)が実験的に選択可能になりました。
V8はGoogleが開発するChromeのJavaScriptエンジンとして知られています。V8を利用することで高性能なJITやガベージコレクション機能を実現するWasmGCなど、V8の高い性能と最新の機能を利用できるようになります。
Wasmiは組み込み機器など限られたコンピューティングリソースを想定したWebAssemblyのインタプリタで、WAMRもIoTやエッジなどでの利用を想定した軽量なWebAssemblyランタイムとして開発されており、それそれのバックエンドの特長を活かすことでWasmerをさまざまな環境での実行に適応させることが期待されます。
そのほかWasmer 5.0では性能向上、コードのスリム化などの改善も行われました。
あわせて読みたい
マイクロソフトが買収したコンテナ最適化Linuxの「Flatcar Container Linux」、CNCFのインキュベーションプロジェクトに採択
≪前の記事
VSCodeの新機能「Copilot Edits」、GitHub Copilotが複数ファイルにわたるコード変更や生成に対応。「ダークモードとライトモードのテーマに対応して」など複雑な指示も可能に