The Web
Technology:
HTTP
HTML
CSS
JavaScript
Culture:
Open
Ubiquitous
Secure
Trustworthy
Slide 6
Slide 6 text
The Web
Cons:
HTTP
HTML
CSS
JavaScript
Pros:
Open
Ubiquitous
Secure
Trustworthy
Slide 7
Slide 7 text
The Web is worth
Keeping
Slide 8
Slide 8 text
The Web is worth
Improving
Slide 9
Slide 9 text
Andreas Gal, Mozilla CTO:
"For Mozilla, anything that the Web can’t do, or anything that the Web is not faster and better
at than native technologies, is a bug."
https://bugzilla.mozilla.org/
Slide 10
Slide 10 text
A Bug in the Web
"I want to code in Python dammit"
Slide 11
Slide 11 text
PyPy.js
What? How? Why?
Slide 12
Slide 12 text
What?
Slide 13
Slide 13 text
PyPy.js: What?
Slide 14
Slide 14 text
PyPy.js is ... Not the First
Pyjamas PyJS
Skulpt
Brython
PythonJS
RapydScript
Pystachio
Pyjaco
...?
Slide 15
Slide 15 text
PyPy.js is ... An Experiment
Slide 16
Slide 16 text
PyPy.js is ... Compliant
Slide 17
Slide 17 text
PyPy.js is ... Fast
Slide 18
Slide 18 text
No content
Slide 19
Slide 19 text
No content
Slide 20
Slide 20 text
No content
Slide 21
Slide 21 text
No content
Slide 22
Slide 22 text
PyPy.js is ... InBrowser
v
a
r v
m = n
e
w P
y
P
y
J
S
(
)
;
v
m
.
r
e
a
d
y
.
t
h
e
n
(
f
u
n
c
t
i
o
n
(
)
{ .
.
. }
)
v
m
.
s
e
t
(
"
x
"
, 1
2
)
.
t
h
e
n
(
.
.
.
)
v
m
.
e
v
a
l
(
"
x = x + 1
"
)
.
t
h
e
n
(
.
.
.
)
v
m
.
g
e
t
(
"
x
"
)
.
t
h
e
n
(
.
.
.
)
Slide 23
Slide 23 text
PyPy.js is ... InBrowser
Slide 24
Slide 24 text
PyPy.js is ...
"An experiment in building a fast, compliant, inbrowser python environment"
But...
Slide 25
Slide 25 text
PyPy.js is ... Not so Fast
Slide 26
Slide 26 text
PyPy.js is ... Humongous
Raw GZip
pypy.vm.js 15 MB 2 MB
pypy.vm.js.mem 5.5 MB 1.4 MB
Slide 27
Slide 27 text
PyPy.js is ... Humongous
Raw GZip
pypy.vm.js 14 MB 1.8 MB
pypy.vm.js.mem 5.5 MB 1.4 MB
Slide 28
Slide 28 text
How?
Slide 29
Slide 29 text
PyPy
Slide 30
Slide 30 text
PyPy:
A Python interpreter, written in "RPython"
A toolchain for translating RPython to C
A JITCompilerGenerator
asm.js
"An extraordinarily optimizable, lowlevel subset of JavaScript"
Slide 44
Slide 44 text
f
u
n
c
t
i
o
n S
q
r
t
M
o
d
u
l
e
(
s
t
d
l
i
b
, f
o
r
e
i
g
n
, h
e
a
p
) {
"
u
s
e a
s
m
"
;
v
a
r s
q
r
t = s
t
d
l
i
b
.
M
a
t
h
.
s
q
r
t
;
v
a
r H
E
A
P
F
6
4 = n
e
w s
t
d
l
i
b
.
F
l
o
a
t
6
4
A
r
r
a
y
(
h
e
a
p
)
;
f
u
n
c
t
i
o
n s
q
r
t
_
p
t
r
(
a
d
d
r
) {
a
d
d
r = a
d
d
r
|
0
;
v
a
r x = 0
.
0
;
x = +
H
E
A
P
F
6
4
[
a
d
d
r >
> 3
]
;
H
E
A
P
F
6
4
[
a
d
d
r >
> 3
] = +
s
q
r
t
(
x
)
;
}
r
e
t
u
r
n { s
q
r
t
_
p
t
r
: s
q
r
t
_
p
t
r }
;
}