-
-
Notifications
You must be signed in to change notification settings - Fork 14.8k
Tracking Issue for Parallel Rustc Front-end #113349
Copy link
Copy link
Open
Labels
A-parallel-compilerArea: parallel compilerArea: parallel compilerC-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFCCategory: An issue tracking the progress of sth. like the implementation of an RFC
Metadata
Metadata
Assignees
Labels
A-parallel-compilerArea: parallel compilerArea: parallel compilerC-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFCCategory: An issue tracking the progress of sth. like the implementation of an RFC
Type
Fields
Give feedbackNo fields configured for issues without a type.
Projects
Status
Todo
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=trueinconfig.tomlwhen 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
DynSendandDynSyncauto trait for parallel compiler #107586Shardedan enum and specialize it for the single thread case #114860Shardedfrom query state #114894Shardedand refactorLock#115388Shardedonly for multiple threads #115162Optimize multi-threading performance
Enable parallel compilation by default in nightly rustc
Bugs or test failures of parallel rustc
tcxin deadlock handler when parallel compilation #98570evaluate_trait_predicate_recursivelyin rustdoc when proving Send/Sync #106930attempted to read from stolen value: rustc_middle::thir::Thir:-Zthir-unsafeck=yes#111520CurrentGcxtype to let the deadlock handler accessTyCtxt#115220ParallelGuardtype to handle unwinding in parallel sections #115144deadlock detected#111521no ImplicitCtxt stored in tls#111522value must be in cache after waiting#111528Resource temporarily unavailablewhen limiting max memory #115021assertion failed: found_cycle#115223Testing
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.