You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: posts/inside-rust/2022-02-22-compiler-team-ambitions-2022.md
+50-24Lines changed: 50 additions & 24 deletions
Original file line number
Diff line number
Diff line change
@@ -173,34 +173,33 @@ As of this writing, we have 69 [open issues tagged I-unsound](https://github.com
173
173
174
174
In theory, any unsoundness issue potentially undermines Rust's promise of reliability. We want, by the end of this year, to have a clear understanding of how each of those I-unsound issues came to be. We are looking into systematically detecting such issues and whether we can deploy mitigations or fixes for entire classes of issues, instead of addressing them on a case by case basis.
175
175
176
-
[oli-obk], from Amazon Web Services, will be the primary owner of work in this space. Please reach out to [oli-obk] and [pnkfelix] (also from Amazon Web Services) if you are interested in helping resolve these issues! They are `@**oli**` and `@**pnkfelix**`[on zulip].
177
-
176
+
[oli-obk] will be the primary owner of work in this space. Please reach out to [oli-obk] and [pnkfelix] if you are interested in helping resolve these issues!
178
177
179
178
### Async Rust Initiatives (🦀, 👩💻)
180
179
181
180
There is significant overlap between async rust and other areas of this document, such as debugging and language expressiveness.
182
181
183
182
#### async traits
184
183
185
-
Rust today does not allow `async fn` in a trait, so Async Rust code usually ends up with components that are too tightly coupled; one cannot write reusable, general-purpose libraries without using workarounds like `#[async_trait]` that impose hidden costs. [nikomatsakis], from Amazon Web Services, and [tmandry], from Google, are driving the [async fn in traits initiative](https://github.com/rust-lang/async-fundamentals-initiative/issues/5), which will unlock the ability to write `async` methods in traits, natively. They are `@**nikomatsakis**` and `@**tmandry**`[on zulip].
184
+
Rust today does not allow `async fn` in a trait, so Async Rust code usually ends up with components that are too tightly coupled; one cannot write reusable, general-purpose libraries without using workarounds like `#[async_trait]` that impose hidden costs. [nikomatsakis]and [tmandry]are driving the [async fn in traits initiative](https://github.com/rust-lang/async-fundamentals-initiative/issues/5), which will unlock the ability to write `async` methods in traits, natively.
186
185
187
186
#### async crashdump dissection
188
187
189
-
[michaelwoerister], from Microsoft, is driving the [async crashdump initiative](https://rust-lang.github.io/async-crashdump-debugging-initiative/), which will enable developers to understand the control-flow stacks encoded in crashdumps for their async Rust programs. He is `@**mw**`[on zulip].
188
+
[michaelwoerister]is driving the [async crashdump initiative](https://rust-lang.github.io/async-crashdump-debugging-initiative/), which will enable developers to understand the control-flow stacks encoded in crashdumps for their async Rust programs.
190
189
191
190
There is a ton of other work being done in the Async Rust space. Check out the [Async Vision web site](https://rust-lang.github.io/wg-async/welcome.html) for more information.
192
191
193
192
### Debugging Initiatives (🦀)
194
193
195
-
[wesleywiser], from Microsoft, and [pnkfelix] are spinning up a wg-debugging working group. It will cover at least the following sub-items: improving Rust's debuginfo quality ([michaelwoerister], [wesleywiser]), supporting split debuginfo ([davidtwco], from Huawei R&D UK), and better integration with trace-based debuggers like `rr` ([pnkfelix]). They are `@**Wesley Wiser**`, `@**pnkfelix**`, `@**mw**` and `@**davidtwco**`[on zulip].
194
+
[wesleywiser]and [pnkfelix] are spinning up a wg-debugging working group. It will cover at least the following sub-items: improving Rust's debuginfo quality ([michaelwoerister], [wesleywiser]), supporting split debuginfo ([davidtwco]), and better integration with trace-based debuggers like `rr` ([pnkfelix]).
196
195
197
196
The immediate goals for this initiative: establish the working group, determine priorities for the backlog of debugging issues, and find out what active users of debuggers miss most when they operate on Rust code.
198
197
199
198
### Faster Builds Initiatives (👩💻, 🛠️)
200
199
201
200
The Rust compiler's end-to-end latency is known to be a problem.
202
201
203
-
[lqd], sponsored by the Internet Security Research Group, is dedicating the majority of 2022 to working on this, partnering with Rust's compiler-performance working group as well as performance experts like [nnethercote] (from Futurewei Technologies). [lqd] has their own [living document](https://hackmd.io/3Dp68rTDSpWvRDfWF6lbMw?view) that lists areas under investigation, and [nnethercote] has a [roadmap under development](https://hackmd.io/YJQSj_nLSZWl2sbI84R1qA). They are `@**lqd**` and `@**nnethercote**`[on zulip].
202
+
[lqd]is dedicating the majority of 2022 to working on this, partnering with Rust's compiler-performance working group as well as performance experts like [nnethercote]. [lqd] has their own [living document](https://hackmd.io/3Dp68rTDSpWvRDfWF6lbMw?view) that lists areas under investigation, and [nnethercote] has a [roadmap under development](https://hackmd.io/YJQSj_nLSZWl2sbI84R1qA).
204
203
205
204
[ISRG]: https://www.abetterinternet.org/
206
205
@@ -217,9 +216,7 @@ Generic Associated Types, or [GATs](https://github.com/rust-lang/generic-associa
217
216
218
217
[`async fn` in traits](https://github.com/rust-lang/async-fundamentals-initiative/issues/5) is an ongoing effort (already mentioned above) owned by [tmandry]. This is one of the most frequently requested features for async rust: supplying first class support for traits like `trait Foo { async fn bar(&self); }`
219
218
220
-
The [safe transmute](https://github.com/rust-lang/lang-team/issues/21) project, led by [jswrenn] from Amazon Web Services, is expected to be feature-complete in summer 2022. It will enable a large class of types to be transmuted (i.e. zero-cost type conversion) without any risk of injecting undefined behavior.
221
-
222
-
You can reach these owners as `@**Jack Huey**`, `@**tmandry**`, and `@**Jack Wrenn**`[on zulip].
219
+
The [safe transmute](https://github.com/rust-lang/lang-team/issues/21) project, led by [jswrenn], is expected to be feature-complete in summer 2022. It will enable a large class of types to be transmuted (i.e. zero-cost type conversion) without any risk of injecting undefined behavior.
223
220
224
221
### Librarification Initiatives (🛠️)
225
222
@@ -233,7 +230,7 @@ These are initiatives dedicated to the "librarification" of the compiler: breaki
233
230
234
231
Chalk has been years in development, and has been experimentally integrated into rustc in the past. This year, [jackh726] and [nikomatsakis] own the task of improving the chalk integration, to drive it to the point where the team can consider migrating to chalk as the implementation of the trait system. This will unlock many features that up until now have been too difficult to implement in the old trait system implementation, and its declarative structure will provide a proper foundation for people to reason about the *correctness* of the trait system.
235
232
236
-
If you want to help out with this, reach out to [jackh726] and [nikomatsakis]. They are `@**Jack Huey**` and `@**nikomatsakis**`[on zulip].
233
+
If you want to help out with this, reach out to [jackh726] and [nikomatsakis].
237
234
238
235
## Aspirations
239
236
@@ -243,9 +240,9 @@ If you are interested in helping with any items here, please do reach out to the
243
240
244
241
### P-high Aspirations (🦀)
245
242
246
-
[pnkfelix] and [wesleywiser], as team leads, are deploying processes to help us get a handle on the "high priority, but *not critical*" issues that the compiler has accumulated. We will be gradually identifying owners for each who will move progress forward, and in general working to keep better track of the set overall.
243
+
[pnkfelix] and [wesleywiser], as Compiler Team leads, are deploying processes to help us get a handle on the "high priority, but *not critical*" issues that the compiler has accumulated. We will be gradually identifying owners for each who will move progress forward, and in general working to keep better track of the set overall.
247
244
248
-
If you would like to help with the task of reviewing or resolving such issues, reach out to [wesleywiser] and [apiraino], who are co-leads of WG-prioritization. They are `@**Wesley Wiser**` and `@**apiraino**`[on zulip].
245
+
If you would like to help with the task of reviewing or resolving such issues, reach out to [wesleywiser] and [apiraino], who are co-leads of WG-prioritization.
249
246
250
247
### Debugging Aspirations (👩💻)
251
248
@@ -255,38 +252,38 @@ We want to improve expression evaluation support: Today, most forms of method in
255
252
256
253
We want to revisit our debugger extension architecture for rendering Rust data structures, which is currently mostly independent sets of Python scripts.
257
254
258
-
If you want to help out here, please reach out to [pnkfelix] and [wesleywiser]. They are `@**pnkfelix**` and `@**Wesley Wiser**`[on zulip].
255
+
If you want to help out here, please reach out to [pnkfelix] and [wesleywiser].
259
256
260
257
### Faster Builds Aspirations (👩💻, 🛠️)
261
258
262
259
#### Parallel Compilation
263
260
264
261
Parallel Compilation is one avenue for improving compiler performance. It is also a very complex area, especially when it comes to the tradeoff of how much of a hit one is willing to take on single core builds in order to enable more parallel computation. We already parallelize our LLVM invocations, but the parallelization of the rest of the compiler remains in an experimental state. This is an area we think needs long-term collaborative effort with the compiler team. We do not expect to deliver a solution here this year.
265
262
266
-
If you want to discuss more with us about past attempts and ideas for the future, please reach out to [pnkfelix] and [wesleywiser]. They are `@**pnkfelix**` and `@**Wesley Wiser**`[on zulip].
263
+
If you want to discuss more with us about past attempts and ideas for the future, please reach out to [pnkfelix] and [wesleywiser].
267
264
268
265
#### Incremental Compilation Aspirations
269
266
270
267
Incremental compilation performance and stability are both ongoing concerns to the team. We *know* there is significant room to improve the effectiveness of incremental compilation, in terms of reducing the amount of redundant work done by successive `rustc` invocations.
271
268
272
269
In addition, there is a significant amount of work that could be done to improve our testing infrastructure for incremental compiliation which does not require deep knowledge of the compiler.
273
270
274
-
If you want to learn more, reach out to [cjgillot] and [Aaron Hill]. They are `@**cjgillot**` and `@**Aaron Hill**`[on zulip].
271
+
If you want to learn more, reach out to [cjgillot] and [Aaron Hill].
275
272
276
273
#### Inter-crate Sharing Aspirations
277
274
278
275
nnethercote has noted that there may be opportunities
279
276
to improve end-to-end compilation time for multi-crate builds by identifying redundant activity that can be shared between builds of distinct crates. (For example, the metadata from libstd is read and decoded on every single crate compile.)
280
277
281
-
If you are interested in exploring this idea further, reach out to [nnethercote] and [lqd]. They are `@**nnethercote**` and `@**lqd**`[on zulip].
278
+
If you are interested in exploring this idea further, reach out to [nnethercote] and [lqd].
282
279
283
280
### Expressiveness Aspirations (🦀, 👩💻)
284
281
285
282
const generics and const eval are making steady progress. There are a *lot* of feature flags, which implies there's a lot of knobs that could be turned on and off.
286
283
287
284
What we can probably use the most help with is in identifying what subset of the features we should be striving to stabilize in order to unlock specific use cases for Rust developers.
288
285
289
-
So, if you or your team is enthuastically awaiting const generics or const eval, reach out to [lcnr](supported via [sponsorship][sponsor-lcnr]) and [oli-obk]. They are `@**lcnr**` and `@**oli**`[on zulip].
286
+
So, if you or your team is enthuastically awaiting const generics or const eval, reach out to [lcnr] and [oli-obk].
290
287
291
288
[sponsor-lcnr]: https://lcnr.de/funding/
292
289
@@ -302,7 +299,7 @@ For example, [Kani] is a bit-precise model-checker for Rust under development at
Reach out to [xldenis], from the LMF at the University of Paris-Saclay (and co-lead of the Rust Formal Methods working group), and [pnkfelix] if you are interested in helping us here. They are `@**Xavier Denis**` and `@**pnkfelix**`[on zulip].
302
+
Reach out to [xldenis], from the LMF at the University of Paris-Saclay (and co-lead of the Rust Formal Methods working group), and [pnkfelix] if you are interested in helping us here.
306
303
307
304
### Compiler Team Operations Aspirations (🛠️)
308
305
@@ -312,7 +309,7 @@ One common task for compiler developers is to create a [minimal complete verifia
312
309
313
310
This is an area where you do not need any knowledge of the `rustc` source code at all. Anyone with an interest in programming language technology can get involved; e.g. one might consider adding IDE commands for certain code reducing transformations.
314
311
315
-
If you are interested in helping in this area, please reach out to [pnkfelix]. They are `@**pnkfelix**`[on zulip].
312
+
If you are interested in helping in this area, please reach out to [pnkfelix].
[mcve blog post]: https://blog.pnkfx.org/blog/2019/11/18/rust-bug-minimization-patterns/
@@ -323,7 +320,7 @@ If you are interested in helping in this area, please reach out to [pnkfelix]. T
323
320
324
321
The performance working group has many ideas for things to improve in these tools, but limited resources. This is an area where you don't need any compiler expertise to make a huge impact; for example, our Web Front-end could use work. And Data Scientists might have useful insights into our problems. Beyond just measuring the compiler's own performance, we're also interested in measuring the runtime performance of produced binaries.
325
322
326
-
Reach out to [rylev], from Microsoft, and [Mark-Simulacrum] (supported via [sponsorship](https://github.com/sponsors/Mark-Simulacrum)), performance working group lead, if you want to help. They are `@**rylev**` and `@**simulacrum**`[on zulip].
323
+
Reach out to [rylev]and [Mark-Simulacrum], performance working group lead, if you want to help.
327
324
328
325
[@rust-timer]: https://github.com/rust-timer
329
326
[perf]: https://perf.rust-lang.org/
@@ -332,13 +329,13 @@ Reach out to [rylev], from Microsoft, and [Mark-Simulacrum] (supported via [spon
332
329
333
330
#### Ease writing new backends
334
331
335
-
One source of tedium when defining a new Rust compiler backend is implementing the intrinsics that each backend must provide. But a small change to the intrinsic system: namely, allowing intrinsics to define a [fallback MIR implementation][], could ease that burden. Reach out to [scottmcm] if you are interested in helping out here. They are `@**scottmcm**`[on zulip].
332
+
One source of tedium when defining a new Rust compiler backend is implementing the intrinsics that each backend must provide. But a small change to the intrinsic system: namely, allowing intrinsics to define a [fallback MIR implementation][], could ease that burden. Reach out to [scottmcm] if you are interested in helping out here.
336
333
337
334
[fallback MIR implementation]: https://github.com/rust-lang/rust/issues/93145
338
335
339
336
#### Cranelift
340
337
341
-
The [Cranelift Code Generator][Cranelift] is getting a lot of attention from various parties. rustc has a [Cranelift backend][]. If you are interested in helping out with it, reach out to [bjorn3] (supported via [sponsorship][sponsor-bjorn3]). They are `@**bjorn3**`[on zulip].
338
+
The [Cranelift Code Generator][Cranelift] is getting a lot of attention from various parties. rustc has a [Cranelift backend][]. If you are interested in helping out with it, reach out to [bjorn3].
342
339
343
340
[sponsor-bjorn3]: https://liberapay.com/bjorn3
344
341
@@ -349,14 +346,14 @@ The [Cranelift Code Generator][Cranelift] is getting a lot of attention from var
349
346
350
347
In addition to the LLVM and Cranelift backends, there is also a new backend under development that uses `libgccjit` from GCC (which, as many have clarified, is usable for ahead-of-time as well as just-in-time compilation). This backend enables Rust to target more platforms that are not supported by LLVM.
351
348
352
-
If you are interested in helping out with this project, reach out to [antoyo](supported via [sponsorship](https://github.com/sponsors/antoyo)) and [bjorn3]. They are `@**antoyo**` and `@**bjorn3**`[on zulip].
349
+
If you are interested in helping out with this project, reach out to [antoyo] and [bjorn3].
353
350
354
351
355
352
### Diagnostics Aspirations (👩💻)
356
353
357
354
The Rust compiler has pretty good diagnotics. But the good news is, there's a [full employment theorem](https://en.wikipedia.org/wiki/Full_employment_theorem) for diagnostics engineers which is supported by the 1,500+ [open diagnostics issues](https://github.com/rust-lang/rust/issues?q=is%3Aopen+is%3Aissue+label%3AA-diagnostics) we have.
358
355
359
-
Diagnostics improvements are an *excellent* first step for learning about how to contribute to the Rust compiler. If you're interested in helping out but don't have any idea where to start, fixing diagnostic bugs is a great jumping off point, and you can reach out to [estebank], at Amazon Web Services, to find out more about how to help. They are `@**Esteban Küber**`[on zulip].
356
+
Diagnostics improvements are an *excellent* first step for learning about how to contribute to the Rust compiler. If you're interested in helping out but don't have any idea where to start, fixing diagnostic bugs is a great jumping off point, and you can reach out to [estebank]to find out more about how to help.
360
357
361
358
362
359
## Conclusion
@@ -396,3 +393,32 @@ This is not a problem! Many members of our community learned about compilers by
396
393
[Contributing to the Compiler]: https://www.youtube.com/watch?v=vCODCbUSA_w
397
394
398
395
In addition, there are areas in this project where people without compiler expertise can have impact. For example, as mentioned in the [Performance Dashboard](#Performance-Dashboard) section, some of our internal tools could use some web front-end work.
396
+
397
+
### How can I contact an item's owners or sponsor their work on Rust?
398
+
399
+
This table lists the item owners mentioned above, their [Zulip] username and if they are accepting sponsorships to help them work on Rust:
0 commit comments