検索
ニュース

WebAssemblyでBashやCurlが動く、業界標準APIを拡張した「WASIX」を発表 WasmerWASIを拡張、POSIXに対応

Wasmerは、業界標準のAPI仕様である「WASI」を拡張してPOSIXに対応した新技術「WASIX」を発表した。WASIXを利用すれば、コードを修正することなく、既存アプリケーションをWebAssemblyで実行できる。

Share
Tweet
LINE
Hatena

 WebAssembly(Wasm)ランタイムを開発するWasmerは2023年5月30日(米国時間)、「WASI」(WebAssembly System Interface)を拡張してPOSIX(Portable Operating System Interface)に対応した「WASIX」を発表した。

 WASIXは、WebAssemblyでネットワークやファイル、メモリなどのシステムリソースを抽象化するAPI仕様であるWASIを拡張したものだ。Wasmerは発表の中で、以下のように述べている。

 「2019年に発表されたWASIは、Wasmコミュニティーにとって大きな後押しとなったが、改善のペースの遅さが普及を妨げてきた。WASIXはWASIの提案を拡張し、POSIXとの完全な互換性を持つことで、有用で生産的なアプリケーションを構築できる」

WASIXとは一体何なのか

 WASIXは、既存のWASI ABIの長期的な安定化とサポートに加え、実用的で有用なアプリケーションを今すぐコンパイルして使用できるように、WASIに足りないギャップを十分に補うためのシステムコール拡張を追加するものだ。

 スレッドやバークレーソケット、フォークなど、POSIXのほとんどで利用可能だった機能をサポートすることで、どのようなアプリでも簡単にWasmにコンパイルして、どこでも実行可能になる。

 最小限の修正でWasm/WASIXにコンパイルできるようになったプログラムは、CurlやcPython、Bash、tokio、axumなどだ。

WASIXで拡張される機能とは

 WASIXでは、以下の機能を拡張しているという。

  • 効率的なマルチスレッドの完全サポート
  • ソケットの完全サポート
    • IPv4、IPv6
    • UDP、TCP
    • マルチキャスト、エニーキャスト
    • RAWソケット
  • カレントディレクトリの変更
  • asyncify wizardyを介したsetjmp/longjmpサポート
  • pthreadsのサポート
  • プロセスのフォーク
  • サブプロセスの生成と待機
  • TTYサポート
  • ソケットとファイルの非同期ポーリング
  • パイプとイベントのサポート
  • DNS解決支援

WASIXを使い始めるには

 WASIXプログラムは、ブラウザとサーバのどちらでも公式サイトから試すことができる。

 Wasmerの作成したwasmer-webでは、あらゆるWASIXプログラムが、ブラウザ上で実行するWasmerでも動作することを示している。Wasmerは、以下のように述べている。

 「実装上の問題点も幾つかあるが、WasmerはWASIXを他のビルドターゲットと同じように信頼性が高く、使いやすいものにするために日々取り組んでいる。そして、CアプリケーションをWASIXに簡単にコンパイルできるようにするために、C用のツールチェインを開発中だ」

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る