4月10日、Rust言語はWASI(WebAssembly System Interface)ターゲットを現在の0.1から0.2に切り替えることを発表した。
この更新が行われるのはRust 1.78からで、wasm32-wasip1
とwasm32-wasip2
の二つの新しいターゲットが導入される。wasm32-wasip2
がWASI 0.2をサポートするターゲット名で、これを指定することでRustから出力されるWebAssemblyコードがWASI 0.2に対応したものとなる。wasm32-wasip1
は、既存のwasm32-wasi
ターゲットの別名として当面は機能するが、2025年1月5日のRust 1.84で削除される予定であり、それまでに新しいwasm32-wasip1
ターゲットに移行することが推奨される。
WASIとは
WebAssemblyは、ブラウザのみならず、様々な環境で実行できるバイナリコードであり、クロスプラットフォーム開発の重要な選択肢の一つとなっている。WASIはそのWebAssemblyをサーバーやその他のシステムで実行するためのインターフェイスを提供し、より広い範囲での利用を可能にする。
WASIは、WebAssemblyのアプリケーションがオペレーティングシステムその他のリソースに安全にアクセスできるように設計されたインターフェイスである。これにより、WebAssemblyがブラウザ外でのより幅広い用途に利用される道が開かれた。具体的には、ファイルシステムへのアクセス、環境変数の取得、プロセスの起動など、オペレーティングシステムレベルの操作を可能にする機能が提供される。WASIにより、開発者はサーバーアプリケーションやコマンドラインツール、さらにはシステムユーティリティなど、従来はネイティブ言語でしか実現できなかったようなプログラムをWebAssemblyで開発できるようになる。
WASI 0.2への移行
この度のRustの更新は、WASI 0.2の安定化に伴うもので、非同期IO、ネットワーキング、HTTPなどの標準インターフェイスを通じて、WASI上で非同期ネットワークサービスを実現することが可能になる。WASI 0.2はWebAssemblyの利用範囲を大きく拡大し、クラウド、エッジコンピューティング、その他の分散システムでの使用を促進することが期待されている。wasm32-wasip2
ターゲットは、これらの機能の実現に向けた初期段階のものとして導入され、今後数ヶ月にわたり、標準ライブラリのサポートなど、期待される機能の追加が進められる。
開発者にとっては、既存のwasm32-wasi
からwasm32-wasip1
への移行期間が設けられており、2025年のRust 1.84リリースまでに移行を完了させる必要がある。この移行は、将来のWASI 1.0リリースに向けた準備でもあり、RustがWebAssembly開発の最前線を走り続けるための重要な一歩である。
WebAssemblyとWASIの開発は、Webだけでなく、さまざまな環境でのアプリケーション開発の可能性を広げるものだ。Rustのこのような動きは、開発者がより強力で柔軟なアプリケーションを構築できるよう支援し、技術革新を推進する。
詳細はChanges to Rust's WASI targetsを参照されたい。