1998: Netscape was doomed – and they knew it.
Microsoft was likely to kill the Web.
The plan: at 10am on March 31, Jamie Zawinski
would push Netscape's source code to the Web,
creating the open source Mozilla Web browser.
Slide 5
Slide 5 text
http://www.youtube.com/watch?v=mZTJbsUcdeU
Slide 6
Slide 6 text
Well, they simply cannot undo what has been
done. The Mozilla code is out there…and nobody
can ever take that away from you. Ever.
— Jamie Zawinski, 23 Nov. 1999
Slide 7
Slide 7 text
!
!
Cause for revolution
zomg Web's gonna die
!
!
!
!
!
Not so much
eugh, JS has warts
eugh, HTML has warts
eugh, CSS has warts
Slide 8
Slide 8 text
Y U NO bytecode?
Slide 9
Slide 9 text
JavaScript lacks cross-language features.
JavaScript is slow.
JavaScript is sometimes fast but unpredictable.
JIT compilation can be janky.
Slide 10
Slide 10 text
Revolution: new bytecode language!
Evolution:
• build a native → JS compiler
• study and optimize code patterns it generates
• close gaps where we aren't generating optimal code
• formalize pattern as validator ⇒ AOT
Slide 11
Slide 11 text
All along, asm.js has worked across browsers.
Slide 12
Slide 12 text
1JS
Slide 13
Slide 13 text
!
!
!
Slide 14
Slide 14 text
function
gen()
{
yield
42;
}
Slide 15
Slide 15 text
function
gen()
{
yield
42;
}
✘
Slide 16
Slide 16 text
function
gen()
{
yield
42;
}
Slide 17
Slide 17 text
No content
Slide 18
Slide 18 text
function*
gen()
{
yield
42;
}
Slide 19
Slide 19 text
Focus: no reinvent-the-universe boondoggles
Consistency: keep a unified development model
Adoption: gradual adoption (polyfills, compilers)
Slide 20
Slide 20 text
"use
strict";
!
!
!
!
!
!
!
Slide 21
Slide 21 text
"use
strict";
!
if
(foo)
{
function
f()
{
}
...
}
!
module.exports
=
...;
Slide 22
Slide 22 text
//
automatically
strict
!
if
(foo)
{
function
f()
{
}
...
}
!
export
default
...;
Slide 23
Slide 23 text
features > forks
modules > modes
Slide 24
Slide 24 text
Extensible Web
Slide 25
Slide 25 text
Good design is motivated by use cases,
workflows.
Good design is built from small, orthogonal, and
composable primitives.
Slide 26
Slide 26 text
study the text
interpret the text
study the text
interpret the text
study the text
interpret the text