❤WebAssembly and the Future Of Javascript
Seth Samuel (NY ↝ PDX ↝ Elsewhere ↝ PDX ↝ NYC)
sethsamuelFollow along:
sethsamuel.github.io
A Brief History of the Web
1822
Charles Babbage
1842
Ada Lovelace
1945
Alan Turing
1952
Grace Hopper
1989
Tim Berners-Lee
1995
Brendan Eich
2009
Ryan Dahl
Now
You
Programming languages are a bridge between human thought
and machine processing.
Why do we need abstractions?
Electrons
Machine code
1100101010101101010
Assembly
mov eax, 45
mov ebx, 55
add eax, ebx
push eax
Grace Hopper
Low(er) level languages
int *ptr_one;
ptr_one = (int *)malloc(sizeof(int));
free(ptr_one);
High(er) level languages
var s = 1;
s = ["Hello"];
s[2] = "Empire";
s["a"] = "Node";
Visual languages
Higher level ↝ less efficient *
asm.js
function Module() {
"use asm";
function add(x, y) {
x = x | 0;
y = y | 0;
return x + y;
}
return { add: add };
}
WebAssembly Abract Syntax Tree (WAST)
WAST is a shared target for compilers
Learn more
Mariko Kosaka - How to be* a compiler
Browsers (and node) can efficiently transform WAST into Assembly
WAST
(module
(memory 256 256)
(export "memory" memory)
(export "add" $add)
(func $add (param $0 i32) (param $1 i32) (result i32)
(i32.add
(get_local $0)
(get_local $1)
)
)
)
Less npm postinstall building
Compiled system langauges in the browser
Pick the right tool for the job
Learn more/Do more
https://github.com/WebAssembly/design