Return to Video

Making MIR Fly

  • 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
Title:
Making MIR Fly
Description:

more » « less
Video Language:
English
Duration:
11:31

English subtitles

Incomplete

Revisions