WebAssemblyランタイム「Wasmer 2.1」リリース。WASI用に仮想ファイルシステムを実装し、ブラウザでもWASIが利用可能に
米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 (@wasmerio) December 1, 2021
- Wasmer-JS
- Virtual Filesystem
- iOS Support
- Singlepass in Windows
- Faster Singlepass compilation
- Deterministic builds
- LLVM 13https://t.co/TWnUiVFqsW
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倍以上に向上するなど、多くの改善が図られています。
あわせて読みたい
CircleCIが無料枠を大幅拡大。1カ月あたり6000分のビルド時間、ユーザー数無制限、最大30件までのジョブ同時実行など
≪前の記事
BigQueryがJSONにネイティブ対応。SQLでJSONに対するクエリが可能に