WebAssembly night #11 に参加したセッションメモ
2023/09/15(金) 19:30
場所は 株式会社エムティーアイ さんのオフィス内。きれいな会場でした。ありがとうございました。以下、ところどころ歯抜けです。また、全員の方が資料を公開されておりリンクを追記しているので内容が気になる方はそっちを見たほうがいいですね。
イントロダクションとWasmの現状 (@chikoski)
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)
- *.wasm から Rust のデータ構造に落とし込む。
- そのデータ構造から実行用のデータ構造を生成。
- ...
- 先頭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)
Neovimをブラウザで動かしてみた @naruaway)
暗号プリミティブライブラリmcl-wasmの紹介 (@herumi)
cargo-component 叩いてみた (@NewGyu )
Wasmを実行するunikernelとWasmコンパイラ (@ainno)
その他
wasm の機能のロードマップ。
セッションで言及された GC などもここに掲載されています。ブラウザ以外だと JS BigInt to Wasm i64 integration
が実装されてない処理系もあるんですね。
Discussion