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

CNDS2024

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for ainozaki ainozaki
June 14, 2024
2.4k

 CNDS2024

Avatar for ainozaki

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