Working Areas
Much of the ongoing work and initiatives from the compiler team are performed by groups of people interested in specific areas of work. These groups are a great way for new contributors to get involved as they provide a stream of tasks focused around one area and have designated channels for help and advice. Here is a list of areas where work is being carried on:
Name | Short Description | Code | Zulip Stream |
---|---|---|---|
Async-await Implementation | Implementing async-await | Link | #wg-async |
Diagnostics | Use crates.io crates for diagnostics rendering and make emitting diagnostics nicer. | rustc_errors, rustc_lint, annotate-snippets | #t-compiler/diagnostics |
LLVM | Working with LLVM upstream to represent Rust in its development | rustc, LLVM | #t-compiler/llvm |
MIR Optimizations | Write MIR optimizations and refactor the MIR to be more optimizable. | MIR transform | #t-compiler/mir-opts |
Parallel-rustc | Making parallel compilation the default for rustc | rustc | #t-compiler/parallel-rustc |
Polonius | Exploring the integration of the “NLL 2.0”-like “Polonius analysis” into rustc | borrow check, rust-lang/polonius, rust-lang/datafrog | #t-types/polonius |
RLS 2.0 | Experimenting with a new compiler architecture tailored for IDEs | rust-analyzer | #t-compiler/rust-analyzer |
Rustc Dev Guide | Make the compiler easier to learn by ensuring that rustc-dev-guide is “complete” | rustc, rustc-dev-guide | #t-compiler/rustc-dev-guide |
For historical record here’s a list of Working Groups that are not active anymore (either because they reached their goals or because work stalled):
Name | Short Description | Zulip Stream |
---|---|---|
Meta | How compiler team organizes itself | #z-archived-t-compiler/wg-meta |
Non-Lexical Lifetimes (NLL) | Implementing non-lexical lifetimes | #z-archived-t-compiler/wg-nll |
Polymorphization | Implement an analysis to detect when functions can remain polymorphic during code generation. | #z-archived-t-compiler/wg-polymorphization |
Prioritization | Triaging regressions, mainly deciding if there are potential release blockers | #t-compiler/prioritization |
Profile-Guided Optimization | Implementing profile-guided optimization for rustc | #z-archived-t-compiler/wg-profile-guided-optimization |
RFC 2229 | Make a closure capture individual fields of the variable rather than the entire composite variable | #z-archived-t-compiler/wg-rfc-2229 |
Rustc pipelining | Enable Cargo to invoke rustc in a pipelined fashion, speeding up crate graph compiles. | #z-archived-t-compiler/wg-pipelining |
Self-Profile | Improving the -Z self-profile feature | #z-archived-t-compiler/wg-self-profile |
Traits | Improving the trait-system design + implementation | #z-archived-t-compiler/wg-traits |