WebAssemblyランタイム「Wasmer」がiOSをサポート、iOS上でWebAssemblyを実行。「Wasmer 5.0」正式版リリース
今回は「WebAssemblyランタイム「Wasmer」がiOSをサポート、iOS上でWebAssemblyを実行。「Wasmer 5.0」正式版リリース」についてご紹介します。
関連ワード (参考、形式、性能向上等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
米Wasmer社はスタンドアロンなWebAssemblyランタイム「Wasmer 5.0」の正式リリースを発表しました。
Wasmer 5.0では、iOSのサポート、WebAssemblyランタイムのバックエンドがV8やWAMRなどに変更可能になるなどの新機能が加わりました。
Introducing Wasmer 5.0.
Experimental V8, Wasmi and WAMR backends
iOS support
Enhanced Performance
Upgraded LLVM and Cranelifthttps://t.co/wpwcmMT0tg— Wasmer (@wasmerio) October 29, 2024
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では性能向上、コードのスリム化などの改善も行われました。