Skip to content

Instantly share code, notes, and snippets.

@nikomatsakis
Last active September 6, 2017 17:30
Show Gist options
  • Save nikomatsakis/916027b0c31ea401c2fe507c406a323a to your computer and use it in GitHub Desktop.
Save nikomatsakis/916027b0c31ea401c2fe507c406a323a to your computer and use it in GitHub Desktop.

I've been thinking a lot about the upcoming impl period -- as well as just about the compiler team in general. There are a broad range of RFCs that we would like to implement, covering a number of different areas. I would like to propose the formation of various focus groups (maybe these need a new name). The idea is to have independent groups of people focused on a particualr set of RFCs, organized around a common theme. Each group is responsible for planning out the implementation of its RFCs and mentoring people through that work. (After the impl period is over, I envision these groups continuing on, perhaps tweaked in various ways, as the new structure of the compiler team.)

Here is my proposed breakdown of the pending RFCs into groups.

Focus group: Front-end

This group is focused on changes that are almost entirely concerned with the "front-end" -- meaning parsing, name resolution, and other things that occur before the HIR is constructed, or during the very early phases of type resolution.

Focus group: Type check and MIR

This group is focused on changes that can be done in a relative targeted way, without requiring any restructures of how components work. This basically means that they do not intersect the trait system. =) Often, these changes will involve touching more than one part of the system, however.

Focus group: Traits system

The idea here is to generally take a look at the trait system, informed by the work on Chalk, and try to rework the implementation to be more flexible. This should also lay the groundwork (and/or implement) a number of pending RFCs:

Focus group: non-lexical lifetimes and MIR borrow

The overriding goal here is implementing the non-lexical lifetimes proposal and generally moving our safety checking to operate on MIR.

  • NLL prototyping
  • Re-implement borrowck on MIR (underway by pnkfelix, arielb1)

Focus group: constant evaluation

Focus group: incremental compilation

Obviously this has been a long effort.

Focus group: Code generation

  • repr(transparent)

  • MIR optimizations

    • This is not an RFC per se, but it is widely believed that doing some amount of MIR-level optimization can improve compile time as well as runtime of generated code.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment