Minutes: Node.js Global Summit Session 1 — The WebAssembly System Interface and Node.js by Colin Ihrig.
Web WebAssembly
- No garbage collector
- Four data types
- Reads/writes data from/to a linear memory
WebAssembly Text Format (Wat)
- Human readable representation of Wasm
- Written as S-expressions
WebAssembly Binary Toolkit (Wabbit)
- Eg. Convert between Wasm, wat and C
- https://github.com/WebAssembly/wabt
WebAssembly in Node.js
WebAssembly.compile()
WebAssembly.instantiate()
Node can import Wasm files.
WebAssembly System Interface (WASI)
- Provides system calls
- Enhance non-Web use cases
WASI Security Model
- Application can only access sandboxed paths
- syscalls have associated “right”
__WASIT_RIGHT_PATH_OPEN
- syscalls like
open()
Defining Sandbox with Preopens
- Preopens map host paths to sandbox paths
- Application accesses sandbox paths
Compiling from C to WebAssembly
libc
clang
8+
Think of JavaScript (and WA)
- Open Web Technology
UVWasi and Support in Node.js
- c++ bindings for uvwasi and small JS API
wasi
core module
WASI Example
wasi-worker
Module