C#からWebAssembly/WASIバイナリ生成可能に、.NET 8 SDKで実験的実装
今回は「C#からWebAssembly/WASIバイナリ生成可能に、.NET 8 SDKで実験的実装」についてご紹介します。
関連ワード (主要、具体的、説明等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
マイクロソフトは、C#のコードからWASIに対応したWebAssemblyバイナリの生成を.NET 8 SDKで可能にする実験的実装「wasi-experimental」が追加されたと、ブログ「Extending WebAssembly to the Cloud with .NET」で明らかにしました。
WebAssembly System Interface provides a way for WebAssembly code to call and implement arbitrary APIs, safely and across languages.
… and now, you can create WASI apps with #dotNET using the wasi-experimental workload in .NET 8. Learn more. https://t.co/fbr5t7X1nS pic.twitter.com/HLeXnqKAf4
— .NET (@dotnet) December 12, 2023
WASI(WebAssembly System Interface)は、WebAssemblyバイナリをWebブラウザ上ではなくOS上のWebAssemblyランタイムで実行する際に、WebAssemblyからOSへのシステムコールを抽象化するための業界標準の仕様です。これにより、ファイスシステムの呼び出しなどOSの主要なシステムコールが抽象化されるため、WASIに対応したWebAssemblyバイナリはクロスプラットフォーム対応となります。
つまりwasi-experimentalによって、C#のコードからWindowsやmacOSやLinuxなどのさまざまOSおよびオンプレミスやクラウドなどの実行環境を問わない、さまざまな環境で実行可能なWebAssemblyバイナリが生成できることになります。
wasi-experimentalをインストール
具体的には.NET 8 SDKをインストールした後、wasi-experimentalをインストール。
サンプルとして用意されている「wasi-console」テンプレートを試してみる。単純に「Hello, WASI Console!」を出力するコード。
WebAssemblyランタイムのwasmtimeを用意しておき、dotnet runコマンドで追加情報を与えつつ実行。
このようにWebAssembly/WASIバイナリとしてアプリケーションが実行されています。
.NET 8ではWebAssembly/WASIに対応した実験的実装ですが、来年(2024年)登場予定の.NET 9では、コンポーネントモデルなどを実現する「WASI Preview 2」に対応する見通しだと説明されています。