味わう仕様書
WebAssemblyという仕様を、味わう。
使い方の説明だけでは見えない、WASMのメモリ、Module、import / export、Emscripten、WASI。 実装と仕様書の間をうろうろしながら読んでいきます。
味わう仕様書 WASM
使い方ではなく、仕様を読む。
WebAssemblyは「CやRustをブラウザで動かすもの」と説明すれば、ひとまず使えます。 けれど、実際に何がModuleになり、何がimportされ、何がexportされ、 JavaScriptとWASMの境界で何が起きているのかを見ると、仕様そのものの輪郭が立ち上がってきます。
勝手に外へ出られない
ambient accessを持たない設計と、線形メモリの範囲外アクセスがtrapになる仕組みを仕様から見ます。
compileの後に何がある?
Module、compile、instantiate、import、export。 似た言葉を、実際の処理の順番に置き直します。
生成されたJSを覗く
sql.jsを手がかりに、onRuntimeInitialized、ccall / cwrap、 WASM側で短縮されたexport名まで追います。
ブラウザの外へ
Wasmtime、WASI、WIT、Component Model。 「WebのAssembly」という名前の外側で何が始まっているのかを見ます。
この本で見るもの
目次
仕様書を、読む対象にする。
APIの使い方を覚えるだけなら、もっと短い説明で済みます。 この本では、仕様の文言と実装の振る舞いがどこで重なり、どこでずれて見えるのかを、 実際の生成物や周辺ツールまで行き来しながら確かめます。