.NET WASI App

Visual Studio 2022 PreviewにWASI Appのプロジェクトテンプレートができてた。

image.png作成してみた。

<!-- csproj -->
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <RuntimeIdentifier>wasi-wasm</RuntimeIdentifier>
    <OutputType>Exe</OutputType>
    <PublishTrimmed>true</PublishTrimmed>
  </PropertyGroup>
</Project>

シンプルでいいね。もう前みたいにLLVMのリファレンスとか足す必要ないんだ。楽ちんだ。

https://blog.iwate.me/learning-wasm-9/


// Program.cs
using System;

Console.WriteLine("Hello, Wasi Console!");

普通のC#のHello, World。意外とすごいよね。RustとかGoでWASIやろうとすると、WASIなりの書き方だったり作法があるけど、dotnetはホントに素。

// runtimeconfig.template.json
{
    "wasmHostProperties": {
        "perHostConfig": [
            {
                "name": "wasmtime",
                "Host": "wasmtime"
            }
        ]
    }
}

見知らぬファイルがあった。デバッグ時の実行ランタイムが選べるみたい。wasmerとかで実行したかったら、このファイルを書き換えればできそう。

実行

wasmtime.exeのPATHが通ってれば、VSのデバッグ実行ボタンを押せば何の苦労もなく動く。よき。


所感

いよいよ、サンドボックス環境で制御可能な形でのプラグインシステムの現実味が出てきた。