🧩

WebAssembly night #11 に参加したセッションメモ

2023/09/17に公開

2023/09/15(金) 19:30
https://emsn.connpass.com/event/290430/
場所は 株式会社エムティーアイ さんのオフィス内。きれいな会場でした。ありがとうございました。

以下、ところどころ歯抜けです。また、全員の方が資料を公開されておりリンクを追記しているので内容が気になる方はそっちを見たほうがいいですね。

イントロダクションとWasmの現状 (@chikoski)

https://docs.google.com/presentation/d/e/2PACX-1vT1lHyxBGLDCV3NDPeaNrN3KLNDeCwwE5WBIID37Uwe_R5IWeZJxxJpjc2QVFeDeCMFPjZtPve-NN5R/pub?start=true&loop=false&delayms=3000&slide=id.p

wasm 事例

Shopify

ショップのカスタマイズ。
以前は JS のランタイムを自前で作っていた。それを wasm に置き換えた。3年前くらい公開の事例。

MS

飛行機のフライトシュミレータ

サーバーレス環境色々

fastly
cloudflare
wasmer 日本でも先月くらいに Launch。
fermyon
...
Istio
ContainerD

仕様の進化

仕様策定プロセス

Community Group → Working Group
6段階いくらいのステップ

Mamory Management

GC の仕様が入る。進行中。
Kotlin とかからコンパイルできるようになる。

コンポーネントモデル

複数のモジュールを組み合わせて、コンポーネントを定義する仕様。

  • string_size
  • memory

とか

IDL データの中間表現なども規定する。

WIT: Wasm Interface Type

システムインターフェース

WASI
WASM Community Group のサブグループで議論されている。
WASM 向け API の標準。 Preview1 と Preview2 。 Preview3 へ。

RustでWasm Runtimeを書いた話し (@gorilla0513)

https://speakerdeck.com/skanehira/rustdewasm-runtimewoshu-ita-in-webassembly-night-number-11

  1. *.wasm から Rust のデータ構造に落とし込む。
  2. そのデータ構造から実行用のデータ構造を生成。
  3. ...
  • 先頭8バイトがマジックナンバー。
  • Code Section → 関数の命令群
  • Type Section → 関数シグネチャ情報

実行するときのデータ構造はあまり仕様には沿っていない実装になっている。

  • Store,
  • Runtime,
  • Runtime::stack,
  • Runtime::call_stack

命令はv1 で 170 ある。Rust のマクロで効率化して書けた。

WASI は雑にういとシステムコールの仕様
→ POSIX Like な関数の集まり。
→ WASI を使えば、フィアルやOSを扱えるようになる。

文字を出力するには preview1 の fd_write() を実装する必要がある。
fd_write() は WASM の線形メモリ上のデータを fd に書き込む関数。

WASI のドキュメントを読んでも難しかった。
deno の wasi モジュールを参考に読みながら実装した。

「作って理解 wasm Runtimeのしくみ」を執筆中。

以下、LT

自作WASM Runtimeをkernelに改造する試み -WASM x Microkernelの可能性- (@RI5255)

https://speakerdeck.com/riru/fa-biao-zi-liao

Neovimをブラウザで動かしてみた @naruaway)

https://docs.google.com/presentation/d/1voWERgCeobyv6WWOJ-LT9eOaltdwaBzU4oAC6mBMg3Q/edit#slide=id.p

暗号プリミティブライブラリmcl-wasmの紹介 (@herumi)

https://speakerdeck.com/herumi/introduction-to-mcl-wasm

cargo-component 叩いてみた (@NewGyu )

https://zenn.dev/newgyu/scraps/b056627e219fc2#comment-06fa3238fb680c

Wasmを実行するunikernelとWasmコンパイラ (@ainno)

https://speakerdeck.com/ainozaki/webassembly-night

その他

wasm の機能のロードマップ。
https://webassembly.org/roadmap/
セッションで言及された GC などもここに掲載されています。

ブラウザ以外だと JS BigInt to Wasm i64 integration が実装されてない処理系もあるんですね。

Discussion