►
From YouTube: Bay Area Rust Meetup September 2014
Description
Topics about Rust.
Help us caption & translate this video!
http://amara.org/v/2Fh9/
A
As
you
know,
this
is
a
web
related
meet
up
a
continuation
of
the
one
we
had
two
months
ago
today
we
have
two
illustrious
rust
community
members
talking
about
web
technology,
Allen
Andra
day
talking
about
his
oxidized
j/s
framework,
which
is
a
library
for
doing
compression
and
then
the
incomparable
Chris
Morgan,
who
I'm
sure
everybody
is
aware
of
talking
about
TP
and
the
future
of
rust
and
the
web
and
miscellaneous
web
things
I'm,
so
excited
and
I
hope
you
are
too
so
without
further
ado.
Let's
get
started.
Alan
come
on
up.
D
C
All
right
we're
ready
to
roll
cool.
Thank
you,
everyone
for
being
here.
My
name
is
Allen
Andrade
and
I'm
going
to
talk
about
oxidized
GS,
which
is
a
tool
to
do
parallel.
Javascript
compression
before
I
start.
These
talk
I
would
really
like
to
give
some
background.
Cuz
I
know,
there's
a
lot
of
difference
in
expertise
here.
So
I
just
you
know,
want
to
share
I.
Remember
when
I
was
in
high
school
I
started
learning
about
see,
I
mean
that
was
pretty
late
and
I.
Remember
that
I
I
stopped
when
I
got
two
pointers.
E
C
Just
like
drop
that
book
and
then
in
college
I
met
Ruby
every
every
project
I
would
do
in
Ruby
after
that,
I
started
doing
ruby
on
rails
and
that's
what
I'm
doing
right
now
later
on
I
jumped
into
JavaScript.
I
really
enjoy
the
Emperor
framework
and
after
all,
these
things
Ross
happened
and
has
been
amazing.
Thank
you
for
that
cool.
Let's
talk
about
the
problem,
so
when
you
have
a
rails
app,
it
tends
to
grow
like
a
lot
right.
So
when
you
deploy
your
app,
it
takes
a
lot
of
time.
C
C
Okay,
so
let's
talk
about
potential
potential
solution
to
this
I
want
to
cut
down
the
15
20
minutes
deployed
down
to
five
hits
its
path
possible
10
if
it's
possible
all
right.
Let's
unwrap
that
looks
paralyzed
with
Bryce.
That's
the
first
thing
that
I
thought:
I
was
learning,
Ross
I
mean
I'm,
still,
learning
I
mean
and
I
thought
I
mean
it
would
be
amazing
if
I
can
solve
a
problem
and
also
teach
myself.
Some
rust
and
I
didn't
know
how
to
start.
C
How
do
you
proud
paralyzed,
you
know
acid
compressions
is
so
starting
from
the
from
from
the
fundamentals.
How
does
a
tool
that
we
currently
use
compressed
and
minified
javascript?
So
the
first
thing
that
I,
the
first
thing
that
was
natural
to
me,
was
to
use
Ross
and
all
without
you
guess,
which
is
the
mini
fire
compressor
that
probably
the
best
one
out
there.
C
C
Also,
it
has
a
code
generator
which
will
cried
some
JavaScript
from
the
ASD.
We
have
the
compressor,
which
is
it
uses
a
transformer
API,
which
is
something
that
we
will
see
on
the
next
bullet
point
and
it
optimizes
it
that
it
optimizes
AST
into
smaller
one,
a
Mangler
which
is
it
gets
it
reads:
it
gets
read
of
variables
that
you
can
use
it
compresses
your
variable
names
to
the
minimum
possible.
C
We
have
a
scope
analyzer
which
augments
the
AST.
I
really
don't
know
what
that
means.
You
know
it
says
it
augments,
the
ASC
with
information
about
where
variables
are
defined
and
reference,
probably
people
that
work
with
parses
parsers
know
pretty
much.
What's
that
right,
I,
don't
know
tree
Walker,
so
very
simple,
you
to
an
API
so
that
you
can
walk
the
ASD
and
then
we
have
the
tree
transformer,
which
is
the
API
that
the
compressor
uses.
C
So
that's
a
no
Verve
you
folk
aqua,
fiber.
Yes,
next
up
I
want
to
talk
about
the
architecture,
so
we
have
manifest
manifesto
or
whatever
you
call
it
any.
It
is
in
a
JSON
file
and
this
manifests
the
Ross
code.
What
it
will
do,
it
will
separate
separate
your
files
into
chunks
evenly
distributed
among
your
cpu
cores
so
that
you
distribute
the
work
load
of
compressing
into
your
color
course
cpu
cores
after
we
have
these
chunks
of
paths.
C
As
you
can
see
there,
we
use
ugly
fat,
yes
and
we
use
those
back
those
paths
to
feed
the
aquifers
process.
At
that
point,
we
run
ugly
five
years
only
with
a
compress
option.
We
do
not
mangle
right
there.
After
we
aqua
Phi,
we
use
channels
to
synchronize
the
writing
of
that
of
the
output
of
ugly
fat.
C
C
Finally,
these
discipline
five
years
will
yield
the
result
of
oxid
I
oxidize
years,
which
is
a
final
product
there.
There
are
a
couple
problems
that
I
see
with
these
implementation,
and
these,
like
the
you
know,
the
first
idea
that
I
got
about
aquafine
and
how
to
make
it
sorry
about
oxidizer,
yes
and
how
to
make
it
parallel.
So
one
of
the
things
is,
I
feel
we
we
lose
a
lot
of
time
in
in
parsing,
right,
I'll,
go
if
I
parses
and
then
generates
JavaScript
and
then
spit
it
spits
it
out.
C
Okay,
let's
talk
a
little
bit
about
the
results.
Let's
try
that
let's
try
that
I,
don't
think
this
is
still
a
reliable
architecture
so
that
we
can,
you
know,
make
yeah.
This
is
awesome
or
a
do
project
or
we
have
good
improvements.
However,
when
I
got
a
version
working
of
these
architecture,
I
did
a
simple
example
of.
C
C
That's
a
pretty
quick
road
map
or
a
pretty
quick
explanation
about
what
oxidized
g
is
does
and,
let's
think
about.
What's
next
for
this
project,
irem
I
would
really
like
to
know
if
we
are
on
the
right
path.
He's
Eggman
script
coming
out
with
new
standards
that
do
not
require
compressing.
C
Other
or
other
ways
of
doing
these
same
tasks,
I
still
don't
know
in
my
and
the
knowledge
I
have
about
that
regards
is
reduced,
at
least
at
this
point
also,
I
was
I
was
in
a
previous
meet
up
here.
I
was
talking
to
somebody
a
reduced
which
is
not
here
today.
Well,
that's
the
higher
cna.
I
don't
remember
his
real
name,
but
he
was
talking
about
wow.
Ok,
so
you
will
pass
it
and
then
play
with
that.
You
see
and
I
was
like
yeah.
C
That's
what
ugly
five
years
does,
but
I
don't
know
like,
should
I
ride
the
parser
for
javascript
in
rows.
That
sounds
like
somebody
else
have
done
it
before
right,
I,
don't
know
and
I
mean
I
thought
about
like
I
c
or
c++
implementation,
so
that
we
can
it's
pretty
easy
to
talked
to
talk
with
with
a
C
or
C++
interface
right.
So
I
don't
know
why.
I
cannot
find
that.
I
was
talking
thinking
about
okay,
so
spider
monkey
is
that
is
that
number,
the
name?
C
Sorry
I
was
okay,
spider
monkey
should
have
it
and
I
don't
know.
I
cannot
find
that
thing
that
parser,
that
at
least
can
give
me
some
AC
I
talked
about
that
already
and
then,
if
it
happens
that
we
find
the
c
or
c++
implementation
can
we
feed
uglify
with
these
asd
in
a
javascript
representation,
so
that
you
know
we
don't
have
to
rewrite
what
up
with
ideas
does
over
it
and
and
the
last
question
would
be
who
we
compress
minify
pars
and
do
everything
ourselves,
I
don't
know.
C
That's
pretty
much
it
about
oxidized
Gia's,
it's
a
pretty
small
project
and
it
has
been
amazing
to
work
with
with
with
Ross
on
it
before
I,
before
I
grabbed
obvious.
More
presentation.
I
would
really
like
to
say
thanks
to
see
planet
club
Nick,
which
I
mean
who
wrote
the
Ross
for
ruby,
skye
that
that's
the
guy
that
brought
me
into
this
community
and
after
after
that
guide,
I
was
hooked
and
I.
Cannot.
C
You
know
I'm
at
work,
thinking
about
Russ,
so
I
don't
know
if
that's
good,
I
love
this
community
and
I'm
super
happy
to
see
people
joining
new
people
every
time
joining
to
these
meetups
keep
doing
that
and
I'm
pretty
sure
you
alot
of
these
community
also
IRC
people.
There
are
super
helpful.
Thank
you,
everybody
in
the
IRC
channel.
I'm
probably
if
you
remember
me
it's
because
I
was
bugging
you
really
stupid
questions
and
also
about
the
Bay
Area
Russ
hack
nights,
I
organized
that
that
that
meet
up
and
we've
all.
C
We
have
only
had
one
meetup
ever
that
happened
at
github
and
was
was
pretty
good.
I
discovered
that
they
that
hack
nights
are
not
great,
because
people
you
know
are
tired,
so
I
was
thinking
about
moving
it
to
another
different
day,
probably
saturday,
and
also
I'm
interested
in
switching
the
you
know.
The
hack
day
is
not
hack
night
anymore
or
the
hack
day
in
San
Francisco
than
one
in
the
east
bay.
You
know
like
switching
every
week
or
every
two
weeks.
So
if
anybody
is
up,
you
know
willing
to
help
on
that
I'm.
F
Here
whether
you
know,
if
you're
just
trying
to
reduce
the
amount
of
information
you
have
to
send
down
the
pipe
to
the
browser
you
could
get
over,
you
could
do
that
by
simple.
You
know,
zipping
or
something
of
the
data,
so
is,
are
you
and
if
you
want
to
minify
this
stuff,
you
could
do
that
as
a
separate
step
to
compression
so
I
guess
what
I'm
wondering
about
is?
Did
you
try
as
a
baseline
test,
for
instance,
saying
okay?
C
Guess
is
strictly
targeted
to
rails
users,
and
that's
that's
weak
it
like
when
you,
when
you
deploy
a
rails
app,
it
will
try
to
compress
minify
and
give
you
one
JavaScript
that
it's
already
like
minified
to
it
fullest
and
then,
if
you
want
you
can
use
if
that
there,
the
thing
that
I'm
trying
to
get
faster
is
the
process
of
minifying
that
JavaScript.
So
my
understanding
to
your
question
is
I.
Don't
think
I
am
solving
the
same
problem.
C
A
A
G
There
well
speciously,
entitled
miscellaneous
web
things.
This
talk
for
any
of
you
that
have
gone
watching.
The
video
of
my
talk
at
strange
loop
is
substantially
the
same
as
far
as
the
slides
are
concerned,
but
I
will
be
taking
a
much
more
strongly
rust
focus
and
there
are
a
few
extra
goodies
here
as
well.
G
Okay,
first
of
all,
I
suppose
I
should
have
just
a
little
bit
of
background
about
me.
Yeah
I,
am
a
web
developer
by
trade.
I've
been
interested
in
the
web
since
probably
about
the
age
of
11
that
took
me
ages
to
understand,
CSS
and
but
I've
been
working
with.
Python
is
my
preferred
language
for
about
six
years,
and
I've
been
using
rust
for
the
last
year
and
a
year
and
a
quarter
or
so
and
rust
has
been
absolutely
spoiling
Python
for
me.
G
Okay,
we
had
this
model
that
everyone
follows.
You
have
a
certain
amount
of
time
in
which
you
wish
to
get
a
product
to
some
people,
and
you
will
make
money
from
that.
That's
the
commercial
model
that
we
have
this
time
that
we
have
is
very
limited
because
otherwise,
you'll
run
out
of
money
and
also
with
venture
capitalists
are
present.
They
don't
seem
to
mind
whether
you
make
money
or
not
so
this
whole
time
thing
it's
a
bomb.
I.
G
Will
be
talking
substantially
and
specifically
about
web
servers
here,
client-side
stuff,
I
do
have
a
vision
for
where
rust
can
fit
in
in
the
client
side
as
well,
but
for
the
moment,
let's
be
satisfied
with
server
side
because
well
the
front-end
guys
they're
stuck
with
javascript
anyway,
for
the
moment
at
least
okay.
So
who
among
here,
is
not
a
practicing
web
developer?
G
Well
so
I
mean
for
professional
web
development
yep
there,
that's
probably
around
about
half
a
bit
more
people
using
the
m
based
languages
professionally,
eight,
so
that's
will
call
it
about
a
quarter.
People
using
compiled
languages.
Note
I'm
saying
nothing
about
the
type
systems
here
go
and
see
their
type
systems
are
rather
weak,
so
compiled
languages.
I
see
four
hands,
so
that's
the
fewest
of
the
lot,
and
yet
this
is
where
rust
fits
in,
incidentally,
as
the
coloring
of
the
logo
ongoing
debate
as
to
whether
that
should
just
be
plain
black.
G
G
So
they
use
these
dynamic
languages.
Why?
Because
they
think
that
they
can
use
them
to
produce
the
result
on
this
ticking
time
bomb
the
fastest,
and
so
they
use
that
to
get
the
results
to
the
people
and
make
money.
The
problem
is
that
this
causes
various
bugs
and
so
on,
and
it's
also
slow.
So
you
end
up
with
needing
lots
and
lots
of
machines,
and
this
all
ends
up
causing
problems
and
they
don't
end
up
making
money
out
of
it.
G
Simplification.
Of
course,
we
then
look
at
what
people
do
after
this
step.
You
look
at
say:
Twitter,
for
example,
they
say:
we've
got
this
problem.
We
we
want
to
get
rid
of
some
of
the
bugs
that
we
have.
We
want
to
not
need
so
many
machines
and
we
want
to
make
money.
How
do
we
do
this?
Well,
the
solution
that
they
used
was
get
rid
of
Ruby,
which
they
had
been
using
and
use
Scala.
Instead,
of
course,
it's
an
open
question:
why
aren't
they
making
money
still
but
never
mind?
G
G
Initially
these
dynamic
languages
they're
very
appealing
because
they
had
they
don't
have
this
compile
time.
However,
they
do
have
development
server,
startup
time,
which
is
frequently
5-10
seconds
30
seconds,
even
once
you're
getting
to
a
big
project
and
once
it's
all
started,
the
performance
is
slow.
G
However,
with
rust,
once
you've
got
compilation
/,
which
yeah
it
takes
some
time.
You
know
it's
really
really
nice
having
a
server
that
you
press
the
enter
key
and
nothing
sir.
Oh
yeah,
it
forgot
to
put
in
a
print
message:
it's
already
started.
The
server
before
I
had
even
finished,
lift
my
finger
from
the
enter
key.
You
really
can
have
the
entire
HTTP
stack,
starting
in
just
a
few
milliseconds,
and
once
it's
all
started,
it
is
fast.
G
So
we
get
them
these
sorts
of
graphs,
this
being
a
new
relic
thing
that
large
pale
blue
chunk
there,
which
is
taking
in
excess
of
300
milliseconds
there.
That's
all
the
Ruby
code.
Of
course,
this
was
an
example
where
people
have
been
doing
bad
things
that
are
computationally
intensive,
and
so
in
that
talk,
New
Relic
were
demonstrating
how
to
get
that
considerably
smaller,
but
still
they're.
Only
looking
at
cutting
down
to
50
or
100
milliseconds
in
rust
I
would
be
confident
that
that
stuff
you'd
be
looking
at
more
one
or
two
milliseconds.
G
G
G
World
I
understand
it's
perfectly
normal
to
have
test
suites
that
may
take
8
20
minutes
to
run,
whereas
in
rust,
you're
less
likely
to
have
tests
that
take
that
long
to
run,
or
maybe
you
will
our
package
manager
they're
very
good
at
taking
a
long
time
as
well
npm
under
any
of
these
things,
they
tend
to
do
a
lot
more
work
than
they
need
to
for
a
lot
of
things.
Of
course,
we're
not
going
to
escape
from
that
with
cargo
either
so,
but
never
mind
we.
G
The
problem
is
people
use
these
excuses,
but
really
they
are
just
excuses.
We'll
come
up
with
ways
of
making
us
things
slow.
However,
we
do
it
we're
very
good
at
doing
things
inefficiently,
but
then
this
compilation
phase
what
is
rust
doing
in
there
time
when
it's
compiling
stuff
that
people
complaining
about
I
would
argue
that
it
is
saving
you
time,
because
there
are
various
classes
of
errors
that
it's
picking
up
on,
which
you
have
made.
It
may
not
be
saving
your
time
up
front.
G
It
certainly
does
give
the
impression
of
making
things
take
longer,
but
in
the
long
term,
I
believe
that
it
is
actually
faster.
Let's
take
a
completely
synthetic
made-up
example,
which
just
happens
to
show
that
rust
is
better,
so
well,
yes,
I
won't
bother
reading
it
all
out
there.
You
can
look
at
it,
but
the
the
end
result
even
accounting
for
this
two
hours
of
hallways
sword.
Fight
without
a
legitimate
reason
is
that
rust
is
a
full
minute
faster.
G
Isn't
that
marvelous,
but
then,
who
are
the
people
that
are
saved
time,
because
I'm
claiming
that
rust
is
rust,
has
good
performance
in
as
fast
for
more
people
more
than
just
runtime
performance
users,
the
response
time
in
whatever
they're
using
is
decreased,
so
the
and
there
is
that
inverse
correlation
between
response
time
and
revenue
and
happiness
as
well.
People
are
likely
to
be
happier
if
it's
faster.
G
There
are
also
very
interesting
questions
of
ethics.
There
I
can
talk
more
about
that
later
on,
if
you're
interested
in
it
developers
maintenance.
Once
you
have
the
type
system
of
rust,
you
can
use
it
to
avoid
various
problems
where,
before
you
would
have
had
a
complete
start
up,
your
development
server
run
your
tests
or
whatever
find
something's
gone
wrong,
and
you
also
in
dynamic
languages,
often
end
up
writing
tests,
which
takes
quite
a
long
time
for
things
that
the
compiler
would
have
caught
in
the
first
place.
G
G
Also
in
operations-
and
yes,
servers
you'll
end
up
with
lower
resource
usage.
To
take
the
example
of
Twitter,
when
they
were
merely
switching
from
Ruby
to
scala
and
rust
would
have
been
even
further
along
that
way.
They
were
expecting
performance
improvements
of
about
a
factor
of
10
by
the
change
they
actually
found
that
they
got
performance
improvements
of
about
50
there,
so
it
was
considerably
better
than
they'd
expected.
So
that
means
that
for
every
50
machines
that
they
had
before,
they
can
reduce
to
just
adding
one.
G
Of
course,
those
sorts
of
calculations
only
really
matter
if
you're
dealing
at
significant
scale,
but
never
mind,
they're
still
worthwhile
considering,
and
so
that
naturally
saves
you
money
as
well.
We're
used
to
the
saying
that
developer
time
is
more
important
than
machine
time,
but
especially
once
you're
working
at
a
big
company
that
can
actually
pretty
quickly
become
not
true
and
also
a
lot
due
to
this
the
type
system
there.
G
The
security
is
improved
because
there
are
various
classes
of
problems
that
simply
can't
be
represented
in
the
type
system,
and
so
you
end
up
having
to
spend
less
time
dealing
with
security
vulnerabilities
telling
people
about
it,
loss
of
reputation
all
of
these
sorts
of
problems.
So
now,
let's
consider
why
you
need
this
good
type
system.
I'll.
Take
us
the
case,
study,
HTTP,
headers
and
I'll
be
looking
specifically
at
how
tp
does
it
actually
HTTP
headers
their
string,
lee
typed
in
almost
every
library
out
there?
G
There
are
a
few
that
aren't,
but
this
very
significant
majority
of
ones
and
practically
all
the
ones
that
are
actually
used
significantly
a
string
lee
typed.
This
is
wrong.
Headers
are
not
strings
semantically,
they
are
not
strings.
So
this
makes
me
sad.
This
was
in
fact
the
reason
why
I
started
writing.
Rusts
HTTP
libraries
when
I
first
started
writing
rust
code,
because
I
was
afraid
that
if
I
left
someone
else
to
write
the
libraries
that
would
go
string
typing
take
for
example,
then
this
the
do
not
track
header.
G
It's
very
simple
thing:
you
have
a
dictionary
as
it
would
be
in
Python
keys
are
strings
values
of
strings,
the
value
might
not
be
there,
and
so
that's
how
you
track
your
three
states
there,
but
with
the
with
the
way
things
are
arranged
in
TP,
we
can
have
it
all
tied
into
the
type
system.
So
the
very
fact
that
we
are
passing
in
this
value
DNT.
G
This,
then,
is
the
implementation
of
that
particular
header
type.
It's
as
you
can
see
a
pretty
simple
sort
of
thing,
very
basic
enum
you
go
specifying
how
the
header
is
paused
and
how
it's
so
past
from
a
stream.
Actually,
it's
not
a
stream
at
a
slice
of
vectors
there
and
that's
because
it's
already
come
out
of
the
stream,
because
these
are
all
done
lazily
for
various
reasons
which
I
can
talk
about
later
and
also
how
the
header
is
then
put
back
into
your
stream.
G
Some
people
at
strange
loop
were
wondering
why
these
are
so
verbose.
They
wouldn't
actually
need
to
be
quite
server
birth,
so
quite
so
verbose.
If
we
didn't
care
about
performance,
but
as
it
is
caring
about
performance
say
you
want
to
use
a
writer
on
the
on
the
formatting
method,
rather
than
taking
it
to
an
intermediate
string.
So
it
ends
up
slightly
more
verbose
that
way,
and
that
macro
there.
That
comes
down
to
something
like
that.
As
a
matter
of
fact,
so
you
have
that
associated
types
stuff
there,
it's
actually
not
using
associated
types
yeah.
G
At
present
it
is
using
generics
there's
the
reason.
I
can't
use
associated
types
yet
is
because
of
this
business
here.
So
we
had
the
constraint.
We
would
need
to
apply
a
constraint
there,
which
can't
be
represented
yet,
but
that
will
come
so
this,
then,
is
the
overall
stuff
there.
We
have
the
trait
the
basic
marker
traits
are
the
DNT
type
here,
which
is
used
as
the
parameter
to
the
get
method
and
that
so,
when
we
pass
in
there
as
the
header
market
DNT,
it
then
says
well,
the
return
type
will
be
the
returns.
G
Now
I
won't,
I
won't
lie
at
all.
This
is
something
that
you
could
do
in
dynamic
languages,
but
it
would
be
hazardous
and
the
full
extent
of
it
would
not
be
neat
to
do
in
a
dynamic
language.
The
reason
I
say
it
would
be
hazardous
is
because
you
don't
have
the
type
system
to
catch
you
when
you
make
a
mistake
with
it
all,
and
so
this
type
system
it
allows
you
to
do
things
like
this,
that
people
are
just
normally
too
scared
to
do
it.
G
Lets
you
do
these
things,
but
be
confident
that
it
is
actually
correct
and
also
with
the
way
that
it's
implemented
in
TP
there.
There
are
no
privileged
header
types,
you
can
have
multiple
headers
using
the
same
name
and
it
will
decode
the
raw
value
as
the
appropriate
type.
Whenever
you
ask
for
it
so
say
if
you
have,
if
you
had
two
different
libraries
with
their
own,
do
not
track
header
types,
that's
no
problem,
it
can
cut
with
that,
and
that
is
actually
a
part
that
would
be
harder
to
do
in
a
dynamic
language.
G
Just
like
to
re-emphasize
headers
are
not
streams
oak
there
on
that
good.
Let's
then,
take
just
a
quick
look
at
an
example
of
some
of
the
sorts
of
things
that
will
be
possible
in
rust.
I
haven't
gone
implementing
the
significant
majority
of
this
stuff
and
note
that
the
/
web-
it's
dealing
with
the
full
web
stack
so
client
side
as
well
as
server
side.
G
/
/
web
is
a
language
in
the
Haskell
and
ml
traditions.
So
it
is
thus
and
somewhat
unreadable
to
the
layman,
who
is
used
to
these
languages
like
Ruby,
Python
JavaScript,
and
that's
why
it's
going
to
fail.
Well,
that's
why
it
has
already
failed
and
that's
why
I
believe
that
rust
has
a
much
better
chance.
Rust
is
pragmatic,
rust
is
familiar,
and
so,
although
its
type
system
is
not
necessarily
as
good
as
some
of
these
things
say,
Haskell
it
has
a
better
type
system
than
rust,
but
rust
is
approachable.
G
Rust
is
something
that
the
layman
can
use,
but
let's
go
back
to
looking
at
some
of
these
things,
so
code
injection
attacks.
They
include
in
that
in
HTML
injection
sequel
injection.
Any
of
those
sorts
of
things
that
you
can
imagine
by
using
a
strong
type
system.
It
can
simply
avoid
these
problems.
Invalid
HTML.
G
G
Yeah,
they
are
all
the
sorts
of
things
that
we
can
represent
and
rust.
Take,
for
example,
I
want
to
see
someone
experimenting
with
compiling
templates,
semantically
and
using
the
power
of
the
type
system,
something
like
this
so
inside
here
we
have
a
this.a,
the
value
there.
It's
just
a
plain
string.
It
will
need
to
be
HTML
escaped,
be
it
will
need
to
be
HTML
escaped,
but
then
again
what?
G
This
is
the
place
where
all
your
escaping
systems
in
Django
rails.
This
is
the
place
where
they
fall
apart,
because
almost
invariably,
the
only
type
of
escaping
that
they
know
about,
is
HTML
escaping
once
so
in
c
in
location,
see
there
what
we're
expecting
there
is
actually
a
URL.
It
would
be
wrong,
semantically
incorrect
for
it
to
be
anything
other
than
a
URL
and
the
escaping
rules
are
different.
If
you
go
applying
HTML
escaping
rules
there,
it
will
break
in
D
as
well.
G
If
you
go
applying
HTML
escaping
rules,
it
will
break
and
what's
more
something
that
will
be
passed
by
it
as
perfectly
clean
HTML
will
be
bad
JavaScript.
That's
where
you
get
those
injection
things.
We
have
all
this
all
the
ability
to
have
this
semantic
information
which
were
just
ignoring,
and
that's
not
a
good
thing.
The
auto
escape
that
existing
frameworks
have
is
simply
not
enough
for
meaningful
security.
So
these
sorts
of
ideas.
These
are
things
that
I
would
like
to
see.
People
experimenting
with
see
what
you
can
do.
G
You
can
get
similar
sorts
of
things
with
sequel,
these
security,
bugs
that
we
have
here.
They
simply
don't
need
to
exist
in
a
language
like
Python
or
Ruby
or
JavaScript.
They
are
comparatively
unavoidable
in
a
language
like
most
of
these
security,
bugs
they
simply
don't
need
to
exist.
We
need
to
get
rid
of
them
with
our
type
system,
there's
an
article
that
I
have
linked
they're,
structurally
fixing
injection
bugs
it
goes
into
these
topics
in
some
more
detail.
G
So
we
have
a
type
system.
Let's
use
it
for
correctness,
because
correctness
is
a
very
important
thing
as
well,
but
we've
also
got
to
remember
rust.
Its
goal
is
pragmatism.
It
is
if
we
want
these
ideas
to
permeate
through
web
development
in
general.
We
need
to
embrace
the
pragmatism.
We
need
to
realize
that
we've
got
to
go
for
something
that
people
can
use,
even
if
it
might
not
be
quite
as
good
as
we
could
achieve.
If
we
wanted
to
go
carefully
into
all
the
theory
things
rust
is
not
a
skill.
G
G
Simply
don't
have
time
here
they
go
into
all
the
good
stuff
in
rust,
rust
ownership
model,
it's
something
that
I've
been
sorely
missing
when
I
work
in
Python,
because
you
you
end
up
just
not
being
able
to
reason
objectively
about
something
that
I've
grown
used
to
being
held
a
reason
objectively
about
using
the
type
system
for
errors
rather
than
exceptions,
and
so
on.
It's
a
very
nice
thing
to
have.
G
So
the
summary
of
all
this
is,
if
you
want
to
get
rid
of
all
your
bugs
all
your
bugs,
like
a
most
of
your
bags,
lots
of
your
bags,
some
of
your
bugs
a
few
of
your
bugs
any
one
or
two.
If
you
want
to
get
rid
of
some
sorry,
some
of
those
things,
if
you
are
to
reduce
the
number
of
machines,
you
need
to
make
things
faster,
you
make
money,
make
your
users
happy,
throw
away
your
dynamic
languages,
use
rust
for
web
development,
a.
G
G
You
find
that
some
of
the
increased
verbosity
some
of
the
increased
memory
capacity
that
you've
got
to
deal
with
I'm
in
your
own
memory
capacity,
not
computers,
because
you'll
find
memory
usage
goes
down
a
lot
too,
but
just
some
of
these
things,
rust
is
conceptually
more
complex
than
these
other
languages.
Make
no
mistake
of
that
so
yeah
keep
going
with
these
other
things.
Try
rust
out
as
well,
because
you
may
find
that
one
of
them
suits
your
purpose
is
better
than
the
other.
G
Now
briefly,
just
about
TP
and
a
month
ago,
I
was
here
for
the
last
meet
up
and
then
on
the
following
monday.
I
went
cycling
off
into
the
distance
on
my
recumbent
tricycle
towards
st.
Louis
for
strange
loop,
I
made
it
I
actually
only
made
it
as
far
as
Lucerne
Valley
and
before
I
had
a
mishap
which
resulted
in
a
we.
G
All
being
bent
and
I
straightened
it
enough
that
I
could
continue
but
decided
didn't
quite
trust
it
enough
to
go
continue
going
through
the
desert,
where
there
was
no
one
around
so
I
went
back
to
the
nearest
town.
Hired
a
car
went
via
the
Grand
Canyon
for
a
couple
of
days,
but
during
all
that
time,
I
found
myself
simply
disinclined
to
do
anything
to
do
with
computers,
which
I
haven't
felt
for
many
many
years,
who's
very
interesting,
so
yes,
TP
and
so
on.
It
all
just
stalled
while
I
had
this
holiday.
G
It
needs
to
get
past
this
stage.
So,
but
there
are
some
pretty
tricky
questions
to
do
with
how
precisely
pausing
in
particular
should
be
handled.
I
would
be
interested
to
go
talking
with
various
people
about
afterwards,
perhaps
at
the
table
over
there,
or
something
like
that.
If
you're
interested
in
helping
out
with
that
feel
free
to
come
over
and
I,
think
that
that's
it
is
anyone
have
any
questions.
G
Complaints,
yeah,
oh
sorry,
yeah
should
have
I
should
have
specified
what
TP
was
and
so.
First
of
all,
we
had
rust,
HTTP,
the
HTTP
library,
and,
but
it
was
largely
experimental.
I
was
figuring
rust
out
as
I
went
there
and
got
to
the
stage
where
it
need
to
needed
to
be
replaced.
So
TP
is
the
redesigning
of
the
designing
of
an
HTTP
library
from
the
ground
up,
thus
naturally
prone
to
second
system
syndrome,
and
all
that.
E
D
F
Yeah
I'll
get
a
question
about
the
rush.
Compiler
I
agree
with
you
that
it's
nice
to
have
a
system
which
will
do
type
checking
for
you
and
make
your
empties
for
you.
On
the
other
hand,
it's
also
nice
to
have
a
system
which
is
responsive
for
development
like
a
ruffle
or
or
like
a
fast
interpreter.
F
So
I
guess
my
question
is
I,
don't
know
anything
about
the
internals
of
roughs
compiler.
Would
it
be
possible
to
build
something
which
ran
quickly
but
did
not
make
all
those
tests,
and
then
you
could
use
that
for
development
and
every
so
often
like
the
testing,
people
do
say.
Okay
now
now
now
run
the
full
set
of
checks
to
see
if
I'm
doing
any
stupid
to
the.
G
Extent
that
you
say
no
and
to
a
more
limited
extent,
I
hope,
so
I'm
just
waiting
for
someone
else
to
do
it.
Yeah
there
are
various
things
that
can
be
done
to
improve
performance
in
those
sorts
of
things,
say,
background
compilation,
that's
something
that
can
be
done
yeah
also,
if
you
do
turn
off
all
optimizations.
G
There
are
various
other
tricks
that
you
can
do
to
speed
things
up
somewhat,
but
still
certainly
compile
time.
Performance
I
would
say,
is
just
about
the
weakest
point
of
a
whole
lot,
but
that's
acknowledged
to
be
a
problem
with
rust
as
a
whole,
so
there
will
certainly
be
ongoing
work
towards
mitigating
those
problems.
B
H
B
I
guess
the
traditional
difference
between
dynamic
languages
like
Python
or
Java
Script
and
static
compiled
languages,
was
when
you're
prototyping
in
a
language
and
you're,
sometimes
you're
messing
with
the
the
data
model
and
you're
you're,
changing
it
a
lot
a
lot
of
times
in
traditional
languages
like
C
or
C++,
it's
a
little
cumbersome
to
make
changes
like
that.
There's
it's
a
because
they're,
verbose
and
they're
part
of
a
lot
of
changes
in
different
areas.
How
does
a
out
of
busts
kind
of
mitigate
this?
What.
D
G
We'll
find
out
with
something
with
some
of
these
lots
of
things.
I
am
hopeful
that
they
will
work
well.
A
lot
of
it
will
come
down
to
the
design
of
any
framework
making
so
making
it
designed
to
cope
with
these
sorts
of
things
as
welders
can
be
done,
but
these
are
points
where
it
may
not
turn
out
as
well
as
I
expect
it
to
that's.
Why
I
give
this
advice,
keep
going
with
your
dynamic
development,
but
try
out
Russell,
try
and
see
what
a
good
type
system
can
do.
Did
someone
speak
to
me.
G
F
I
G
F
I
G
It's
worth
bearing
in
mind
with
them,
so
with
see
the
standard
model
that
you'll
have
actually
I
should
change
this
black,
so
black
I
meant
black,
not
blue
B
is
blue
rather
than
black
k
is
black.
The
the
sea
model
is
to
have
you
have
lots
of
different
files,
and
you
then
go
you
go
building
each
of
these
files
individually.
G
Oh
capers
scales
don't
work
now,
but
you
there
is
not
so
much
inherently
good
about
see,
as
you
might
think,
there
are
various
things
in
rust
that
can
and
will
be
improved
over
time
where
there
simply
hasn't
been
time
to
experiment
with
improving
them.
Yet
because
at
present
there
is
one
rust
compiler
of
any
seriousness
at
all,
but
well
how
many
C
compilers
are
there
about
there?
G
Yes,
my
concerns
for
passing
the
plaster
there
is
this
scary
thing
in
HTTP,
which
has
a
number
two
in
it.
Http
two
is
rather
difficult
to
manage
because
with
HTTP
to
you,
go
implementing
full
multiplexing
and
dependency
management
and
price
stream
priorities
all
over
the
one
stream
managing
that
in
the
same
way,
which
that
and
having
it
map
onto
some
task
model
or
whatever
that
still
keeping
it
flexible
is
hard
deciding.
Also
how
precisely
to
balance
performance
with
correctness.
G
That's
a
fairly
tricky
thing
as
well
say:
Giants,
HTTP
parser,
which
is
used
by
node
engine
X,
and
so
on.
It's
a
monstrosity
which
needs
to
die.
It
is
a
really
really
horrible
piece
of
code.
It's
a
marvel
that
it
works
at
all
its
head.
In
my
first
read-through
of
the
code,
I
found
at
least
two
rather
severe
bugs
it's
not
a
nice
thing.
What
it's
worth
there.
E
Qulet
parts
of
the
post,
I
think
it's
been
textin,
but
that.
G
Was
one
of
the
ones
that
I
picked
up
on
my
first
rate
through
where
it
simply
wasn't
checking
things
properly,
but
yet
deciding
whether
to
go
for
an
iteration
based
model
or
call
backs
or
whatever
there
are
or
phantom
types.
There
are
various
approaches
that
can
be
used
with
pros
and
cons.
Then
yeah
I
have
a
couple
of
prototypes.
That
I
can
show
people
afterwards,
but
John
rim
won't
be
here.
For
that
sorry,
John
at
least
John.
You
can
know
that
some
of
these
things
are
things
that
I
discussed
vaguely
with
you
a
month
ago.
G
E
A
D
G
H
G
G
D
G
A
Do
you
mind
if
I
say
a
few
things
about
some
of
the
issues
that
just
came
up
there
Bryce
on
your
question
about
using
HTTP
and
production?
I
wanted
to
note
that
the
cargo
has
a
centralized
repository
that
is
web-based
and
it's
not
online
yet,
but
it's
going
to
come
online,
the
next
month
or
so.
This
is
going
to
be
it's
almost
entirely
rust
and
it's
going
to
be
exposed
to
the
web.
A
A
Everybody
knows
this
is
kind
of
Russ
Achilles
heel
that
we're
slow
to
compile
in
general,
rust
compilation
is
divided
by
two
phases:
the
analysis
which
is
all
rust
and
optimization
and
cogeneration
result
lvm
and
general
compilation
is
dominated
by
llvm
recently,
a
parallel
code
generation
patch
landed,
which
takes
some
the
lvm
step
and
divides
it
into
some
number
of
threads.
This
is
not
on
by
default,
but
it
can
provide
speed.
A
Ups,
the
same
off
that
did
that
Stewart
perm
Steiner
has
an
incremental
compilation
patch,
which
is
supposed
to
specifically
address
the
development
cycle,
so
it
only
recompile
things
that
have
changed,
and
it
does
kind
of
interprocedural
analysis
to
just
figure
out
exactly
the
code.
This
change,
and
only
recoge
in
that,
and
that
you
provide
a
lot
better
experience
that
the
dynamic
language
of
are
familiar
with
beyond
that
gets
a
lot
harder,
though,
to
get
improvements.
What
you'll
see
probably
past
that
is
the
next
lowest
hanging
fruit
is
simply
improving.
A
Russ
I,
our
generation,
the
code
that
we're
feeding
to
the
lmm
back
end
right
now,
we're
kind
of
notorious
for
the
poor
quality
of
IR
that
we
send
llvm.
We
really
lean
heavily
on
llvm
to
do
optimizations
and
kind
of
perform
optimization
miracles
to
make
the
code
fast.
If
you
look
at
clangs
output
versus
a
Russ
output,
clangs
ir
looks
really
nice.
It's
treating
llvm
with
a
lot
of
respect,
russ
just
dumped
garbage
on
llvm
and
expects
us
to
perform
miracles.
So
some
low-hanging
fruit
there
and
that's
probably
the
next
place-
will
go
beyond
that.
A
Finally,
that
was
awesome,
Chris
and
awesome.
Andre
Allen
sorry
I
want
to
mention
that
there's
a
whole
bunch
of
going
on
in
the
rest
community
right
now,
a
lot
of
events
around
the
world.
If
you
go
to
the
rust
website,
there's
a
new
link
that
goes
to
the
community
calendar.
A
There
are
regular
events
in
both
Paris
and
Seattle,
there's
also
starting
to
be
some
spun
up
in
Tokyo
and
there's
kind
of
talks
at
conferences
periodically
throughout
the
year
lots
going
on,
let's
going
what's
happening,
especially
as
we
ramp
up
the
one
point,
though
it's
very
exciting,
so
keep
an
eye
on
that.
Thank
you,
everybody
for
coming.
It's
really
been
a
pleasure.
Thank
you
good
night.