Rust言語、WebAssemblyでコンポーネントモデルを実現する「WASI Preview 2」対応を発表
今回は「Rust言語、WebAssemblyでコンポーネントモデルを実現する「WASI Preview 2」対応を発表」についてご紹介します。
関連ワード (今年、期待、競合等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
Rust言語がWebAssemblyでコンポーネントモデルなどを実現するWASI 0.2(もしくはWASI Preview 2:WebAssembly System Interface Preview 2)に対応することを明らかにしました。
Rust言語はWebAssemblyアプリの開発に人気
Rust言語は、C言語のように低レベルのシステム開発向けに作られた言語です。不正なメモリ領域を指すポインターなどを許容しない安全なメモリ管理と、マルチスレッド実行においてデータ競合を排除した高い並列性を実現している点が特長です。
WebAssemblyアプリケーションを開発するために使われる言語としても人気が高く、WebAssembly関連の調査では、WebAssemblyアプリケーション開発で最も使われている言語として3年連続で1位となっています。
WASI Preview 2ではコンポーネントモデルを実現
そのWebAssemblyアプリケーションにおいて、OSやプラットフォームの依存性をなくすために策定された業界標準がWASIです。
もともとWebAssemblyはWebブラウザ上で高速に実行するためのバイナリフォーマットとして策定されましたが、その後OS上でWebAssemblyバイナリを実行できるスタンドアロンのWebAssemblyランタイムが登場しました。
WebブラウザやさまざまなOS上でWebAssemblyアプリケーションする際に、OSやプラットフォームのAPIを抽象化することで、WebAssemblyアプリケーションのポータビリティを実現する業界標準仕様としてWASIが策定されました。
そのWASIは最初のバージョンとなるWASI Preview 1で、POSIXの基本的な要素を元に作られました。
参考:WebAssemblyをWebブラウザ以外の実行環境へ。システムインターフェイスへのアクセスを可能にする「WASI」の策定開始。Mozillaが呼びかけNode.jsらが賛同
そして今年(2024年)1月に安定版に到達したWASI Preview 2では、OSや開発に用いられたプログラミング言語に依存せず、WebAssemblyで作られたモジュールを自由に組み合わせてアプリケーションを構築できるコンポーネントモデルを中心とした強力な仕様となりました。非同期IO、ネットワーキング、HTTPなどのさまざまな機能やインターフェイスも用意されます。
参考:WebAssemblyを進化させる「WASI Preview 2」が安定版に到達。OSや言語に依存しないコンポーネントモデルを実現
ただしWASI Preview 2はWASI Preview 1とは互換性がないため、移行には注意が必要となります。
2024年末にはWASI Preview 2への対応完了
RustのWASI Preview 2への対応は、5月に予定されているRust 1.78で「wasm32-wasip」ターゲットが導入され開始されます。ただしこの時点ではまだstdlibのサポートなど多くの機能が欠けており、2024年中は対応作業が進められます。
そして2024年末には対応作業の完了が期待されています。
RustのWASI Preview 2対応により、Rustから生成されたさまざまなWebAssemblyコンポーネントを組み合わせてアプリケーションを構築できるようになることが期待されるとともに、おそらくは多元と比較して早期にWASI Preview 2への対応を行うことで、WebAssemblyアプリケーションの開発言語としてさらに人気を高めることになるはずです。