Commit graph

298901 commits

Author SHA1 Message Date
bors
7f695232a8 Auto merge of #140168 - joshlf:no-nfas, r=jswrenn
transmute: Mark edges by byte sets, not byte values

This leads to drastic performance improvements. For example, on the author's 2024 MacBook Pro, the time to convert the `Tree` representation of a `u64` to its equivalent DFA representation drops from ~8.5ms to ~1us, a reduction of ~8,500x. See `bench_dfa_from_tree`.

Similarly, the time to execute a transmutability query from `u64` to `u64` drops from ~35us to ~1.7us, a reduction of ~20x. See `bench_transmute`.

r? `@jswrenn`
2025-04-24 05:36:38 +00:00
Chayim Refael Friedman
06afa11ec5 Properly handle lifetimes when checking generic arguments len
And also, prepare for correct lowering of lifetime. We still don't handle most lifetimes correctly, but a bit more of the foundation to lifetime elision is now implemented.
2025-04-24 08:35:20 +03:00
xizheyin
d054690049
Unify the format of rustc cli flags
Signed-off-by: xizheyin <xizheyin@smail.nju.edu.cn>
2025-04-24 12:54:40 +08:00
Hegui Dai
1fd928ef89 fix doc error 2025-04-24 12:23:53 +08:00
The rustc-dev-guide Cronjob Bot
1b315ad92d Merge from rustc 2025-04-24 04:02:56 +00:00
The rustc-dev-guide Cronjob Bot
745500fbc5 Preparing for merge from rustc 2025-04-24 04:02:49 +00:00
Hegui Dai
3a14991e77 fix example 2025-04-24 10:31:53 +08:00
Hegui Dai
d0ac97d649 add examples using .as_ref() for is_some_and and is_none_or 2025-04-24 10:22:49 +08:00
Hegui Dai
c0446d3cbb keep the original text for is_some and is_none 2025-04-24 10:12:14 +08:00
Hegui Dai
56d5efc68c add examples using .as_ref() for is_err_and and is_ok_and 2025-04-24 10:10:30 +08:00
Hegui Dai
f86cd705cb keep original text for is_ok and is_err 2025-04-24 09:56:42 +08:00
Nicholas Nethercote
92799b6f89 Separate Analysis and Results.
`Results` contains and `Analysis` and an `EntryStates`. The unfortunate
thing about this is that the analysis needs to be mutable everywhere
(`&mut Analysis`) which forces the `Results` to be mutable everywhere,
even though `EntryStates` is immutable everywhere.

To fix this, this commit renames `Results` as `AnalysisAndResults`,
renames `EntryStates` as `Results`, and separates the analysis and
results as much as possible. (`AnalysisAndResults` doesn't get much use,
it's mostly there to facilitate method chaining of
`iterate_to_fixpoint`.)

`Results` is immutable everywhere, which:
- is a bit clearer on how the data is used,
- avoids an unnecessary clone of entry states in
  `locals_live_across_suspend_points`, and
- moves the results outside the `RefCell` in Formatter.

The commit also reformulates `ResultsHandle` as the generic `CowMut`,
which is simpler than `ResultsHandle` because it doesn't need the
`'tcx` lifetime and the trait bounds. It also which sits nicely
alongside the new use of `Cow` in `ResultsCursor`.
2025-04-24 11:36:07 +10:00
Nicholas Nethercote
4ff55588d3 Pass Analysis to visit_* instead of Results.
Every `Results` contains an `Analysis`, but these methods only need the
`Analysis`. No point passing them more data than they need.
2025-04-24 11:34:06 +10:00
Zalathar
d0a458040c Revert compiletest new-executor, to re-land without download-rustc
Revert <https://github.com/rust-lang/rust/pull/139998> because the original
merge triggered download-rustc, which messes with test metrics and prevents us
from properly comparing them before/after the change.

The plan is to re-land this PR as-is, combined with a trivial compiler change
to avoid download-rustc and get proper test metrics for comparison.

This reverts commit be181dd75c, reversing
changes made to 645d0ad2a4.
2025-04-24 11:26:57 +10:00
Nicholas Nethercote
af8047789d Refactor StableMir to avoid some clones.
Pass `args` to `run` instead of storing it in a field. This avoids the
need to clone it within `run`.

