WebAssemblyをPOSIX対応に拡張した「WASIX」登場、bashやcurl、WebサーバなどLinuxアプリが実装可能に。Wasmerが発表

2023年6月7日

WebAssemblyランタイム「Wamer」の開発元であるWasmer社は、WebAssemblyでファイルやネットワーク、メモリなどのシステムリソースを抽象化する業界標準のAPI仕様である「WASI」(WebAssembly System Interface)を拡張してPOSIX対応にする新技術「WASIX」を発表しました

fig

WASIとPOSIX

WebAssemblyはもともと、Webブラウザ上でネイティブコード並の実行速度でアプリケーションを実行することを目的に策定されたバイナリフォーマットです。

そのWebAssemblyを、LinuxやWindows、macOSなどのOS上でWebAssemblyランタイムを用いて直接実行する際に、OSのシステムコールを抽象化することでOS依存をなくす目的で作られたのが「WASI」でした。

そのためWASIはファイルシステムやネットワークなど、OSで提供されるAPIのうち基本的なものが用意されています。

一方、POSIXとは「Portable Operating System Interface」の略で、主にUNIX系のOS間の互換性を実現するための標準規格です。Linuxを始めとする多くのUNIX系OSは、おおむねPOSIX対応を意識して作られています。

WebAssemblyでbashやcurlが動く

今回Wasmer社が発表したWASIXは、WASIを拡張してPOSIX対応にすることで、POSIXで定義されているスレッドやソケット、フォークなどの多くの機能をWebAssemblyアプリケーションから利用可能にするものです。

これによってWebAssemblyでLinuxアプリケーションの実装が容易になります。下記は「Announcing WASIX」の記事で紹介されている、WebAssemblyで実装されたcurlが実行されたところ。

fig

ほかにもbash、CPython、static-web-serverなど多くのソフトウェアがWASIXで実装されていると説明されています。

Announcing WASIX」から、WASIXの説明を引用します。

WASIX is the long term stabilization and support of the existing WASI ABI plus additional non-invasive syscall extensions that complete the missing gaps sufficiently enough to enable real, practical and useful applications to be compiled and used now.

WASIXは、長期的に安定しサポートされている既存のWASI ABIを変えることなくシステムコールの拡張を追加することで、いま実際に有用なアプリケーションをコンパイルし利用可能にする上で必要なギャップを埋めるものです。

現在WASIXはRust、C、AssemblyScriptで開発するためのツールチェーンが用意され、ドキュメントとして「API Reference」が公開されています。ランタイムは当然ながらWasmerが対応しています。

ただしWASIXはあくまでWasmerが提唱した技術であり、WASIを策定したByteCodeAllianceを始めとする業界の支持が得られているわけではありません。

一方でWASIの策定をしているByteCodeAllianceは、次バージョンのWASIでコンポーネントモデルを採用する方向での進化を検討中です。

参考:WebAssemblyの「WASI Preview 2」で、WebAssemblyコンポーネントの組み合わせによるアプリケーション開発を実現へ

そのためWASIXは興味深い技術ではありますが、今後の普及と標準化にはまだ課題が残っているといえそうです。

あわせて読みたい

WebAssembly プログラミング言語



タグクラウド

クラウド / AWS / Azure / Google Cloud
コンテナ / Docker / Kubernetes
クラウドネイティブ / サーバレス
クラウド障害 / 運用・監視

プログラミング言語 / 開発ツール
JavaScript / Java / .NET / WebAssembly
HTML/CSS / Web標準

アジャイル開発 / スクラム / DevOps / CI/CD
ソフトウェアテスト・品質
ローコード/ノーコード開発

データベース / RDB / NoSQL / 機械学習・AI
Oracle Database / MySQL / PostgreSQL
Office / 業務アプリケーション

ネットワーク / HTTP / QUIC / セキュリティ
OS / Windows / Linux / VMware
ハードウェア / サーバ / ストレージ

業界動向 / 働き方 / 給与・年収
編集後記 / 殿堂入り / おもしろ

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本