-
Not Synced
Okay, hi everybody, I am Scott.
-
Not Synced
My mentor is Nico. I am from
-
Not Synced
Perdue University. I am a PhD student.
-
Not Synced
My talk is on MIR Optimizations. I work on
-
Not Synced
the rust compiler. So this is the "get
-
Not Synced
pumped up!" slide. I'm going to tell you
-
Not Synced
these things and feel free to cheer
-
Not Synced
whenever you're ready. Do you want faster
-
Not Synced
programs? Yeah!
-
Not Synced
[audience cheering "yeah!"]
-
Not Synced
[audience laughs]
-
Not Synced
Do you want longer battery life?
-
Not Synced
[audience cheering "hell yeah!]
-
Not Synced
Do you want more free memory?
-
Not Synced
[audience cheering]
-
Not Synced
We want all these things and how are we
-
Not Synced
going to get them? We're going to get them
-
Not Synced
through compiler optimization.
-
Not Synced
[audience laughs]
-
Not Synced
Okay, so I need to do some background
-
Not Synced
before I jump into what I did this summer, but
-
Not Synced
it's going to be pretty brief and high
-
Not Synced
level, so I'll go fast just so we're all
-
Not Synced
on the same page. We start from the Rust
-
Not Synced
Source, which Cameron talked about Rust
-
Not Synced
in his previous presentation. Basically
-
Not Synced
it's a high level systems programming
-
Not Synced
language. And the compiler doesn't just
-
Not Synced
compile Rust line by line in the machine
-
Not Synced
code, it goes through intermediate steps.
-
Not Synced
It compiles the Rust Source to High Level
-
Not Synced
Intermediate Representation to LLVM
-
Not Synced
Intermediate Remediation, and then to
-
Not Synced
Machine Code. This is pretty much how most
-
Not Synced
compilers work of high level (incoherent)
-
Not Synced
languages. You don't want to go from
-
Not Synced
Source to Machine Code in one step.
-
Not Synced
What we do recently--actually today the
-
Not Synced
Rust team flipped the switch and now MIR
-
Not Synced
is part of the Rust Compiler. MIR stands
-
Not Synced
for "Middle Intermediate Representation"
-
Not Synced
and it's coincidentally the same name of a
-
Not Synced
space ship...that's the space ship.
-
Not Synced
So what did we do? There's now a tiny
-
Not Synced
space ship in the compiler and it's
-
Not Synced
between the High Level and LLVM IR.
-
Not Synced
So, why would we do this? What's MIR
-
Not Synced
good for? Basically, it's the simple core
-
Not Synced
of Rust. It makes things explicit that
-
Not Synced
were not explicit in Rust's code because
-
Not Synced
you wouldn't want the [incoherent] to
-
Not Synced
detect these things out, obviously. Types
-
Not Synced
of variables should be elighted in certain