Repository: rust
Issue: Tracking Issue for Parallel Rustc Front-end
Labels: C-tracking-issue,WG-compiler-parallel

This is a tracking issue for **Parallel Rustc Front-end**

This feature will improve compilation speed by parallelizing the process of rustc front end (before the codegen which has been parallelized).

The feature was previously called parallel queries (and its tracking issue can be found [here](https://github.com/rust-lang/rust/issues/48685)), developed by the former parallel rustc working group. Thanks to their work, developers can currently use parallel rustc by setting `parallel_compiler=true` in `config.toml` when building the compiler.

The parallel rustc working group has rebooted (here's the associated [MCP](https://github.com/rust-lang/compiler-team/issues/567)), which will make parallel front-end the default option in rustc. Here's the (draft) [landing strategy](https://hackmd.io/@rust-compiler-team/SJevx0O-h) for this feature.

Below is the task list.

### Solve the problem of single-thread performance reduction
  * [x] https://github.com/rust-lang/rust/pull/107586
  * [x] https://github.com/rust-lang/rust/pull/111755
  * [x] https://github.com/rust-lang/rust/pull/114860
  * [x] https://github.com/rust-lang/rust/pull/111713
  * [x] https://github.com/rust-lang/rust/pull/114894
  * [x] https://github.com/rust-lang/rust/pull/115388
  * [x] https://github.com/rust-lang/rust/pull/115162
### Optimize multi-threading performance
  - [x] https://github.com/rust-lang/rust/pull/113519
  - [ ] https://github.com/rust-lang/rust/pull/115003
### Enable parallel compilation by default in nightly rustc
  - [x] https://github.com/rust-lang/rust/pull/115235
  - [x] https://github.com/rust-lang/rust/pull/117435
### Bugs or test failures of parallel rustc
  - [x] https://github.com/rust-lang/rust/pull/98570
  - [x] https://github.com/rust-lang/rust/pull/108845
  - [x] Deadlock when printing query stack -- fixed by https://github.com/rust-lang/rust/pull/112708
  - [x] https://github.com/rust-lang/rust/issues/106930
  - [x] https://github.com/rust-lang/rust/issues/111520
  - [x] https://github.com/rust-lang/rust/pull/115198
  - [ ] https://github.com/rust-lang/rust/pull/115220
  - [x] https://github.com/rust-lang/rust/pull/115144
  - [x] https://github.com/rust-lang/rust/issues/111521
  - [x] https://github.com/rust-lang/rust/issues/111522
  - [x] https://github.com/rust-lang/rust/issues/111528
  - [ ] https://github.com/rust-lang/rust/issues/75760
  - [ ] https://github.com/rust-lang/rust/issues/115021
  - [ ] https://github.com/rust-lang/rust/issues/115223
  - other issues [here](https://github.com/rust-lang/rust/issues?q=is%3Aissue+is%3Aopen+label%3AWG-compiler-parallel)
### Testing
- [ ] #118698
- [ ]  Enhance rustc-perf options to support multi-threading

### Documentation
  - [ ] Adjust documentation ([doc-guide])

[stabilization-guide]: https://rustc-dev-guide.rust-lang.org/stabilization_guide.html#stabilization-pr
[doc-guide]: https://rustc-dev-guide.rust-lang.org/stabilization_guide.html#documentation-prs

### About tracking issues
Tracking issues are used to record the overall progress of implementation.
They are also used as hubs connecting to other relevant issues, e.g., bugs or open design questions.
A tracking issue is however not meant for large scale discussion, questions, or bug reports about a feature.
Instead, open a dedicated issue for the specific matter and add the relevant feature gate label.