Skip to content

Commit 29d6ba7

Browse files
authored
Merge pull request #322 from nikomatsakis/minutes-compiler-team-287
add minutes from Roadmap 2020/2021 meeting
2 parents 417c87a + a6d3c8d commit 29d6ba7

File tree

1 file changed

+220
-0
lines changed

1 file changed

+220
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,220 @@
1+
---
2+
title: 2020-05-29 Roadmap 2020-2021
3+
type: docs
4+
---
5+
6+
# Links
7+
8+
* [Zulip topic](https://zulip-archive.rust-lang.org/238009tcompilermeetings/94984steeringmeetingroadmap20200529compilerteam287.html)
9+
* Meeting proposal: [rust-lang/compiler-team#287](https://github.com/rust-lang/compiler-team/issues/287)
10+
11+
# Key notes and points from the meeting itself
12+
13+
* Parallel compilation:
14+
* There was a general consensus to deprioritize parallel compilation
15+
in favor of pursuing better improvements to incremental compilation.
16+
* One interesting use case is CI turnaround times. Parallel
17+
compilation doesn't do much there since most CI systems are not
18+
very beefy. Incremental doesn't either, but it might if you
19+
enabled incremental support (and could trust it well enough).
20+
* We can still land some small PRs etc without it being on the
21+
roadmap necessarily.
22+
* Incremental compilation:
23+
* pnkfelix would like to get an incremental working group up and going.
24+
* simulacrum is interested in working on improving profiling.
25+
* impl Trait: we discussed a bit what it would take to finish up impl Trait.
26+
* How to drum up excitement:
27+
* WesleyWiser raised up the 2018 impl period as a really motivating
28+
and clear way to get involved:
29+
* ["I think one of the things I really liked about the 2018 impl
30+
period was that it created a really smooth ramp to get people
31+
involved with making the project goals
32+
happen."](https://zulip-archive.rust-lang.org/238009tcompilermeetings/94984steeringmeetingroadmap20200529compilerteam287.html#199164146)
33+
* A lot of the people who joined them, it seems, stuck around.
34+
* We discussed some of how we might recapture a bit of that spirit, with the thought
35+
that a big part of it
36+
* breaking down into a list of groups with goals
37+
* a marketing push advertising those rgoups and projects
38+
* identifying people who are happy to taker questons etc
39+
* We discussed "saying no" to some of the things on the list, notably
40+
a lot of them are assigned to nikomatsakis.
41+
42+
# Initial proposal
43+
44+
This section contains the proposal that was made up at the start of the meeting.
45+
46+
## General areas and themes
47+
48+
These are not meant to be specific projects, but more categories that justify *why* we are pursuing specific projects. The categories include a bit of "what" that clarifies what the category is as well as "why" indicating why this is a category of work worth pursuing.
49+
50+
* Improving the IDE experience
51+
* **Why?** In survey, a strong IDE experience was one of the top reasons given for "why I don't use Rust" or "what would make me use Rust more often", and the largest one that is directly under compiler team's control.
52+
* Improving build times for CI
53+
* **What?** From-scratch batch compilation performance
54+
* **What?** Integration with
55+
* **Why?** Anecdotal feedback that "interactive execution is ok, but CI is painful"
56+
* **Why?** Persistent complaint when it comes to large codebases especially
57+
* Polish and quality assurance
58+
* **What?** Fixing bugs, improving diagnostics
59+
* Deliver on long-standing features, finish things up
60+
* **Why?** Rust 2020 roadmap goal
61+
* **Why?** Anecdotally, a sense of "everything I want to use is always half-finished" has come up from numerous surveys (e.g., compiler team survey, a mozilla internal surveys) as well as frequent conversations.
62+
* Async polish and performance
63+
* **What?** Improving diagnostics, performance of async-await
64+
* **Why?** In survey, servers are the number one application for Rust.
65+
* Improving the way we organize ourselves
66+
* **What?** Structural changes to help us engage newcomers and be clearer in our priorities.
67+
* **Why?** Acting on the feedback from compiler-team survey that we need more prioritization and ability to communicate what we're doing.
68+
* **Why?** Help address the need
69+
* Improving incremental compilation
70+
* **What?** Making more source inputs incremental
71+
* **Why?** Improve local edit-compile-debug cycle
72+
* **What?** Increase test surface (e.g. discover new cases to test)
73+
* **Why?** Most incr-comp bugs reported do not have enough info for replication.
74+
* (An alternative here: Figure out ways to capture needed info automatically)
75+
76+
## Top goals for 2021 (Edition)
77+
78+
These are actual specific projects. The idea here is to be thinking about "things that would be complete by mid 2021" -- but really I have in mind "what can we get done by 2020", per [Hofstadter's Law]. The list is perhaps too ambitious. It's not meant to be *exhaustive* necessarily, but it should I think try to identify the major things we think we can realistic accomplish and is meant to help us in driving our efforts. In particular, places where a single person is driving multiple projects are somewhat suspect and we should look carefully at which is the most important thing. It's better to do one thing completely than two things half-way, in other words.
79+
80+
[Hofstadter's Law]: https://psychcentral.com/lib/hofstadters-law-and-realistic-planning/
81+
82+
For each goal, we list the following:
83+
84+
* Motivation: one of the motivations above
85+
* Driver(s): people who are driving this work, if known (typically leads of groups)
86+
* Group(s): groups driving this work, if any
87+
* Goals for 2021: try to enumerate the thing we think we can accomplish in more detail
88+
89+
### Goals
90+
91+
* Triage work
92+
* Motivation: Polish and quality assurance, Improving the way we organize ourselves
93+
* Driver(s): pnkfelix, spastorino
94+
* Group(s): wg-prioritization
95+
* Goals for 2021:
96+
* keep on keepin' on?
97+
* Keep the weekly triage meeting focused and on-time?
98+
* Rust-analyzer transition
99+
* Motivation: Improving the IDE experience
100+
* Driver(s): matklad, flodiebold
101+
* Groups(s): wg-rls
102+
* Goals for 2021:
103+
* moving rust-analyzer to be default IDE solution
104+
* rustc-dev-guide
105+
* Motivation: Improving the way we organize ourselves
106+
* Driver(s): spastorino
107+
* Group(s): wg-rustc-dev-guide
108+
* Goals for 2021:
109+
* Reorganized table of contents
110+
* Complete walk through?
111+
* Slowly fill out gaps in useful knowledge
112+
* Progress towards chalk integration
113+
* Motivation: Improving the IDE experience
114+
* Driver(s): nikomatsakis, flodiebold, jackh726
115+
* Group(s): wg-rls, wg-traits
116+
* Goal for 2021:
117+
* rust-analyzer is using chalk, enable it to type-check and manage most projects
118+
* extract a shared library for types usable by rustc, chalk, and rust-analyzer
119+
* integrate experimentally with rustc and get to the point where `-Zchalk` allows things to largely work
120+
* MIR Optimizations
121+
* Driver(s): oli, wesleywiser
122+
* Group(s): wg-mir-opt
123+
* Goal for 2021:
124+
* Speed up compile-time by removing work llvm has to do
125+
* Speed up runtime by doing optimizations that llvm can't do or doesn't have the (type?) information in order to do.
126+
* Basically make idiomatic code as fast as handcrafted
127+
* Generic associated types
128+
* Driver(s): nikomatsakis, matthewjasper perhaps
129+
* Group(s): wg-traits?
130+
* Goal for 2021:
131+
* Have some form of GATs, including type-generic associated types, usable in rustc under a feature flag
132+
* Fix known soundness bugs
133+
* Const generics
134+
* Motivation: Deliver on long-standing features, finish things up
135+
* Driver(s): varkor? who else?
136+
* Group(s): XXX no project group at present
137+
* Why this feature?
138+
* Commonly cited in the Rust survey as one of the things people are most excited about
139+
* Blocks a number of language improvements, such as SIMD, `let x: [u32; _] = ...`, etc
140+
* Goal for 2021:
141+
* Correct the bug around the "generic parent" (blocked on lazy normalization)
142+
* Stabilize? Is that too ambitious? Can we clarify other goals?
143+
* Const evaluation
144+
* Motivation: Deliver on long-standing features, finish things up
145+
* Driver(s): oli, ralf, ecstatic-morse
146+
* Group(s): wg-const-eval, miri
147+
* Why this feature?
148+
* Commonly requested feature for embedded (very important there) and for replacing lazy_static things with compile-time things
149+
* Loads of finished features that need a bit of carrying over the stabilization line.
150+
* Improve the performance of the trait system
151+
* Driver(s): eddyb, to a lesser extent nikomatsakis
152+
* Goal:
153+
* Complete work described in [w3f#261](https://github.com/w3f/General-Grants-Program/pull/261)
154+
* Introduce major change proposals (MCP)
155+
* Motivation: Improving the way we work
156+
* Driver(s): nikomatsakis
157+
* Group(s): wg-meta
158+
* Goal for 2021:
159+
* See widespread use of MCPs for major changes
160+
* Introduce groups for major areas in the compiler as well as targets
161+
* Motivation: Improving the way we work
162+
* Driver(s): nikomatsakis, spastorino
163+
* Groups(s): wg-meta
164+
* Goal:
165+
* Create clearer folks that
166+
* RFC 2229 Implementation
167+
* Motivation: Deliver on long-standing features, finish things up
168+
* Driver(s): nikomatsakis, matthewjasper
169+
* Group(s): wg-rfc-2229
170+
* Goal:
171+
* Land an initial version of the feature
172+
* Create a wg-incr-comp to focus on improvements to incremental compilation
173+
* Motivation:
174+
* Driver(s): pnkfelix, XXX?
175+
* Group(s) wg-incr-comp
176+
* Goal:
177+
*
178+
* Improving profiling infrastructure and self-profile
179+
* Motivation: Enabling other groups to establish metric-driven goals
180+
* Driver(s): simulacrum
181+
* Goals for 2021:
182+
* Be able to track disk space utilization of incremental, normal compilation
183+
* Track codegen unit splitting
184+
* impl Trait plan
185+
* Motivation: Deliver on long-standing features, finish things up
186+
* Driver(s): nikomatsakis, matthewjasper, oli-obk
187+
* Group(s): wg-impl-trait?
188+
* Goal:
189+
* Have to define the timeline, but basically clean up and deliver on impl Trait in various positions
190+
* Coordinate with lang team to see how much consensus we can get on other niggling questions
191+
* async-await polish
192+
* Motivation: Async polish and performance
193+
* Driver(s): tmandry, ...?
194+
* Group(s): wg-async-await
195+
* Goals for 2021:
196+
* Hard to define concretely, maybe we can?
197+
198+
## Awesome accomplishments
199+
200+
I'd like to also note some of the awesome accomplishments we've had since Rust 2018. Let's list them out here:
201+
202+
* self-profile and its integration into the perf page
203+
* Cross-lang ThinLTO and PGO (when did this ship?)
204+
* rustc-dev-guide has grown enormously
205+
* Const evaluation has made a ton of progress
206+
* MCP process introduced :tada:
207+
208+
## Projects not currently planned to move forward and why
209+
210+
This is based on the discussion in the meeting.
211+
212+
* Parallelization
213+
* Motivation: improving build times, but it's not clear which project above this helps (maybe CI)
214+
* Would need a good driver and plan
215+
* But the code does exist and there are real wins to be had here for people's experience, so quite possibly worth pursuing
216+
* Status for 2021:
217+
* In stasis
218+
* Might be willing to pursue, but it would require a real assessment of the plan and a set of committed people
219+
220+

0 commit comments

Comments
 (0)