WebAssembly(Wasm)ランタイムを開発するWasmerは、WASI(X)アプリケーションをブラウザで簡単に実行するための新しいライブラリ「Wasmer JavaScript SDK」を発表した。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
WebAssembly(Wasm)ランタイムを開発するWasmerは2023年12月14日(米国時間)に公式ブログで、WASI(X)アプリケーションをブラウザで簡単に実行するための新しいライブラリ「Wasmer JavaScript SDK」(@wasmer/sdk)を発表した。2023年12月21日にリリースされた「v0.6.0」が最新バージョンとなっている。
WASI(WebAssembly System Interface)は、WebAssemblyでネットワークやファイル、メモリなどのシステムリソースを抽象化するAPI仕様。WASIXは、WASIを拡張してPOSIX(Portable Operating System Interface)の機能を利用可能にする仕様だ。
Wasmer JavaScript SDK(以下、Wasmer JS SDK)を使えば、あらゆるWASIパッケージやWASIXパッケージをブラウザで簡単に実行できる。Python、Bash、FFmpegなど、Wasmer Registry(Wasmerパッケージのレジストリ)で公開されている任意のパッケージがシームレスに実行可能だ。
ブラウザでスレッド、シグナル、サブプロセスなどの機能を使用して、あらゆるUNIXプログラムを(WASIX経由で)実行できる。目的のWasmerパッケージを指定すれば、Wasmer JS SDKが全てのファイル(.wasmと必要なファイルシステム)をダウンロードする仕組みが用意されている。
Wasmerは、Wasmer JS SDKの使用例を紹介した。
Wasmerは、Wasmer.shを公開するために、Rustの1000行のコードとJavaScriptのグルーコードを手作業で書く必要があったが、50行以下のJavaScriptコードで書けるようになったとしている。
Wasmerは、Wasmer JS SDKの技術的な特徴として、以下を紹介している。
JavaScriptはシングルスレッドで実行されるが、JS Workersを使用して、ブラウザでマルチスレッドを実現した。
Asyncifyを使って現在のスタックでプログラムをフリーズさせ、後で新しく作成したWorkerで再開することで、プロセスをフォークできるようにした。
Wasm資産とファイルシステム資産の両方に対応した特別なコンテナフォーマットにより、特定のパッケージを、そのファイルシステムの全ての依存関係とともに一度にダウンロードできるようにした。
開発者ニーズに対応するには、ファイルシステムを扱えるようにすることが重要だとの認識から、Wasmer JS SDK Filesystem APIでファイルシステムを操作できるようにした。
Copyright © ITmedia, Inc. All Rights Reserved.