Introduction to .NET WASI SDK
Microsoft - Developer Support
Naito Oshima
Notes
 .NET WASI SDK は
experimental project です
 本発表は .NET WASI SDK の存
在を知ってもらうことが主目的
とします
 .NET WASI SDK や
WASM/WASI に深入りはしま
せん
Agenda
• Intro to WebAssembly (WASM)
• Intro to WASI
• WASM on .NET World (Blazor wasm
/ .NET WASI SDK)
• .NET WASI SDK on .NET 7
• Summary
WebAssembly (WASM)
Portable
Polyglot
Efficient and fast Safe
WASM : stack-based VM とその上で動くバイトコードの仕様
※ ホストと連携するための WASM 実装の自由度はホスト環境次第
etc...
WASI (WebAssembly System Interface)
 OS をホスト環境としたときのインターフェースの標準化を目的
 OS と WASM 間でやり取りするための ABI/API
 WASI を実装しているランタイム : Wasmtime, Wasmer etc…
Wasmtime バージョン 1.0 リリース
Sep, 2022
Wasmtime バージョン 2.0 リリース
Oct, 2022
Wasmtime Reaches 1.0: Fast, Safe and Production Ready! by Lin Clark
https://bytecodealliance.org/articles/wasmtime-1-0-fast-safe-and-production-ready
WebAssembly on .NET World
1. Inside Web Frontend
Blazor WebAssembly (Blazor wasm)
2. Outside Web
.NET WASI SDK (experimental)
.NET WASI SDK (dotnet-wasi-sdk)
 シンプルな .NET 7 のコンソールアプリなら Wasi.Sdk パッ
ケージを入れビルドするだけで、スタンドアロンの WASI-
compliant な .wasm ファイルが生成できる
 その wasm ファイルは WASI を実装した各 WASM ランタイ
ムで実行可能である
SteveSandersonMS/dotnet-wasi-sdk : https://github.com/SteveSandersonMS/dotnet-wasi-sdk
Summary
 WASI は WASM と OS 間のやり取りを標準化
するための仕様である
 .NET WASI SDK を用いてビルドをすること
で、WASI-complient なスタンドアロン wasm
ファイルを生成できる
 これにより WASI を実装した WASM ランタイ
ム上でも .NET 7 の アプリケーションを動かす
ることが可能になった
 一方で Web ブラウザ側の WASM 上での .NET
利用では、Web フロントエンドフレームワー
クの Blazor wasm という別製品が利用できます
Thank you for your time

Introduction to .NET WASI SDK (【第7回】.NET 7 x FUN FAN F#)

  • 1.
    Introduction to .NETWASI SDK Microsoft - Developer Support Naito Oshima
  • 2.
    Notes  .NET WASISDK は experimental project です  本発表は .NET WASI SDK の存 在を知ってもらうことが主目的 とします  .NET WASI SDK や WASM/WASI に深入りはしま せん
  • 3.
    Agenda • Intro toWebAssembly (WASM) • Intro to WASI • WASM on .NET World (Blazor wasm / .NET WASI SDK) • .NET WASI SDK on .NET 7 • Summary
  • 5.
    WebAssembly (WASM) Portable Polyglot Efficient andfast Safe WASM : stack-based VM とその上で動くバイトコードの仕様 ※ ホストと連携するための WASM 実装の自由度はホスト環境次第 etc...
  • 6.
    WASI (WebAssembly SystemInterface)  OS をホスト環境としたときのインターフェースの標準化を目的  OS と WASM 間でやり取りするための ABI/API  WASI を実装しているランタイム : Wasmtime, Wasmer etc…
  • 7.
    Wasmtime バージョン 1.0リリース Sep, 2022 Wasmtime バージョン 2.0 リリース Oct, 2022 Wasmtime Reaches 1.0: Fast, Safe and Production Ready! by Lin Clark https://bytecodealliance.org/articles/wasmtime-1-0-fast-safe-and-production-ready
  • 8.
    WebAssembly on .NETWorld 1. Inside Web Frontend Blazor WebAssembly (Blazor wasm) 2. Outside Web .NET WASI SDK (experimental)
  • 9.
    .NET WASI SDK(dotnet-wasi-sdk)  シンプルな .NET 7 のコンソールアプリなら Wasi.Sdk パッ ケージを入れビルドするだけで、スタンドアロンの WASI- compliant な .wasm ファイルが生成できる  その wasm ファイルは WASI を実装した各 WASM ランタイ ムで実行可能である SteveSandersonMS/dotnet-wasi-sdk : https://github.com/SteveSandersonMS/dotnet-wasi-sdk
  • 10.
    Summary  WASI はWASM と OS 間のやり取りを標準化 するための仕様である  .NET WASI SDK を用いてビルドをすること で、WASI-complient なスタンドアロン wasm ファイルを生成できる  これにより WASI を実装した WASM ランタイ ム上でも .NET 7 の アプリケーションを動かす ることが可能になった  一方で Web ブラウザ側の WASM 上での .NET 利用では、Web フロントエンドフレームワー クの Blazor wasm という別製品が利用できます
  • 11.
    Thank you foryour time

Editor's Notes

  • #5 Motivation
  • #6 Open (Embeddable) Portable (Hardware- independent / Platform- independent) Polyglot (Language- independent) etc... web-agnostic 元々はwebの高速化が目的か 複数言語からのコンパイル可能 ネイティブ近くのスピード WASM 仕様自体は事前に定められた import した host functions 外部から呼び出される Export directive ホスト環境に依存
  • #7 Platform target -> wasi 一部機能に差異があります https://github.com/WebAssembly/WASI
  • #8 Bytecode Allianceがオープンソースで開発しているWebAssemblyランタイム「Wasmtime」がバージョン1.0に到達し、本番利用にも対応した正式版としてリリースされました。 Bytecode Allianceは今後も1カ月サイクルでWasmtimeのバージョンアップを行っていくとのことです。
  • #10 dotnet add package Wasi.Sdk –prerelease dotnet add package Wasi.AspNetCore.Server.Native –prerelease Wasi.AspNetCore.BundledFiles