rust-lang / rust

Empowering everyone to build reliable and efficient software.
https://www.rust-lang.org
Other
98.26k stars 12.71k forks source link

Tracking Issue for Parallel Rustc Front-end #113349

Open SparrowLii opened 1 year ago

SparrowLii commented 1 year ago

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), 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), which will make parallel front-end the default option in rustc. Here's the (draft) landing strategy for this feature.

Below is the task list.

Solve the problem of single-thread performance reduction

Documentation

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.

the8472 commented 1 year ago

The core crate might be a good benchmark for this. You can immediately build it after rustc and it spends about 10% of its walltime in tokenization/parsing/macro-expansion and ~80% in the query parts. The fraction of codegen is small in comparison.

tigerfsh commented 10 hours ago

It's been a long time since there was any update. Has all work been paused?

SparrowLii commented 9 hours ago

Them main work now is to fix deadlock and ice bugs in the issue list

I recently submitted a PR for an enhanced compiler test to reproduce the issue and successfully located three deadlock bugs. Unfortunately, it takes timeto figure out the cause of these bugs, which is what is making the updates slow.

I expect it will take another 1 to 2 months to fix the remaining bugs, after which the stabilization will begin.