WebAssembly
in action
@mafintosh
Low level programming for the web
What is assembly?
Machine friendy language that compiles to machine code
→ assembly
push 1 → 0x1 0x1
push 2 → 0x1 0x2
add → 0x3
Assembly is close to the metal
Almost no abstractions
Hard to maintain
Use assembly to implement STABLE functions that are super FAST
Hash functions, video encoding, cryptography
WebAssembly is assembly for the web
Node.js 8+, Chrome, Firefox, Safari 11, Edge preview
WAST is a Lisp like language that compiles to WebAssembly
npm install -g webassembly-binary-tools
wast2wasm example.wat -o example.wasm
(demo)
npm install -g wast2js
wast2js example.wat -o example.js
npm install -g wast2js
wast2js example.wat -wo example.js
(demo)
LOTS of instructions
When operating on non-numbers (buffers / strings) you have to copy data and use pointers
(demo)
WebAssembly will massively speed up algorithms
that rely on 64 bit integers
BLAKE2b is a very fast hash function that does exactly that
npm install blake2b
Thank you!