-
Notifications
You must be signed in to change notification settings - Fork 12.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Tracking Issue for Parallel Rustc Front-end #113349
Comments
The |
It's been a long time since there was any update. Has all work been paused? |
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. |
…=cjgillot Delete the `cfg(not(parallel))` serial compiler Since it's inception a long time ago, the parallel compiler and its cfgs have been a maintenance burden. This was a necessary evil the allow iteration while not degrading performance because of synchronization overhead. But this time is over. Thanks to the amazing work by the parallel working group (and the dyn sync crimes), the parallel compiler has now been fast enough to be shipped by default in nightly for quite a while now. Stable and beta have still been on the serial compiler, because they can't use `-Zthreads` anyways. But this is quite suboptimal: - the maintenance burden still sucks - we're not testing the serial compiler in nightly Because of these reasons, it's time to end it. The serial compiler has served us well in the years since it was split from the parallel one, but it's over now. Let the knight slay one head of the two-headed dragon! rust-lang#113349 Note that the default is still 1 thread, as more than 1 thread is still fairly broken. cc `@onur-ozkan` to see if i did the bootstrap field removal correctly, `@SparrowLii` on the sync parts
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
inconfig.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
DynSend
andDynSync
auto trait for parallel compiler #107586Sharded
an enum and specialize it for the single thread case #114860Sharded
from query state #114894Sharded
and refactorLock
#115388Sharded
only for multiple threads #115162Optimize multi-threading performance
Enable parallel compilation by default in nightly rustc
Bugs or test failures of parallel rustc
tcx
in deadlock handler when parallel compilation #98570evaluate_trait_predicate_recursively
in rustdoc when proving Send/Sync #106930attempted to read from stolen value: rustc_middle::thir::Thir
:-Zthir-unsafeck=yes
#111520CurrentGcx
type to let the deadlock handler accessTyCtxt
#115220ParallelGuard
type to handle unwinding in parallel sections #115144deadlock detected
#111521no ImplicitCtxt stored in tls
#111522value must be in cache after waiting
#111528Resource temporarily unavailable
when 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.
The text was updated successfully, but these errors were encountered: