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

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

» 2023年06月19日 08時00分 公開
[@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 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.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。