WebAssemblyランタイム「Wasmer 2.1」リリース。WASI用に仮想ファイルシステムを実装し、ブラウザでもWASIが利用可能に
今回は「WebAssemblyランタイム「Wasmer 2.1」リリース。WASI用に仮想ファイルシステムを実装し、ブラウザでもWASIが利用可能に」についてご紹介します。
関連ワード (依存、要求、開発等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
米Wasmer社はオープンソースのWebAssemblyランタイム「Wasmer 2.1」の正式リリースを2021年12月2日付けで発表しています。
Wasmer 2.1では、仮想ファイル機能を提供することでWebブラウザやNode.jsで互換性のあるWASI APIを実現、iOSへの対応などの強化が行われました。
BREAKING NEWS: Wasmer 2.1 released. Features added, bugs smashed, don't wait, try it now!
– Wasmer-JS
– Virtual Filesystem
– iOS Support
– Singlepass in Windows
– Faster Singlepass compilation
– Deterministic builds
– LLVM 13https://t.co/TWnUiVFqsW— Wasmer (@wasmerio) December 1, 2021
WasmerはWebAssemblyのランタイム
WebAssemblyはもともとWebブラウザ上で高速に実行できるバイナリフォーマットとして開発されました。
Wasmerは、そのWebAssemblyのバイナリファイルをWebブラウザ以外の環境でも実行可能にするWebAssemblyランタイムの代表的な実装の1つです。
WasmerをWindowsやMac、Linuxにインストールすることで、WebAssemblyバイナリがこれらのOS上で実行可能になります。
ブラウザやNode.js、DenoなどでWASI APIが利用可能に
WebAssemblyのアプリケーションがサーバサイドを含むさまざまな環境で実行できるように、「WebAssembly System Interface」(WASI)と呼ばれるAPIが、業界の標準化団体である「ByteCode Alliance」により策定が進んでいます。
参考:WebAssemblyをWebブラウザ以外の実行環境へ。システムインターフェイスへのアクセスを可能にする「WASI」の策定開始。Mozillaが呼びかけNode.jsらが賛同
WASIは、フィルシステムへのアクセスなどOSに依存したシステムコールを抽象化することで、WebAssemblyアプリケーションの環境依存を排除し、ポータビリティを実現するものです。
Wasmer JSによりWebブラウザやNode.jsでWASIが利用可能に
今回リリースされたWasmer 2.1では、Wasmerに含まれている「Wasmer JS」が刷新、強化されました。新しいWasmer JSを利用することで、WebブラウザでもWASIを利用したWebAssmblyアプリケーションが実行できるようになりました。
また、Wasmer JSはNode.js、DenoにもWASIを利用できる機能を提供します。
これにより、Webブラウザ上でもNode.jsでもDenoでも、Wasmer JSによるWASIを用いたWebAssemblyアプリケーションがポータブルに実行可能になると説明されています。
ただし、WebブラウザのようなJavaScript実行環境ではホストOSのファイルシステムに実際にアクセスすることが制限されているため、Wasmer 2.1にはこれを実現するために、Wasmer JSにはメモリベースで動作する仮想ファイルシステムが組み込まれています。
iOSのサポートを開始
Wasmer 2.1ではiOSもサポートしました。現在、AppleのApp Storeの制限によって、iOS上でWebAssemblyのコンポーネントを実行するには事前にAppleの承認が要求されます。
そこでWasmer 2.1ではWebAssemblyファイルをiOSのダイナミックライブラリ形式である「.dylib」にプリコンパイル可能です。これによりApp Storeでの事前承認が不要となるとのことです。
そのほかWasmer内部で採用しているLLVMが11から13へバージョンアップし、Aarch 64プロセッサでのLLVM実行もサポート、シングルパスコンパイルの速度が10倍以上に向上するなど、多くの改善が図られています。