►
Description
Embark Studios software engineer Jake Shadle (@Ca1ne) explains how Rust, open source, and game development fit together in this talk from the Stockholm Rust meetup.
See all our open source projects and sign up for our newsletter at https://embark.dev
A
So
yeah
it's
about
it's
actually
the
Triforce
of
Russ
gamedev,
an
open-source,
but
we'll
get
to
that
later.
So
this
is
a
bit
of
it
over
you
going
to
go
briefly
through
a
high-level
kind
of
thing
of
what
game
dev
is
for.
Those
who
may
not
be
familiar,
go
a
little
bit
more
in
depth
about
why
we
chose
rust
and
from
the
open
source
protective
and
then
talk
about
using
open
source
hurdles
with
these
English
and
source
collaborating
on
open
source
and
hurdles.
A
So
this
is
a
little
bit
me.
I've
been
working
in
gay
dub
for
almost
13
years
now
and
I've
worked
that's
to
middling
sized
companies
of
like
under
150
people,
and
then
I
was
at
frostbites
in
EA
for
many
years
and
they're
quite
huge
and
then
now
I'm
in
embarks,
videos
working
in
rust
and
we're
small
but
fierce
and
so
so
kind
of
a
disclaimer.
Like
a
lot
of
things,
gonna
say
about
game.
A
Dev
are
like
my
opinions
that
I've
formed
over
the
course
of
my
work
experience,
and
this
is
like
I
would
say
typical
of
game
dev.
But
it's
not
necessarily
going
to
be
true
for
all
game
depth.
There's
a
lot
of
differences,
because
game
dev
is
a
huge
industry,
so
there's
there's
the
things
I
say
will
not
apply
to
everything
so
quickly.
We're
gonna
go
through
some
stuff
with
this,
so
so
these
are
kind
of
the
the
typical
pieces
of
that
you'll
find
in
games.
A
I'm
not
going
to
talk
about
server
and
services,
because
they're
kind
of
all
the
scope,
but
the
other
pieces
are
quite
relevant.
So
so
the
main
kind
of
piece
is
the
the
engine.
This
is
like
where
the
platform
abstractions
are
where
this
could
be
considered
like
the
standard
of
game
dev,
in
the
sense
that
it's
where
the
platform
distractions
are
so
that's.
The
games
can
be
easily
ported
to
multiple
platforms
and
all
that
kind
of
stuff
ins
where
middleware
integrations
happen,
and
it
is
an
occasional
user
of
open
source.
A
But
that
is
part
of
the
making
of
the
games,
and
this
is
typically
a
mixture
of
languages
not
just
C++
and
they're,
usually
window
specific,
but
not
always,
and
then
there's
the
actual
game
itself.
So
this
is
like
the
very
unique
code
that
makes
up
a
game.
It's
an
infrequent
user
of
open
source
because
it's
typically
like
custom
code.
That,
like
only
applies
to
one
game,
so
it's
not
really
applicable
to
a
lot
of
general
use
cases.
A
So
yeah,
so
so
kind
of
in
the
summary
like
open
source
is
used
in
game
dev
quite
a
bit,
especially
in
tools
and
then,
but
like
kind
of
all
the
things
in
game
dev
for
the
most
part
or
closed
source.
But
like
it
gets
said,
that's
only
typical.
There
are
a
lot
of
good
stuff
out
there
as
well
sometime
we
get
to
why
rust.
A
A
A
Rust
is
a
little
bit
simpler.
You
have
one
line
to
a
file,
and
then
you
get
the
code
and
that's
about
it,
but
we
also
do
have
then
ring
so
so
previously.
This
is
a
separate
tool,
but
actually
it's
now
built
in
the
into
cargo
itself,
where
you
can
just
vendor
all
of
a
package
and
all
of
its
transitive
dependencies
into
a
local
directory,
and
then
you
can
put
in
your
source,
control
or
or
whatever
you
want
to
do.
A
And
then
you
have
to
do
something
usually
for
like
if
you're
using
this
code
on
the
ps4
or
Xbox
one
or
any
kind
of
proprietary
platform
that
doesn't
have
a
publicly
available
SDK
that
most
developers
won't
have
access
to.
Then
you
have
to
go
in
and
fix.
This
is
calls
and
the
asterisk.
There
is
because
the
same
problem
exists
for
us,
but
it's
actually
worse
for
rust,
because
rust
does
have
a
SDK
for
the
ps4,
it's
a
C++
one.
A
It's
just
really
really
hard
to
to
decide
on
how
to
write
an
API,
for
example,
and
because
of
this
it's
it's
not
trivial,
often
to
actually
just
use
a
C++
library.
So
usually
what
happens?
Is
you
have
a
C
C
library
which
is
way
easier
to
use,
but
you
still
have
to
wrap
it.
You
have
to
protect
kind
of
the
rest
of
your
code
base
from
it,
because
you
don't
know
what
it's
doing
and
you
want
prevent
improper
usage.
A
So
this
is
a
bit
of
a
controversial
opinion,
but
in
my
opinion,
Russ
is
a
small
language
as
it
like
skews
more
towards
C
than
C++
in
terms
of
cut
size
and
complexity.
Obviously,
it's
a
lot
more
complicated
than
the
C,
but
I
think
it's
way
less
complicated
in
C++
and
one
of
the
kind
of
core
concepts
in
it
is
traits
and
traits
are
a
way
for
libraries
communicate
with
each
other
with
each
other
without
having
to
be
tightly
integrated
and
coupled
together
and
I.
A
A
A
So
so
talked
a
little
bit
like
technical
issues
with
with
actually
using
open
source,
but
there's
a
lot
of
problems
with
using
it
that
in
game
does
specifically
and
I
think,
probably
in
other
industries
that
are
not
really
technically
related
and
the
big
one
is
licensing
so
so.
Game
dev
has
like
a
fear
of
external
code,
particularly
because
of
licenses,
and
particularly
because
of
things
like
GPL
and
copyleft
licenses,
because
GPL
and
how
copyleft
works
is
like.
A
If
that
code
ever
gets
into
a
game
that
goes
to
users,
then
the
entire
rest
of
the
code
also
has
to
be
open
sourced.
So
so
companies
are
very,
very
paranoid
about
that
happening,
and
so
so
what
happens?
Is
companies
will
develop
processes
around
this?
Where
I'll
do
things
like
have
licensing
portals
or
approvals
from
your
manager
or
all
this
kind
of
manual
process
to
go
through
to
actually
be
able
to
use
open
source
in
the
first
place?
A
And
it
it's
it's
a
problem,
but
it's
actually
not
as
big
of
a
problem
for
seeing
c++
because
as
we've
gone
through,
it's
kind
of
annoying
to
actually
get
it
in
the
first
place.
So
having
a
manual
process
to
get
approval
to,
do
it
anyway,
isn't
really
that
big
of
a
deal
because
you're
already
spending
a
ton
of
time
on
it.
So
it's
not
really
an
issue,
but
for
rust
it
is
an
issue
because
it's
so
easy
to
do.
A
You
kind
of
have
to
have
a
not
manual
process,
and
so
so
Russ
does
have
in
cargo
have
metadata
associated
with
what
licensing
requirements
the
crate
has,
and
so
in
this
example,
we
just
said
MIT
or
BSD
too,
and
so
great.
We
have
the
metadata,
but
that
doesn't
really
help
us
because
you
still
have
to
look
at
it.
So
this
is
where
one
of
our
open
source
tools
comes
in.
So
this
is
cargo
deny
it's
our
dependency
gardening
tool.
A
We
use
it
to
kind
of
maintain
our
crate
graph
over
time
and
it's
open
source
you
can
go
and
get
hub
and
look
at
it
or
install
it,
and
basically
the
top
kind
of
goals
of
it
is
ensure
that
all
the
crates
that
we
use
have
proper
licensing
and
keep
certain
crates
of
our
dependency
graph,
because
we
don't
like
them
and
then
also
detects
duplicates,
which
is
important
for
build
times.
So
in
this
case
this
is
the
the
config.
A
So
if
you
remember,
I
had
it
as
MIT
or
BSD
and
then
we're
also
using
some
transitive
dependencies.
So
here
because
we
haven't
allowed
any
licenses,
every
license
is
gonna,
be
a
problem,
and
this
is
saying,
like
the
I
detected
this
license
and
you
didn't
meet
any
other
requirements,
so
I'm
gonna
actually
fail.
A
So
another
reason
that
you
don't
use
some
of
the
source
is
financial
reasons
and
companies
like
to
buy
software,
because
if
you
buy
software
you
tend
to
have
support
agreements
and
contracts
and
grievance
and
there's
legal
stuff
and
people
like
paying
for
stuff
and
and
we
do
but
but
it's
a
weird
thing
to
say
that
people
would
rather
you
pay
for
something
than
get
it
for
free.
But
that
does
happen,
and
this
is
an
open
problem.
Open
source.
A
A
But
it's
a
it's
an
issue
that
we're
working
with
a
lot
of
people
to
figure
out
what
the
best
way
for
it
is
here,
because
open-source
in
general
is
kind
of
having
this
problem.
I
think
right
now
and
it's
something
that
we're
interested
in
helping
helping
with
so
so
we
got
past
the
the
using
open-source.
A
How
do
you
actually
collaborate
on
open-source
so
so
c++
again
we
get
to
the
problem
of
everyone
says
like
c
and
c++
is
portable,
particularly
c,
like
c
runs
everywhere
great,
except
if
you
aren't
on
the
proper
platform,
and
you
don't
have
the
proper
compiler
and
you
don't
have
the
proper
tool
chain,
it
kind
of
quickly
gets
complicated
and
then
again
with
the
C++
there's
so
many
versions
of
it.
People
disagree
on
which
ones
you
should
support
and
then,
if
you're
on,
say
one
particular
compiler
that
always
locks
behind
on
C++
standardization.
A
A
So
so
Russ
is
a
much
much
simpler
story.
It
has
one
compiler
several
linkers
and
one
kind
of
build
system
and
the
reason
there's
an
ostrich.
All
of
these
is
because
Russ
makes
it
really
really
easy
to
consume,
see
particularly
C,
but
also
C++
code
as
we'll
get
to
later,
and
but
as
soon
as
you
have
seen,
C++
code,
all
of
a
sudden.
A
All
these,
like
nice
guarantees
that
rusts
like
you,
can
just
download
something
and
use
it
kind
of
start
going
away,
because
all
of
a
sudden,
oh
I,
have
to
have
a
proper
C++
compiler,
oh
I'm,
leaking
against
the
system,
dependency
that
may
or
may
not
be
on
the
the
system,
and
so
all
of
a
sudden
you
get
into
more
complicated
scenarios
because
they've
seen
C++.
So
hopefully,
in
the
long
term,
there
will
be
less
of
that
code
in
the
future,
so
that
will
have
fewer
problems.
A
And
then
we
get
to
the
problem
of
just
like
code
quality,
it's
really
hard
to
collaborate
when
you
have
to
fight
with
people
giving
you
PRS.
Are
you
sending
PRS
or
someone
else,
and
you
have
wildly
varying
opinions
on
how
to
write
good,
C,
n
C++
code
and
if
it's
safe
or
not-
and
you
know,
if
you're
on,
say
Windows
and
you
don't
have
access
to
things
like
cache,
grind
or
BA
grind
or
all
the
kind
of
nice
tooling
for
finding
some
of
these
issues.
A
A
The
biggest
one
would
be
the
language
guarantees
that
you
get
from
just
the
safety
aspect,
but
then
also
there's
just
like
a
massive
amount
of
tooling
that
that
Russ
is
created
both
just
for
Russ,
but
also
just
wrapping
things
that
C
and
C++
already
have
such
as
fuzzers,
so
the
first
one.
So
so
this
made
a
small
change
to
our
program
and
just
move
the
printing
to
another
thread
to
make
it
faster.
A
Did
they
break
the
test
or
did
I
break
the
test?
It
just
makes
yeah
PRS
and
all
this
kind
of
stuff
just
vastly
easier
when
you
have
something
built
in
that
you
can
just
trust
or
rely
on
and
there's
just
like.
So
many
other
ways
that
rusts
reduce
rust
and
the
rust
ecosystem
reduces
friction.
There's
too
many
things
to
talk
about,
but
there's
you
know
yeah,
there's
just
so
many
good
things.
Yeah,
like
Docs
RS,
like
every
single
publicly
published
crate,
has
document
full
documentation
generated
from
the
source
code.
A
That
is
also
checked
against
the
compiler,
to
make
sure
that
your
example
code
actually
compiles
like
it's
insane
and
then
and
then
there's
just
like
the
standard
tooling.
That
is
kind
of
pervasive
in
the
Russ
ecosystem,
which
is
one
of
them,
is
Russ
format.
So
I
really
hate
talking
about
code
cell
because
it's
to
me
very,
very
boring
and
pointless,
but
people
have
really
strong
opinions
about
it.
So
we
just
removed
the
opinion
from
it
and
say
whatever
russ
format
says
is
how
we
accept
PRS
or
not
like.
A
Clippy
copy
is
just
like
a
way
to
find
just
a
lot
of
just
simple
low-hanging
fruit
that
it's
cleans
up.
Your
codebase
reduces
like
simple
performance
issues
and
just
makes
your
code
cleaner
and
nicer,
and
it's
a
great
way
for
people
to
learn
rust,
because
they
can
just
run
clicky
on
a
project
and
say:
oh,
you
have
this
little
thing
and
I
can
fix
it
and
then
another
feature
of
car,
great
and
I
was
yeah.
A
A
So
so,
as
said
before,
we
had
the
hurdles
for
using
open
source.
Now,
there's
also
the
hurdles
for
collaboration,
so
the
biggest
one
is
obviously
just
like.
Collaboration
is
hard,
also
in
your
talking
with
people
from
other
companies
that
may
have
differing
opinions
on
priorities
and
what
they
feel
is
important
and-
and
it's
really
really
hard.
A
It's
both
hard
open
sourcing,
your
own
things,
because
other
people
get
to
see
your
code,
which
is
maybe
not
good
and
then
and
then,
like
just
talking
with
people,
that
you
don't
have
a
relationship
with
that
may
live
across
the
world.
It's
very,
very
difficult
and
I
think,
particularly
in
game
dev
communities,
companies,
open-source
is
considered
kind
of
a
zero-sum
game,
or
even
a
negative
sum
game,
and
like
it's
really
hard
to
just
get
something
open-source
or
make
a
cait
like,
you
often
have
to
make
a
business
case
for
it.
A
So,
for
example,
if
a
company
was
to
have
their
own
internal
version
of
the
standard
template
library
for
for
C++
and
they
wanted
to
open-source
it,
they
may
have
to
prove
it
as
a
worthy
thing
to
do
by
making
a
case
that
they
could
influence
the
standard
Committee,
for
example,
and
then
also
a
lot
of
people
just
think
that
their
code
is
the
best
thing
ever
and
I
worked
really
hard
on
it.
So
why
would
I?
A
Let
other
people
see
it
and
use
it,
which
is
a
weird
argument,
if
you're
a
programmer,
in
my
opinion
and
and
kind
of
we,
we
disagree,
obviously
like
it's
a
lot
of
hard
work,
but
it's
worth
it
so,
for
example,
this
was
a
PR
that
we
gave
that
we
got
I.
Think
like
two
days
after
we
open
source
this
texture
synthesis
crate
which,
if
you
haven't
seen
yet
I,
really
recommend
you
check
it
out.
A
It's
like
really
really
cool
and
it's
written
by
a
one
of
our
employees
that
she's
like
kind
of
a
rust
newb
and
she
was
able
to
make
a
awesome,
rust
crate.
That
was
really
cool.
That's
like
seven
hundred
stars
but
yeah.
We
got
this
like
two
days
later
and
then
proved
the
poorest
by
50%
cool
too.
So
to
summarize
so
so
right
now
we
have
our
main
Russ
project
and
hat
uses
about
411
open-source
crates.
A
We
like
a
like
yoen,
mentioned:
we've
open
sourced
nine
crates.
Now
we've
contributed
issues,
poll
requests,
yeah
all
kinds
of
stuff
to
a
lot
of
crates.
Most
of
them
are
just
bumping
dependencies,
but
some
of
them
are
bug,
fixes
and
and
so
forth,
and
we're
also
yeah
helping
sponsor
and
fund
several
people
and
projects
like
rust,
analyzer,
for
example,
because
we
really
want
to
invest
more
an
open-source,
whether
that's
collaborating
just
on
code
or
paying
people.
A
So
so
yeah,
so
so
Russ
just
for
us
simplifies
contributing
using
an
open
source
like
really
before
this
I.
Don't
think
really
any
of
us
had
really
been
involved
that
much
in
the
open
source
community,
because
it
was
just
hard
and
we
worked
at
companies
that
were
kind
of
like
antithetical
to
to
how
the
source
works,
but
but
yeah
the
the
combination
of
rust
and
open
source
and
Gabe
dev
is
just
like
a
really
great
combination
and
even
without
rust,
that's
a
blog
post
by
one
of
our
DevOps
engineers.
A
So
I
think,
like
I,
said,
like
there's,
actually
a
lot
of
the
good
parts
of
C++
and
the
C++
and
C
ecosystems
like
really
good
fuzzers,
really
good,
stack,
analyzers,
and
so
for
that
you
can
still
use
from
rust
so
and
like
same
thing
with
debuggers
and
they're
like
a
lot
of
the
tooling
and
then
like
yeah.
Llvm
is
kind
of
the
reason
why
rust
can
target
a
lot
of
things.
So
it
was
like
the
improvements
that
the
clang
team
makes
to
LLVM
to
improve
their
code,
improves
for
us
as
well.
So.
A
Yeah,
so
the
talk
after
mine
will
go
way
further
in
depth.
Anyone
on
that
but
yeah,
like
I
I,
mean
I,
would
say.
Our
ultimate
goal
is
to
read
our
entire
code
base
of
all
scenes
C++
as
much
as
possible,
like
one
reason
why
we
really
dislike
open
those
cells,
because
open
SSL
has
system
dependencies
that
are
fine
on
Linux
and
Mac,
but
our
Paolo
Matic
on
Windows.
So
we
just
use
rust,
LS
and
yeah
it.
It
makes
it
so
that
yeah,
so
it's
it's
Adam
and
C.
A
Okay
yeah?
So
so
we
definitely
gloss
over
some
of
the
the
problems
with
rust
because,
like
so
so
rust
like
makes
getting
dependencies
really
really
easy
and
there's
a
thing
called
builder
s
which
means
it'll
like
it
can
do
anything
at
once.
So
most
people
use
it
for
building
C++
or
downloading
a
git
repo
to
then
compile
it
or
something
like
that.
But
they
call
so
just
like
take
your
SSH
keys
and
upload
them
somewhere,
and
nothing
really
stops
that.
A
A
But
it's
basically
procedural,
macros
or
way
that
you
can
generate
code
and
and
do
all
kinds
of
compile
time
transformations
of
code
and
what
they
he
actually
did
was
put
into
wasum
so
that
all
Son,
the
the
piece
of
macros
or
sandbox,
and
they
can't
actually
access
the
system
because,
like
normally,
they
can
just
like
write
files
or
read
files
or
do
whatever
they
want.
But
now
I
can
only
act
interact
via
Wasson,
so
it
actually
makes
it
safe.