Also, change `args` from `Vec<String>` to `&[String]`, avoiding the need
for some vecs and clones.
2025-04-24 11:12:34 +10:00
Nicholas Nethercote
055a27da2a Remove some unnecessary clones.
I found these by grepping for `&[a-z_\.]*\.clone()`, i.e. expressions
like `&a.b.clone()`, which are sometimes unnecessary clones, and also
looking at clones nearby to cases like that.
2025-04-24 11:12:34 +10:00
León Orell Valerian Liehr
16da97be2f
Revert overzealous parse recovery for single colons 2025-04-24 02:57:10 +02:00
bors
d9dac3cb38 Auto merge of #139309 - RalfJung:abi_unsupported_vector_types, r=fee1-dead,traviscross
make abi_unsupported_vector_types a hard error

Fixes https://github.com/rust-lang/rust/issues/116558 by completing the transition; see that issue for context. The lint was introduced with Rust 1.84 and this has been shown in cargo's future breakage reports since Rust 1.85, released 6 weeks ago, and so far we got 0 complaints by users. There's not even a backlink on the tracking issue. We did a [crater run](https://github.com/rust-lang/rust/pull/127731#issuecomment-2286736295) when the lint was originally added and found no breakage. So I don't think we need another crater run now, but I can do one if the team prefers that.

https://github.com/rust-lang/rust/issues/131800 is done, so for most current targets (in particular, all tier 1 and tier 2 targets) we have the information to implement this check (modulo the targets where we don't properly support SIMD vectors yet, see the sub-issues of https://github.com/rust-lang/rust/issues/116558). If a new target gets added in the future, it will default to reject all SIMD vector types until proper information is added, which is the default we want.

This will need approval by for `@rust-lang/lang.` Cc `@workingjubilee` `@veluca93`

try-job: test-various
try-job: armhf-gnu
try-job: dist-i586-gnu-i586-i686-musl
2025-04-24 00:44:40 +00:00
bors
c02a4f0852 Auto merge of #139309 - RalfJung:abi_unsupported_vector_types, r=fee1-dead,traviscross
make abi_unsupported_vector_types a hard error

Fixes https://github.com/rust-lang/rust/issues/116558 by completing the transition; see that issue for context. The lint was introduced with Rust 1.84 and this has been shown in cargo's future breakage reports since Rust 1.85, released 6 weeks ago, and so far we got 0 complaints by users. There's not even a backlink on the tracking issue. We did a [crater run](https://github.com/rust-lang/rust/pull/127731#issuecomment-2286736295) when the lint was originally added and found no breakage. So I don't think we need another crater run now, but I can do one if the team prefers that.

https://github.com/rust-lang/rust/issues/131800 is done, so for most current targets (in particular, all tier 1 and tier 2 targets) we have the information to implement this check (modulo the targets where we don't properly support SIMD vectors yet, see the sub-issues of https://github.com/rust-lang/rust/issues/116558). If a new target gets added in the future, it will default to reject all SIMD vector types until proper information is added, which is the default we want.

This will need approval by for `@rust-lang/lang.` Cc `@workingjubilee` `@veluca93`

try-job: test-various
try-job: armhf-gnu
try-job: dist-i586-gnu-i586-i686-musl
2025-04-24 00:44:40 +00:00
Kivooeo
c9deaf6aaa fix for issue 135412 2025-04-24 03:20:19 +05:00
Alex Crichton
5b5f55bc44 Update wasm-component-ld to 0.5.13
This commit updates the vendored `wasm-component-ld` binary to 0.5.13
which includes some various bug fixes and new feature updates for
upcoming component model features coming down the pike. Not expected to
break any existing workflows, just a normal update.
2025-04-23 14:37:17 -07:00
bors
fa58ce343a Auto merge of #138845 - compiler-errors:stall-generators, r=lcnr
Properly stall coroutine witnesses in new solver

TODO: write description

