Guillaume Gomez
f1fa46d3ba
Rollup merge of #142868 - klensy:dc, r=oli-obk
...
remove few allow(dead_code)
Few from serial/parallel compiler leftovers and few from bootstrap.
2025-06-22 17:35:36 +02:00
klensy
2ddbe39bfb
remove allow(dead_code) leftovers from serial/parallel compiler
2025-06-22 13:05:09 +03:00
Celina G. Val
4aa62ea9e9
Use rustc_thread_pool instead of rustc-rayon-core
2025-06-11 12:26:42 -07:00
John Kåre Alsaker
d3ec14bbec
Use thread local dep graph encoding
2025-05-01 10:20:31 +02:00
John Kåre Alsaker
ef9403371f
Drop AST on a separate thread and prefetch hir_crate
2025-04-29 14:03:07 +02:00
bors
81d8c747fb
Auto merge of #139011 - Zoxc:no-rayon-iters, r=oli-obk
...
Remove the use of Rayon iterators
This removes the use of Rayon iterators and the use of the `rustc-rayon` crate. `rustc-rayon-core` is still used however.
In parallel loops, instead of a Rayon iterator a serial iterator are used to collect items into a `Vec` and we use a parallel loop over its elements using the new `par_slice` function which is built on `rustc-rayon-core`'s `join`.
This change makes it easier to bring `rustc-rayon-core` in-tree.
Tests using 7 threads:
<table><tr><td rowspan="2">Benchmark</td><td colspan="1"><b>Before</b></th><td colspan="2"><b>After</b></th><td colspan="1"><b>Before</b></th><td colspan="2"><b>After</b></th><td colspan="1"><b>Before</b></th><td colspan="2"><b>After</b></th></tr><tr><td align="right">Time</td><td align="right">Time</td><td align="right">%</th><td align="right">Physical Memory</td><td align="right">Physical Memory</td><td align="right">%</th><td align="right">Committed Memory</td><td align="right">Committed Memory</td><td align="right">%</th></tr><tr><td>🟣 <b>clap</b>:check</td><td align="right">0.4827s</td><td align="right">0.4828s</td><td align="right"> 0.02%</td><td align="right">201.23 MiB</td><td align="right">201.31 MiB</td><td align="right"> 0.04%</td><td align="right">279.03 MiB</td><td align="right">279.46 MiB</td><td align="right"> 0.15%</td></tr><tr><td>🟣 <b>hyper</b>:check</td><td align="right">0.1443s</td><td align="right">0.1401s</td><td align="right">💚 -2.91%</td><td align="right">126.42 MiB</td><td align="right">126.70 MiB</td><td align="right"> 0.22%</td><td align="right">199.79 MiB</td><td align="right">199.99 MiB</td><td align="right"> 0.10%</td></tr><tr><td>🟣 <b>regex</b>:check</td><td align="right">0.3252s</td><td align="right">0.3065s</td><td align="right">💚 -5.78%</td><td align="right">161.87 MiB</td><td align="right">161.78 MiB</td><td align="right"> -0.05%</td><td align="right">229.59 MiB</td><td align="right">230.23 MiB</td><td align="right"> 0.28%</td></tr><tr><td>🟣 <b>syn</b>:check</td><td align="right">0.5845s</td><td align="right">0.5876s</td><td align="right"> 0.53%</td><td align="right">197.01 MiB</td><td align="right">196.89 MiB</td><td align="right"> -0.06%</td><td align="right">267.62 MiB</td><td align="right">267.47 MiB</td><td align="right"> -0.06%</td></tr><tr><td>Total</td><td align="right">1.5367s</td><td align="right">1.5169s</td><td align="right">💚 -1.29%</td><td align="right">686.53 MiB</td><td align="right">686.68 MiB</td><td align="right"> 0.02%</td><td align="right">976.04 MiB</td><td align="right">977.14 MiB</td><td align="right"> 0.11%</td></tr><tr><td>Summary</td><td align="right">1.0000s</td><td align="right">0.9796s</td><td align="right">💚 -2.04%</td><td align="right">1 byte</td><td align="right">1.00 bytes</td><td align="right"> 0.04%</td><td align="right">1 byte</td><td align="right">1.00 bytes</td><td align="right"> 0.12%</td></tr></table>
<table><tr><td rowspan="2">Benchmark</td><td colspan="1"><b>Before</b></th><td colspan="2"><b>After</b></th><td colspan="1"><b>Before</b></th><td colspan="2"><b>After</b></th><td colspan="1"><b>Before</b></th><td colspan="2"><b>After</b></th></tr><tr><td align="right">Time</td><td align="right">Time</td><td align="right">%</th><td align="right">Physical Memory</td><td align="right">Physical Memory</td><td align="right">%</th><td align="right">Committed Memory</td><td align="right">Committed Memory</td><td align="right">%</th></tr><tr><td>🟠 <b>clap</b>:debug</td><td align="right">1.6371s</td><td align="right">1.6529s</td><td align="right"> 0.96%</td><td align="right">395.58 MiB</td><td align="right">396.21 MiB</td><td align="right"> 0.16%</td><td align="right">460.98 MiB</td><td align="right">461.52 MiB</td><td align="right"> 0.12%</td></tr><tr><td>🟠 <b>hyper</b>:debug</td><td align="right">0.3248s</td><td align="right">0.3210s</td><td align="right">💚 -1.16%</td><td align="right">155.16 MiB</td><td align="right">155.19 MiB</td><td align="right"> 0.02%</td><td align="right">219.21 MiB</td><td align="right">219.30 MiB</td><td align="right"> 0.04%</td></tr><tr><td>🟠 <b>regex</b>:debug</td><td align="right">1.0148s</td><td align="right">0.9929s</td><td align="right">💚 -2.16%</td><td align="right">297.96 MiB</td><td align="right">295.07 MiB</td><td align="right"> -0.97%</td><td align="right">354.53 MiB</td><td align="right">351.58 MiB</td><td align="right"> -0.83%</td></tr><tr><td>🟠 <b>syn</b>:debug</td><td align="right">1.3614s</td><td align="right">1.3717s</td><td align="right"> 0.76%</td><td align="right">319.10 MiB</td><td align="right">321.19 MiB</td><td align="right"> 0.65%</td><td align="right">378.90 MiB</td><td align="right">381.27 MiB</td><td align="right"> 0.62%</td></tr><tr><td>Total</td><td align="right">4.3381s</td><td align="right">4.3386s</td><td align="right"> 0.01%</td><td align="right">1.14 GiB</td><td align="right">1.14 GiB</td><td align="right"> -0.01%</td><td align="right">1.38 GiB</td><td align="right">1.38 GiB</td><td align="right"> 0.00%</td></tr><tr><td>Summary</td><td align="right">1.0000s</td><td align="right">0.9960s</td><td align="right"> -0.40%</td><td align="right">1 byte</td><td align="right">1.00 bytes</td><td align="right"> -0.03%</td><td align="right">1 byte</td><td align="right">1.00 bytes</td><td align="right"> -0.01%</td></tr></table>
2025-04-11 07:34:27 +00:00
John Kåre Alsaker
02f10d9bfe
Remove the use of Rayon iterators
2025-04-10 22:05:06 +02:00
Jane Losare-Lusby
6f55015835
fix "still mutable" ice while metrics are enabled
2025-04-08 15:00:37 -07:00
Nicholas Nethercote
55505ab1d3
Add unreachable_pub to RUSTC_LINT_FLAGS for compiler/ crates.
...
And fix the new errors in the handful of crates that didn't have a
`#![warn(unreachable_pub)]`.
2025-03-11 13:14:21 +11:00
许杰友 Jieyou Xu (Joe)
063ef18fdc
Revert "Use workspace lints for crates in compiler/ #138084 "
...
Revert <https://github.com/rust-lang/rust/pull/138084 > to buy time to
consider options that avoids breaking downstream usages of cargo on
distributed `rustc-src` artifacts, where such cargo invocations fail due
to inability to inherit `lints` from workspace root manifest's
`workspace.lints` (this is only valid for the source rust-lang/rust
workspace, but not really the distributed `rustc-src` artifacts).
This breakage was reported in
<https://github.com/rust-lang/rust/issues/138304 >.
This reverts commit 48caf81484 , reversing
changes made to c6662879b2 .
2025-03-10 18:12:47 +08:00
Nicholas Nethercote
9212e31c92
Add unreachable_pub to the default lints for compiler/ crates.
...
And fix the new errors in the handful of crates that didn't have a
`#![warn(unreachable_pub)]`.
2025-03-08 08:41:43 +11:00
Askar Safin
c6c4ea40dc
Revert "compiler/rustc_data_structures/src/sync/worker_local.rs: delete "unsafe impl Sync""
...
This reverts commit 02406903b0 .
2025-03-04 15:32:55 +03:00
Michael Goulet
12e3911d81
Greatly simplify lifetime captures in edition 2024
2025-02-22 22:24:52 +00:00
Askar Safin
02406903b0
compiler/rustc_data_structures/src/sync/worker_local.rs: delete "unsafe impl Sync"
2025-02-11 10:21:17 +03:00
Askar Safin
4a2c7f48b5
compiler/rustc_data_structures/src/sync.rs: remove atomics, but not AtomicU64!
2025-02-11 08:57:36 +03:00
Noratrieb
505b8e1332
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!
2024-11-12 13:38:58 +00:00
Michael Goulet
c682aa162b
Reformat using the new identifier sorting from rustfmt
2024-09-22 19:11:29 -04:00
Alexander Cyon
ac69544a17
chore: Fix typos in 'compiler' (batch 1)
2024-09-02 07:42:38 +02:00
Nicholas Nethercote
84ac80f192
Reformat use declarations.
...
The previous commit updated `rustfmt.toml` appropriately. This commit is
the outcome of running `x fmt --all` with the new formatting options.
2024-07-29 08:26:52 +10:00
r0cky
dabd05bbab
Apply x clippy --fix and x fmt
2024-05-30 09:51:27 +08:00
Mark Rousskov
283db5abfc
Workaround for rustdoc bug in new beta
...
Filed #122758 to track a proper fix, but this seems to solve the
problem in the meantime and is probably OK in terms of impact on
(internal) doc quality.
2024-03-20 08:49:13 -04:00
Matthias Krüger
706fe0b7d8
Rollup merge of #120976 - matthiaskrgr:constify_TL_statics, r=lcnr
...
constify a couple thread_local statics
2024-03-04 22:16:30 +01:00
Markus Reiter
746a58d435
Use generic NonZero internally.
2024-02-15 08:09:42 +01:00
Matthias Krüger
d0873c7a11
constify a couple thread_local statics
2024-02-12 16:25:39 +01:00
Mark Rousskov
ee9223ff97
Enforce NonZeroUsize on thread count
...
This allows avoiding some if != 0 checks when allocating worker-local
datasets.
2023-11-23 20:10:44 -05:00
cui fliter
a44a4edc0e
Fix some typos
...
Signed-off-by: cui fliter <imcusg@gmail.com >
2023-11-14 23:06:50 +08:00
bors
d8dbf7ca0e
Auto merge of #117557 - Zoxc:panic-prio, r=petrochenkov
...
Make `FatalErrorMarker` lower priority than other panics
This makes `FatalErrorMarker` lower priority than other panics in a parallel sections. If any other panics occur, they will be unwound instead of `FatalErrorMarker`. This ensures `rustc` will exit with the correct error code on ICEs.
This fixes https://github.com/rust-lang/rust/issues/116659 .
2023-11-09 00:39:02 +00:00
John Kåre Alsaker
ff1858e2aa
Make FatalErrorMarker lower priority than other panics
2023-11-03 19:46:00 +01:00
Josh Stone
3984914aff
Use filter_map in try_par_for_each_in
...
This simplifies the expression, especially for the rayon part, and also
lets us drop the `E: Copy` constraint.
2023-11-03 09:17:16 -07:00
Oli Scherer
fd9ef69adf
Avoid a track_errors by bubbling up most errors from check_well_formed
2023-10-20 08:46:27 +00:00
John Kåre Alsaker
2c507cae36
Rename cold_path to outline
2023-09-25 22:54:07 +02:00
Matthias Krüger
f3cc59b741
Rollup merge of #115548 - Zoxc:parallel-extract, r=wesleywiser
...
Extract parallel operations in `rustc_data_structures::sync` into a new `parallel` submodule
This extracts parallel operations in `rustc_data_structures::sync` into a new `parallel` submodule. This cuts down on the size of the large `cfg_if!` in `sync` and makes it easier to compare between serial and parallel variants.
2023-09-11 21:16:20 +02:00
bors
9b72cc9abf
Auto merge of #115388 - Zoxc:sharded-lock, r=SparrowLii
...
Add optimized lock methods for `Sharded` and refactor `Lock`
This adds methods to `Sharded` which pick a shard and also locks it. These branch on parallelism just once instead of twice, improving performance.
Benchmark for `cfg(parallel_compiler)` and 1 thread:
<table><tr><td rowspan="2">Benchmark</td><td colspan="1"><b>Before</b></th><td colspan="2"><b>After</b></th></tr><tr><td align="right">Time</td><td align="right">Time</td><td align="right">%</th></tr><tr><td>🟣 <b>clap</b>:check</td><td align="right">1.6461s</td><td align="right">1.6345s</td><td align="right"> -0.70%</td></tr><tr><td>🟣 <b>hyper</b>:check</td><td align="right">0.2414s</td><td align="right">0.2394s</td><td align="right"> -0.83%</td></tr><tr><td>🟣 <b>regex</b>:check</td><td align="right">0.9205s</td><td align="right">0.9143s</td><td align="right"> -0.67%</td></tr><tr><td>🟣 <b>syn</b>:check</td><td align="right">1.4981s</td><td align="right">1.4869s</td><td align="right"> -0.75%</td></tr><tr><td>🟣 <b>syntex_syntax</b>:check</td><td align="right">5.7629s</td><td align="right">5.7256s</td><td align="right"> -0.65%</td></tr><tr><td>Total</td><td align="right">10.0690s</td><td align="right">10.0008s</td><td align="right"> -0.68%</td></tr><tr><td>Summary</td><td align="right">1.0000s</td><td align="right">0.9928s</td><td align="right"> -0.72%</td></tr></table>
cc `@SparrowLii`
2023-09-11 01:43:29 +00:00
John Kåre Alsaker
1d8fdc0332
Use FreezeLock for CStore
2023-09-09 16:02:11 +02:00
John Kåre Alsaker
c83eba9251
Add Freeze::clone
2023-09-08 14:14:57 +02:00
John Kåre Alsaker
9690142bef
Remove the LockMode enum and dispatch
2023-09-08 10:15:12 +02:00
John Kåre Alsaker
61cc00d238
Refactor Lock implementation
2023-09-08 08:48:44 +02:00
John Kåre Alsaker
8fc160b742
Add optimized lock methods for Sharded
2023-09-08 08:48:44 +02:00
John Kåre Alsaker
f49382c050
Use Freeze for SourceFile.lines
2023-09-07 13:05:05 +02:00
John Kåre Alsaker
c5996b80be
Use Freeze for SourceFile.external_src
2023-09-07 13:04:23 +02:00
John Kåre Alsaker
35e8b67fc2
Use a reference to the lock in the guards
2023-09-06 11:44:06 +02:00
John Kåre Alsaker
fe614712dd
Extract parallel operations in rustc_data_structures::sync into a new parallel submodule
2023-09-06 09:47:34 +02:00
John Kåre Alsaker
a3ad045ea4
Rename Freeze to FreezeLock
2023-09-02 08:14:06 +02:00
John Kåre Alsaker
50f0d666d3
Add some comments
2023-09-02 08:13:07 +02:00
John Kåre Alsaker
25884ec9be
Use RwLock for Freeze
2023-09-02 08:13:07 +02:00
John Kåre Alsaker
0c96a9260b
Add Freeze type and use it to store Definitions
2023-09-02 08:13:03 +02:00
John Kåre Alsaker
5739349e96
Use conditional synchronization for Lock
2023-08-30 06:10:02 +02:00
John Kåre Alsaker
e41240e45b
Fix races conditions with SyntaxContext decoding
2023-08-22 02:36:41 +02:00
Matthias Krüger
b38718090e
Rollup merge of #114283 - oli-obk:parkin_lot_rwlock, r=SparrowLii
...
Use parking lot's rwlock even without parallel-rustc
Considering that this doesn't affect perf, I think we should use the simplest solution.
2023-08-01 17:39:10 +02:00
Oli Scherer
3eb5733ed4
Always use parking_lot's RwLock, even without parallel compiler
2023-08-01 06:55:12 +00:00