Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CNDS2024

ainozaki
June 14, 2024
1.4k

 CNDS2024

ainozaki

June 14, 2024
Tweet

Transcript

  1. 3

  2. IOとかはどうするの?
 • Wasm自体にIO等を扱う仕組みはない
 • WebAssembly System Interface (WASI)
 ◦ システムのリソースを提供するAPIの仕様


    ◦ ファイル・ネットワークなど
 • 最新のバージョンは Preview2
 ◦ 2024年1月に正式リリース
 ◦ WASI Preview2、WASI p2、WASI 0.2 などとも
 21
  3. Core Wasmの課題
 外部のモジュールやプログラムとのimport/exportが不得意
 ◦ Core Wasmの仕様はprimitiveな型しか持たない
 ▪ その他の型は全てLinear メモリ上で表現されるが、言語依存
 ◦

    😱引数のメモリ上の表現をプログラマが揃える必要
 34 ‘H’ ‘e’ ‘l’ ‘l’ ‘o’ \0 ‘H’ ‘H’ ‘e’ ‘e’ ‘l’ ‘l’ ‘l’ ‘l’ ‘o’ ‘o’ ASCII! 終端null! utf-16!
  4. Component Modelの登場
 モジュールを超えて型を表現するための仕様
 
 インターフェースの記述言語 WIT
 • Wasm Interface Type
 •

    import/exportのシグネチャを定義する言語
 ◦ WITを元に各言語向けのbindingコードが自動生成される(c.f gRPCのproto) 
 ◦ ユーザが記述し,ユーザが呼び出す
 バイナリレベルの表現規約 Canonical ABI
 • Application Binary Interface
 • 型のバイナリ表現を定義
 ◦ 基本ユーザからは見えない
 35
  5. Component Modelの登場
 36 Component Module from 言語B WITに基づいた 呼び出し Canonical

    ABIによる データ表現の一貫性 Canonical ABI Module from 言語A 言語を超えたWasmのリンクを実現できる
  6. 46