Introduction

compiler-team

A home for compiler team planning documents, meeting minutes, and other such things. If you’re interested in learning about how rustc works – as well as advice on building the compiler, preparing a PR, and other similar topics – check out the rustc-dev-guide.

Quick facts

  • Where to find us: We are primarily present on Zulip, though some of us also monitor Discord.
  • Want to attend a meeting or follow along? See the “meeting calendar” section below.
  • Looking for technical information about how the compiler works? Check out the rustc-dev-guide.

Meeting Calendar

Our meeting calendar is publicly available from the following links:

Unless otherwise noted, all our meetings are open to the public and held on Zulip. There are two main team-wide meetings that we hold on a regular basis. There are also a variety of working group meetings.

Triage meeting

We have a weekly triage meeting to discuss and track regressions and urgent changes. This meeting is held on Zulip and open to anyone.

Steering meeting

We also have a regular steering meeting where we discuss proposed designs, changes to our process, and other topics. The topics are scheduled at a planning meeting that occurs every four weeks.

  • Have an idea? Click here to propose a topic to be scheduled by filing an issue with the correct template.
  • To see the current scheduled meetings, check out the meeting calendar.

Working Groups

Much of the ongoing work and initiatives from the compiler team are performed by working groups. Working groups are a great way for new contributors to get involved as they provide a stream of tasks all focused around one area and have designated channels for help and advice. All of the active working groups are listed below:

NameStatusShort DescriptionZulip Stream
Async-await ImplementationActiveImplementing async-await#t-compiler/wg-async-await
DiagnosticsActiveUse crates.io crates for diagnostics rendering and make emitting diagnostics nicer.#t-compiler/wg-diagnostics
Rustc Dev GuideActiveMake the compiler easier to learn by ensuring that rustc-dev-guide is “complete”#t-compiler/wg-rustc-dev-guide
LLVMIncubatingWorking with LLVM upstream to represent Rust in its development#t-compiler/wg-llvm
MetaActiveHow compiler team organizes itself#t-compiler/wg-meta
MIR OptimizationsActiveWrite MIR optimizations and refactor the MIR to be more optimizable.#t-compiler/wg-mir-opt
Non-Lexical Lifetimes (NLL)RetiredImplementing non-lexical lifetimes#t-compiler/wg-nll
Parallel-rustcPausedMaking parallel compilation the default for rustc#t-compiler/wg-parallel-rustc
PoloniusActiveExploring the integration of the “NLL 2.0”-like “Polonius analysis” into rustc#t-compiler/wg-polonius
PolymorphizationActiveImplement an analysis to detect when functions can remain polymorphic during code generation.#t-compiler/wg-polymorphization
PrioritizationActiveTriaging bugs, mainly deciding if bugs are critical (potential release blockers) or not.#t-compiler/wg-prioritization
Profile-Guided OptimizationRetiredImplementing profile-guided optimization for rustc#t-compiler/wg-profile-guided-optimization
RFC 2229ActiveMake a closure capture individual fields of the variable rather than the entire composite variable#t-compiler/wg-rfc-2229
RLS 2.0ActiveExperimenting with a new compiler architecture tailored for IDEs#t-compiler/wg-rls2.0
Rustc pipeliningRetiredEnable Cargo to invoke rustc in a pipelined fashion, speeding up crate graph compiles.#t-compiler/wg-pipelining
Self-ProfileActiveImproving the -Z self-profile feature#t-compiler/wg-self-profile
TraitsActiveImproving the trait-system design + implementation#t-compiler/wg-traits

Expert Map

If you’re interested in figuring out who can answer questions about a particular part of the compiler, or you’d just like to know who works on what, check out our experts directory. It contains a listing of the various parts of the compiler and a list of people who are experts on each one.

Procedures

The procedures directory contains descriptions of various rustc procedures.

Code of Conduct and licensing

All interactions on this repository (whether on issues, PRs, or elsewhere) are governed by the Rust Code of Conduct.

Further, all content on this repository is subject to the standard Rust licensing.