r? lcnr
2025-04-23 21:35:15 +00:00
Jake Goulding
2a5c349f42 Extend HIR to track the source and syntax of a lifetime
An upcoming lint will want to be able to know if a lifetime is
hidden (e.g. `&u8`, `ContainsLifetime`) or anonymous: (e.g. `&'_ u8`,
`ContainsLifetime<'_>`). It will also want to know if the lifetime is
related to a reference (`&u8`) or a path (`ContainsLifetime`).
2025-04-23 16:37:39 -04:00
Guillaume Gomez
81438c0b05 Add regression ui test for #140162 and for #139651 2025-04-23 22:09:35 +02:00
Guillaume Gomez
3536324565 Fix detection of main function if there are expressions around it 2025-04-23 22:09:11 +02:00
Timo
34f81f96e9
style: pull one more if into the let-chain (#14669)
`cargo dev fmt` seems to not work for some reason (possibly because of
all the comments in the let-chain), so I formatted it manually -- I hope
it's right

changelog: none
2025-04-23 19:59:20 +00:00
Manish Goregaokar
dc695f53cd
Reword needless_question_mark diagnostics and docs (#14682)
Fixes https://github.com/rust-lang/rust-clippy/issues/14675 by making it
clearer that the constructor needs to be removed as well
Also fixes https://github.com/rust-lang/rust-clippy/issues/8392

changelog: none
2025-04-23 19:57:48 +00:00
Guillaume Gomez
f7d8558003 Add rustdoc-gui test to ensure sidebars share the same image 2025-04-23 21:34:50 +02:00
Tsukasa OI
7db430fb80 std_detect: RISC-V platform guide documentation
Since there's no architectural feature detection on RISC-V (unlike `CPUID`
on x86 architectures and some system registers on Arm/AArch64), runtime
feature detection entirely depends on the platform-specific facility.

As a result, availability of each feature heavily depends on the platform
and its version.

To help users make a decision for feature checking on a RISC-V system, this
commit adds a platform guide with minimum supported platform versions.

Note:

It intentionally omits the description of the reverse implication related
to *extension groups* (such like implication of `B` *from* its members:
`Zba`, `Zbb` and `Zbs` extensions) because it currently does not synchronize
well with the `-Ctarget-feature` compiler option (due to missing reverse
implication checks using `cfg` and due to constraints of the current Rust's
feature handling).

Instead, it only describes forward implications (like `D` implying `F`) due
to the fact that it relatively synchronizes well between Rust and `stdarch`
for this kind of feature handling (not fully synchronized though).

Still, an extension group is considered "supported" once the
platform/version supports runtime detection of all members in it.
2025-04-23 19:32:43 +00:00
Trevor Gross
975617e8d4 Warn on unsafe_op_in_unsafe_fn by default
Edition 2024 requires that we avoid this. There is a lot of code that
will need to be adjusted, so start the process here with a warning that
will show up in CI.
2025-04-23 15:27:05 -04:00
Alex Macleod
7c5312bdab Reword needless_question_mark diagnostics and docs 2025-04-23 19:07:27 +00:00
Trevor Gross
99202af075 libm-macros: Allow a way to bulk match f16 and f128 functions
These are never available in musl, so introduce easier ways to skip them
rather than needing to exclude f16/f128 functions in three different
places.
2025-04-23 15:04:51 -04:00
Guillaume Gomez
934e86b24f Unify sidebar buttons to use the same image 2025-04-23 20:53:27 +02:00
Guillaume Gomez
821925e8a4 Update browser-ui-test version to 0.20.6 2025-04-23 20:51:07 +02:00
Joshua Liebow-Feeser
4326a44e6f transmutability: Mark edges by ranges, not values
In the `Tree` and `Dfa` representations of a type's layout, store byte
ranges rather than needing to separately store each byte value. This
permits us to, for example, represent a `u8` using a single 0..=255 edge
in the DFA rather than using 256 separate edges.

This leads to drastic performance improvements. For example, on the
author's 2024 MacBook Pro, the time to convert the `Tree` representation
of a `u64` to its equivalent DFA representation drops from ~8.5ms to
~1us, a reduction of ~8,500x. See `bench_dfa_from_tree`.

Similarly, the time to execute a transmutability query from `u64` to
`u64` drops from ~35us to ~1.7us, a reduction of ~20x. See
`bench_transmute`.
2025-04-23 11:45:00 -07:00
Michael Goulet
1162f42b86 Remove hack 2025-04-23 18:36:37 +00:00
bors
df35ff6c35 Auto merge of #139983 - flip1995:clippy-subtree-update, r=Manishearth
Clippy subtree update

r? `@Manishearth`

Cargo.lock update due to the Clippy version bump and because Clippy moved from rinja (unmaintained) to askama.

Last sync was skipped due to the askama issue and me not getting to fixing this in time.
2025-04-23 18:23:51 +00:00
Michael Goulet
257f68777f Use the new solver in the impossible_predicates 2025-04-23 18:04:25 +00:00
王宇逸
d2120e653e Work around cygwin issue on timeout 2025-04-24 01:25:46 +08:00
bors
553600e0f5 Auto merge of #140180 - ChrisDenton:rollup-5pvs08u, r=ChrisDenton
Rollup of 7 pull requests

Successful merges:

 - #140142 (Some more graphviz tweaks)
 - #140146 (Update `compiler_builtins` to 0.1.156)
 - #140147 (Clean: rename `open_braces` to `open_delimiters` in lexer and move `make_unclosed_delims_error` into `diagnostics.rs`.)
 - #140160 (Use `is_lang_item` and `as_lang_item` instead of handrolling their logic)
 - #140163 (Validate extension in `PathBuf::add_extension`)
 - #140173 (Ping Mara when touching format_args!() internals.)
 - #140175 (`rc""` more clear error message)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-04-23 15:12:33 +00:00
Michael Goulet
f943f73db4 More 2025-04-23 15:09:25 +00:00
Lukas Wirth
ebcb693fc8
Merge pull request #19672 from Veykril/push-tqooypklusty
fix: Fix incorrect diagnostic for lifetime parameter count mismatch
2025-04-23 14:47:40 +00:00
est31
7493e1cdf6 Make #![feature(let_chains)] bootstrap conditional in compiler/ 2025-04-23 16:40:30 +02:00
Lukas Wirth
084bd9fd1f fix: Fix incorrect diagnostic for lifetime parameter count mismatch 2025-04-23 16:36:13 +02:00
Jiahao XU
780f95dd18
Impl new API std::os::unix::fs::mkfifo under feature unix_fifo
Tracking issue #139324

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
2025-04-23 23:02:52 +10:00
bors
be181dd75c Auto merge of #139998 - Zalathar:new-executor, r=onur-ozkan
compiletest: Use the new non-libtest executor by default

The new executor was implemented in #139660, but required a manual opt-in. This PR activates the new executor by default, but leaves the old libtest-based executor in place (temporarily) to make reverting easier if something unexpectedly goes horribly wrong.

Currently the new executor can be explicitly disabled by passing the `-N` flag to compiletest (e.g. `./x test ui -- -N`), but eventually that flag will be removed, alongside the removal of the libtest dependency. The flag is mostly there to make manual comparative testing easier if something does go wrong.

As before, there *should* be no user-visible difference between the old executor and the new executor.

---

I didn't get much of a response to my [call for testing thread on Zulip](https://rust-lang.zulipchat.com/#narrow/channel/122651-general/topic/Call.20for.20testing.3A.20New.20test.20executor.20for.20compiletest/with/512452105), and the reports I did get (along with my own usage) indicate that there aren't any problems. So I think it's reasonable to move forward with making this the default, in the hopes of being able to remove the libtest dependency relatively soon.

When the libtest dependency is removed, it should be reasonable to build compiletest against pre-built stage0 std by default, even after the stage0 redesign. (Though we should probably have at least one CI job using in-tree stage1 std instead, to guard against the possibility of the `#![feature(internal_output_capture)]` API actually changing.)
2025-04-23 12:12:31 +00:00
Ralf Jung
157caeed3e fix f*::MAX_EXP and MIN_EXP docs 2025-04-23 14:04:18 +02:00
Ralf Jung
216fac3c23 wasm, arm, x86-without-SSE need simd to be explicitly enabled 2025-04-23 14:01:08 +02:00
Artur Roos
36ae6575fd Document breaking out of a named code block 2025-04-23 14:31:34 +03:00
MarcoIeni
18c3370e5d
CI: use aws codebuild for job dist-arm-linux 2025-04-23 13:31:24 +02:00