WebAssembly
C/C++, C#, WASMアセンブリコード, Rust などからコンパイルできる Web用仮想CPUコード的なもの
asm.js のバイナリフォーマットWASMっぽい位置づけでJavaScriptとの連携っぽいところからはじまったかな
Chrome, Edge, Firefox, Safari などの主要ブラウザでサポートされている。
Webに限らず利用が広がっていたり
module という単位で作る?
npm という Node.js のパッケージ管理システムに落ち着く?
テキスト表現 S式 .wat
バイナリ形式 .wasm application/wasm
バイナリ形式での整数型はLEB128 という7bit単位の形式 符号付きと符号なしどちらでも同じ
符号付きの場合は7bit単位で負数の場合は最後のバイトの頭が01(bit)からはじまり
整数
型に関係なく符号化される
エンコード
下から7bit毎に分割
残りがあれば 0x80 フラグをつけて出力
なければ 最上位ビット0で出力
デコード
最上位ビット1 続きあり 上に続き7bitをのせる
最上位ビット0 続きなし 完了
符号付きの場合は符号拡張したり
0x80 0x80 0x00 も可能 (WebAssembly)
ES Modules (ECMAScript 2015 modules?) としてJavaScriptと連携可能
Web外で実行する Wasmtime
WebAssembly System Interface WASI
https://webassembly.org/
https://webassembly.github.io/spec/core/)
コア
WebAssembly Core Specification 1.0 (W3C)
https://www.w3.org/TR/wasm-core-2/
WebAssembly JavaScript Interface (W3C)
WebAssembly Web API (W3C)
MDN WebAssembly 開発資料
W3C WebAssembly Working Group
WEBASSEMBLY COMMUNITY GROUP
https://bytecodealliance.org/
https://wasmtime.dev/