WASI
WebAssemblyをweb以外で使うためのインタフェース
2019/3 Standardizing WASI: A system interface to run WebAssembly outside the web - Mozilla Hacks - the Web developer blog
WebAssemblyは概念的なマシンのアセンブリ言語なのでさまざまなマシンアーキテクチャで実行できる
WebAssemblyを動かすためには、具体的なOSではなく概念的なOSのsystem interfaceを必要とする。これがWASI
system interfaceはsystem callの抽象化レイヤ
system interfaceを使えば、linuxならPOSIX API、windowsならWindows APIを使うようにできる
WebAssemblyにはこういう抽象化レイヤは今までなかったので、コンパイル時にどのマシンリマスsystem callを使えばいいのかわからなかった
WASI以前の状況
これまでデファクトのEmscriptenはブラウザ外で利用するためには、ブラウザ向けのグルーコードとブラウザの挙動の一部の再実装が必要になっていた
WASIの仕組みを整え直せばこういう処理はいらなくなるし、セキュリティやポータビリティーも実現できる
WASIは2019年3月の時点で3つの実装がある
Wasmtime
lucet
ブラウザのポリフィル