Repolode
zion-sati

zion-sati/NetWasm

独自のCoreLib、ランタイム、SDKを備え、C#と.NET CILをコンパイルして小型のスタンドアロンWASI Preview 2コンポーネントを生成するコンパイラです。

スター
233
フォーク
7
未解決の Issue
6
最終コミット
2 時間前

これは何?

NetWasmは独自のコンパイラ、CoreLib、ランタイム、SDKを使って、C#と.NET CILをWebAssemblyに直接コンパイルします。デスクトップ版CLRやMono、アプリケーションDLLは同梱しません。コンパイラはプログラムから到達可能なコードを基に処理し、必要なランタイムサポートだけをリンクするため、出力は自己完結型のWASI Preview 2コンポーネントになります。WasmtimeなどのWasmホストで実行でき、ビルドには通常のdotnet CLIを使用します。

サーバーレス関数やブラウザモジュールなど、小型でサンドボックス化されたC#バイナリを求める開発者を対象としています。3種類のガベージコレクター方式(デフォルトのCompact、NetWasmGC、Bump)を利用でき、C#のエクスポートをWeb Workerでも実行できる型付きJavaScriptモジュールとして公開できます。また、WITからC#バインディングを生成できます。.NETの機能は定義済みのサブセットに限られており、ランタイムリフレクション、dynamic、実行時のアセンブリ読み込み、マネージドスレッドには対応していません。プロジェクトはまだ1.0未満です。

主な機能

  • 01C#と.NET CILをスタンドアロンのWASI Preview 2コンポーネントに直接コンパイルします。
  • 02到達可能なコードと必要なランタイムサポートだけをリンクし、バイナリを小型に保ちます。
  • 03Compact、NetWasmGC、Bumpの各ガベージコレクター方式を利用できます。
  • 04Web Workerでの利用も含め、C#のエクスポートを型付きJavaScriptモジュールとして公開します。
  • 05WITからC#バインディングを生成し、静的な.aネイティブ相互運用にも対応します。
  • 06標準のdotnet CLIでビルドとテストを実行できます。

ユースケース

  • 小型のC#関数をWebAssemblyホストやサーバーレスランタイムにデプロイする。
  • 型付きJavaScriptモジュールとして、ブラウザページやWeb Worker内でC#のロジックを実行する。
  • NetWasmとデスクトップ版.NETの両方を対象とする、移植性の高いC#ライブラリを構築する。
  • 大規模なBlazor WebAssemblyビルドに代わる、コンパクトなWasmの選択肢としてC#を検討する。

クイックスタート

  1. 1

    .NET SDK 10.0.303 以降をインストールする

  2. 2

    NetWasm プロジェクトテンプレートをインストールする

    dotnet new install NetWasm.Templates
  3. 3

    新しい NetWasm アプリを作成して実行する

    dotnet new netwasm-app -n HelloNetWasm
  4. 4

    アプリをスタンドアロンの WASI コンポーネントとして発行する

    dotnet publish -c Release -o publish/local

使う前に知っておきたいこと

  • NetWasm はまだ 1.0 未満のため、ソース、パッケージ、ABI の契約はマイナーリリース間で変更される場合があります。
  • ランタイムリフレクション、dynamic、実行時のアセンブリ読み込み、マネージドスレッドはサポートされていません。
  • 一般的なファイル、ディレクトリ、ソケット、サブプロセスの API はまだ実装されていません。
  • 発行したコンポーネントの実行には、Wasmtime などの WebAssembly ホストが必要です。

トピック

よくある質問

NetWasm とは?
独自のCoreLib、ランタイム、SDKを備え、C#と.NET CILをコンパイルして小型のスタンドアロンWASI Preview 2コンポーネントを生成するコンパイラです。 NetWasmは独自のコンパイラ、CoreLib、ランタイム、SDKを使って、C#と.NET CILをWebAssemblyに直接コンパイルします。デスクトップ版CLRやMono、アプリケーションDLLは同梱しません。コンパイラはプログラムから到達可能なコードを基に処理し、必要なランタイムサポートだけをリンクするため、出力は自己完結型のWASI Preview 2コンポーネントになります。WasmtimeなどのWasmホストで実行でき、ビルドには通常のdotnet CLIを使用します。
NetWasm は無料で使えますか?ライセンスは?
NetWasm は Other ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
NetWasm は今もメンテナンスされていますか?
活発にメンテナンス中。NetWasm の最終コミットは 2026年10月22日 です。
NetWasm は何に使えますか?
小型のC#関数をWebAssemblyホストやサーバーレスランタイムにデプロイする。 型付きJavaScriptモジュールとして、ブラウザページやWeb Worker内でC#のロジックを実行する。 NetWasmとデスクトップ版.NETの両方を対象とする、移植性の高いC#ライブラリを構築する。 大規模なBlazor WebAssemblyビルドに代わる、コンパクトなWasmの選択肢としてC#を検討する。
NetWasm のインストール方法は?
.NET SDK 10.0.303 以降をインストールする NetWasm プロジェクトテンプレートをインストールする: dotnet new install NetWasm.Templates 新しい NetWasm アプリを作成して実行する: dotnet new netwasm-app -n HelloNetWasm アプリをスタンドアロンの WASI コンポーネントとして発行する: dotnet publish -c Release -o publish/local
NetWasm はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/zion-sati/NetWasm

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト