NaCl: A subset of CPU instructions for a number of architectures for in-browser, sandboxed execution • PNaCl: A portable subset (arch-independent) https://developer.chrome.com/docs/native-client/overview/
collection of modular and reusable compiler and toolchain technologies. “Despite its name, LLVM has little to do with traditional virtual machines. “The name "LLVM" itself is not an acronym; it is the full name of the project. llvm.org
collection of modular and reusable compiler and toolchain technologies. “Despite its name, LLVM has little to do with traditional virtual machines. “The name "LLVM" itself is not an acronym; it is the full name of the project. llvm.org This is
really interpreted • “Script” “interpreted” by the VM • What happens under the hood: - Source code gets compiled into a byte code representation - byte code gets JIT-compiled into native
there is a compiler/runtime for it Language Browser Other WASI Notes Rust ✅ ✅ ✅ C++ ✅ ✅ ✅ C ✅ ✅ ✅ C Swift ✅ ✅ ✅ Swift Zig ✅ ✅ ✅ AssemblyScript ✅ ✅ ✅ https://www.fermyon.com/wasm-languages/webassembly-language-support
considered a structured stack machine; • a machine where most computations use a stack of values, • but control flow is expressed in structured constructs such as blocks, ifs, and loops. • virtual instruction set architecture (virtual ISA) https:/ /github.com/WebAssembly/design/blob/main/Rationale.md
need to pass this in from JavaScript (import "console" "log" (func $console.log (param i32))) (func i32.const 0 ;; change to positive number (true) if you want to run the if block (if (then i32.const 1 call $console.log ;; should log '1') (else i32.const 0 call $console.log ;; should log '0'))) (start 1) ;; run the first function automatically ) https://developer.mozilla.org/en-US/docs/WebAssembly/Reference/Control_flow/if...else