Commit graph

298901 commits

Author SHA1 Message Date
Jubilee
f542909d1c
Rollup merge of #138780 - trifectatechfoundation:loop_match_attr, r=oli-obk,traviscross
Add `#[loop_match]` for improved DFA codegen

tracking issue: https://github.com/rust-lang/rust/issues/132306
project goal: https://github.com/rust-lang/rust-project-goals/issues/258

This PR adds the `#[loop_match]` attribute, which aims to improve code generation for state machines. For some (very exciting) benchmarks, see https://github.com/rust-lang/rust-project-goals/issues/258#issuecomment-2732965199

Currently, a very restricted syntax pattern is accepted. We'd like to get feedback and merge this now before we go too far in a direction that others have concerns with.

## current state

We accept code that looks like this

```rust
#[loop_match]
loop {
    state = 'blk: {
        match state {
            State::A => {
                #[const_continue]
                break 'blk State::B
            }
            State::B => { /* ... */ }
            /* ... */
        }
    }
}
```

- a loop should have the same semantics with and without `#[loop_match]`: normal `continue` and `break` continue to work
- `#[const_continue]` is only allowed in loops annotated with `#[loop_match]`
- the loop body needs to have this particular shape (a single assignment to the match scrutinee, with the body a labelled block containing just a match)

## future work

- perform const evaluation on the `break` value
- support more state/scrutinee types

## maybe future work

- allow `continue 'label value` syntax, which `#[const_continue]` could then use.
- allow the match to be on an arbitrary expression (e.g. `State::Initial`)
- attempt to also optimize `break`/`continue` expressions that are not marked with `#[const_continue]`

r? ``@traviscross``
2025-06-24 19:45:30 -07:00
Jubilee
4f477427b8
Rollup merge of #135731 - frank-king:feature/pin-borrow, r=eholk,traviscross
Implement parsing of pinned borrows

This PR implements part of #130494.

EDIT: It introduces `&pin mut $place` and `&pin const $place` as sugars for `std::pin::pin!($place)` and its shared reference equivalent, except that `$place` will not be moved when borrowing. The borrow check will be in charge of enforcing places cannot be moved or mutably borrowed since being pinned till dropped.

### Implementation steps:
- [x] parse the `&pin mut $place` and `&pin const $place` syntaxes
- [ ] borrowck of `&pin mut|const`
- [ ] support autoref of `&pin mut|const` when needed
2025-06-24 19:45:29 -07:00
Karan Janthe
7b1c89f2b5 added PrintTAFn flag for autodiff
Signed-off-by: Karan Janthe <karanjanthe@gmail.com>
2025-06-25 02:11:29 +00:00
Karan Janthe
066ae4cf98 submodule update
Signed-off-by: Karan Janthe <karanjanthe@gmail.com>
2025-06-25 02:11:29 +00:00
bors
2c2bb995af Auto merge of #140999 - hkBst:update-escaper, r=nnethercote
update to literal-escaper 0.0.4 for better API without `unreachable` and faster string parsing

This is the replacement for just the part of https://github.com/rust-lang/rust/pull/138163 dealing with the changed API of unescape functionality, since that got moved into its own crate.

<del>This uses an unpublished version of literal-escaper (https://github.com/rust-lang/literal-escaper/pull/8).</del>

r? `@nnethercote`
2025-06-25 01:03:30 +00:00
bors
4a4d67227e Auto merge of #140999 - hkBst:update-escaper, r=nnethercote
update to literal-escaper 0.0.4 for better API without `unreachable` and faster string parsing

This is the replacement for just the part of https://github.com/rust-lang/rust/pull/138163 dealing with the changed API of unescape functionality, since that got moved into its own crate.

<del>This uses an unpublished version of literal-escaper (https://github.com/rust-lang/literal-escaper/pull/8).</del>

r? `@nnethercote`
2025-06-25 01:03:30 +00:00
Eric Huss
041fbe8543 Update cargo 2025-06-24 17:21:19 -07:00
Ada Alakbarova
c11bc75fb0
changelog: link to the correct PR 2025-06-25 01:00:34 +02:00
Alex Crichton
4a112db96b Update wasm-component-ld to 0.5.14
This brings in a few updates to the bundled `wasm-component-ld`
dependency used by the `wasm32-wasip2` target. This primarily includes
support for upcoming component model async/WASIp3 support which will be
convenient to have native support for a few months from now.
2025-06-24 15:59:35 -07:00
Michael Goulet
e776065164 Taint body on invalid call ABI 2025-06-24 22:43:00 +00:00
Michael Goulet
e245570def Add rust-invalid ABI 2025-06-24 22:34:30 +00:00
antoyo
54b1ff5027
Merge pull request #718 from FractalFir/needless_align
Skip needless calls to get_align in some cases.
2025-06-24 18:19:46 -04:00
bors
3de5b08ef6 Auto merge of #142979 - matthiaskrgr:rollup-szqah4e, r=matthiaskrgr
Rollup of 9 pull requests

Successful merges:

 - rust-lang/rust#142645 (Also emit suggestions for usages in the `non_upper_case_globals` lint)
 - rust-lang/rust#142657 (mbe: Clean up code with non-optional `NonterminalKind`)
 - rust-lang/rust#142799 (rustc_session: Add a structure for keeping both explicit and default sysroots)
 - rust-lang/rust#142805 (Emit a single error when importing a path with `_`)
 - rust-lang/rust#142882 (Lazy init diagnostics-only local_names in borrowck)
 - rust-lang/rust#142883 (Add impl_trait_in_bindings tests from rust-lang/rust#61773)
 - rust-lang/rust#142943 (Don't include current rustc version string in feature removed help)
 - rust-lang/rust#142965 ([RTE-497] Ignore `c-link-to-rust-va-list-fn` test on SGX platform)
 - rust-lang/rust#142972 (Add a missing mailmap entry)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-06-24 21:58:31 +00:00
Daniel Paoliello
4c7f0549ba Enable short-ice for Windows 2025-06-24 14:16:23 -07:00
Jana Dönszelmann
ae6ab44d68 fix clippy 2025-06-24 23:00:31 +02:00
Jana Dönszelmann
f9cdf3fd74
fix 142783 2025-06-24 23:00:31 +02:00
Jana Dönszelmann
40a33af0f3
fix clippy 2025-06-24 23:00:31 +02:00
Jana Dönszelmann
5d44fdd972
Rewrite #[track_caller] 2025-06-24 23:00:31 +02:00
michal kostrubiec
8571aee687 Skip needless calls to get_align in some cases. 2025-06-24 22:34:43 +02:00
bjorn3
f5af05b8f7 Fix circular dependency test to use rustc_std_internal_symbol 2025-06-24 19:44:35 +00:00
bjorn3
b9c0f15486 Fix LTO for internalizing rustc_std_internal_symbol symbols 2025-06-24 19:44:35 +00:00
bjorn3
c44a23c16c Make comment on activate_injected_dep a doc comment 2025-06-24 19:44:35 +00:00
bjorn3
6d3ff3915e Avoid exporting panic_unwind as stdlib cargo feature
There is already panic-unwind to enable it.
2025-06-24 19:44:35 +00:00
bjorn3
5dfe72c1fd Stop handling explicit dependencies on the panic runtime
You shouldn't ever need to explicitly depend on it. And we weren't
checking that the panic runtime used the correct panic strategy either.
2025-06-24 19:44:35 +00:00
bjorn3
5f63b57589 Remove dependency injection for the panic runtime
This used to be necessary for a correct linker order, but ever since the
introduction of symbols.o adding the symbols in question to symbols.o
would work just as well. We do still add dependencies on the panic runtime
to the local crate, but not for #![needs_panic_runtime] crates.

This also removes the runtime-depends-on-needs-runtime test.
inject_dependency_if used to emit this error, but with symbols.o it is
no longer important that there is no dependency and in fact it may be
nice to have panic_abort and panic_unwind directly depend on libstd in
the future for calling std::process::abort().
2025-06-24 19:44:35 +00:00
bjorn3
0cdd7f50b0 Add all rustc_std_internal_symbol to symbols.o
rustc_std_internal_symbol is meant to call functions from crates where
there is no direct dependency on said crate. As they either have to be
added to symbols.o or rustc has to introduce an implicit dependency on
them to avoid linker errors. The latter is done for some things like the
panic runtime, but adding these symbols to symbols.o allows removing
those implicit dependencies.
2025-06-24 19:44:33 +00:00
MetaNova
1080b571ec
Corrected spelling mistake in c_str.rs
Changed "you're" to "your" on line 470.
2025-06-24 15:30:32 -04:00
Michael Goulet
250b5d204f Make missing lifetime suggestion verbose 2025-06-24 18:59:42 +00:00
Alona Enraght-Moony
84f92f3211 rustdoc: Don't mark #[target_feature] functions as ⚠
Closes https://www.github.com/rust-lang/rust/issues/142952
2025-06-24 18:55:45 +00:00
Jake Goulding
46e9d2f9fc Reduce mismatched-lifetime-syntaxes suggestions to MaybeIncorrect
`cargo fix` does not have a way of distinguishing a suggestion with
multiple spans which should all be applied from multiple suggestions
where only one should be applied (see issue 53934). `cargo fix` only
works with `MachineApplicable` suggestions, so downgrading the
applicability will stop `cargo` from suggesting the user run `cargo
fix`. rust-analyzer does work with `MaybeIncorrect`, so interactive
fixes are still available.
2025-06-24 14:53:22 -04:00
bors
28f1c80791 Auto merge of #142959 - bjorn3:sync_cg_clif-2025-06-24, r=bjorn3
Subtree sync for rustc_codegen_cranelift

The main highlight this time is a Cranelift update.

r? `@ghost`

`@rustbot` label +A-codegen +A-cranelift +T-compiler
2025-06-24 18:48:12 +00:00
Matthias Krüger
f299456597
Rollup merge of #142972 - tgross35:dwood-mailmap, r=davidtwco
Add a missing mailmap entry

There aren't too many commits with the new emails, but per https://github.com/rust-lang/rust/pull/142470#issuecomment-3000079137 they belong to the same person so we may as well map them.
2025-06-24 20:46:07 +02:00
Matthias Krüger
0089095331
Rollup merge of #142965 - raoulstrackx:raoul/rte-497-fix_c-link-to-rust-va-list-fn_test, r=jieyouxu
[RTE-497] Ignore `c-link-to-rust-va-list-fn` test on SGX platform

rust-lang/rust#141856 enables using the runner defined in bootstrap.toml to execute run-make tests. A test was added for this feature that compiles a Rust library and C code, links them together and passes the result to the runner. Unfortunately, that's not sufficient for the SGX platform; x86 machine code cannot be directly executed. This PR fixes the issue by disabling this test for SGX.
2025-06-24 20:46:07 +02:00
Matthias Krüger
4488018ef8
Rollup merge of #142943 - jieyouxu:no-rustc-version, r=compiler-errors
Don't include current rustc version string in feature removed help

The version string is difficult to properly normalize out, and removing it isn't a huge deal (the user can query version info easily through `rustc --version` or `cargo --version`).

The normalization options were all non-ideal (see https://github.com/rust-lang/rust/pull/142940#issuecomment-2998518450):

- Per-test version string normalization is nasty to maintain, and we  need to maintain `n` copies of it. See rust-lang/rust#142930 where the regex wasn't  robust against different release channels.
- Centralized compiletest normalization (with a directive opt-out) is  also not ideal, because `cfg(version(..))` tests can't have those accidentally normalized out (and you'd have to remember to opt-out).

r? `@workingjubilee` (discussed in rust-lang/rust#142940)
2025-06-24 20:46:06 +02:00
Matthias Krüger
a73954c229
Rollup merge of #142883 - mominul:impl_in_bindings, r=lcnr
Add impl_trait_in_bindings tests from #61773

This adds the [three test cases](https://github.com/rust-lang/rust/issues/61773#issuecomment-2952638727) from the rust-lang/rust#61773 as was suggested by ``@lcnr.``

I have merged the first two cases into one, named as `region-lifetimes.rs`

r? ``@lcnr``

Closes rust-lang/rust#61773
2025-06-24 20:46:06 +02:00
Matthias Krüger
a5875c18fe
Rollup merge of #142882 - kornelski:var-debug-info-lazy, r=petrochenkov
Lazy init diagnostics-only local_names in borrowck

`local_names` is not used during successful compilation, so not initializing it saves a little bit of work.

I've also made it accessible only from the diagnostics module to make it clearer that the names are from `var_debug_info` which is technically optional and could be absent.
2025-06-24 20:46:05 +02:00
Matthias Krüger
d7e10f083c
Rollup merge of #142805 - estebank:underscore-import, r=compiler-errors
Emit a single error when importing a path with `_`

When encountering `use _;`, `use _::*'` or similar, do not emit two errors for that single mistake. This also side-steps the issue of resolve errors suggesting adding a crate named `_` to `Cargo.toml`.

Fix rust-lang/rust#142662.
2025-06-24 20:46:04 +02:00
Matthias Krüger
03c2197d6c
Rollup merge of #142799 - petrochenkov:expnop, r=bjorn3
rustc_session: Add a structure for keeping both explicit and default sysroots

Also avoid creating and cloning sysroot unnecessarily.

Implements the suggestion from https://github.com/rust-lang/rust/pull/142089#discussion_r2132204079.
r? ``@bjorn3``
2025-06-24 20:46:04 +02:00
Matthias Krüger
9f384c414c
Rollup merge of #142657 - tgross35:nonoptional-fragment-specifiers-cleanup, r=petrochenkov
mbe: Clean up code with non-optional `NonterminalKind`

Since [rust-lang/rust#128425], the fragment specifier is unconditionally required in all
editions. This means `NonTerminalKind` no longer needs to be optional,
as we can reject this code during the expansion of `macro_rules!` rather
than handling it throughout the code. Do this cleanup here.

[rust-lang/rust#128425]: https://github.com/rust-lang/rust/pull/128425
2025-06-24 20:46:03 +02:00
Matthias Krüger
27819a009d
Rollup merge of #142645 - Urgau:usage-non_upper_case_globals, r=fmease
Also emit suggestions for usages in the `non_upper_case_globals` lint

This PR adds suggestions for all the usages of the renamed item in the warning of the  `non_upper_case_globals` lint.

Fixes https://github.com/rust-lang/rust/issues/124061
2025-06-24 20:46:03 +02:00
Esteban Küber
904652b2d0 Suggest cloning Arc moved into closure
```
error[E0382]: borrow of moved value: `x`
  --> $DIR/moves-based-on-type-capture-clause-bad.rs:9:20
   |
LL |     let x = "Hello world!".to_string();
   |         - move occurs because `x` has type `String`, which does not implement the `Copy` trait
LL |     thread::spawn(move || {
   |                   ------- value moved into closure here
LL |         println!("{}", x);
   |                        - variable moved due to use in closure
LL |     });
LL |     println!("{}", x);
   |                    ^ value borrowed here after move
   |
   = note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider cloning the value before moving it into the closure
   |
LL ~     let value = x.clone();
LL ~     thread::spawn(move || {
LL ~         println!("{}", value);
   |
```
2025-06-24 18:44:41 +00:00
Lukas Wirth
696813069e
Merge pull request #20087 from Veykril/push-rrtkwpzmmwwz
Short circuit a couple hir-ty/lower queries
2025-06-24 18:15:42 +00:00
bendn
3583423536
suggest declaring modules when file found but module not defined 2025-06-25 01:12:15 +07:00
Lukas Wirth
8b52babd45 Short circuit a couple hir-ty/lower queries 2025-06-24 20:04:43 +02:00
Michael Goulet
1c9f7955d4 Check CoerceUnsized impl validity before coercing 2025-06-24 17:48:09 +00:00
Trevor Gross
84e256317c Add a missing mailmap entry 2025-06-24 17:17:35 +00:00
Esteban Küber
d82fb1e72d Emit a single error when importing a path with _
When encountering `use _;`, `use _::*'` or similar, do not emit two errors for that single mistake. This also side-steps the issue of resolve errors suggesting adding a crate named `_` to `Cargo.toml`.
2025-06-24 16:21:26 +00:00
Philipp Krones
ad6e19a269
Changelog for Clippy 1.88 🏄 (#15095)
Violets are red,
Roses are blue,
Summer’s a feeling,
And we’re feeling it too.

<hr>

> (Please ping me when June made it as the cat of the release. I want to
send it to her owner :D)

@xFrednet voila:

![image](https://github.com/user-attachments/assets/7908abd0-76a5-4a64-a553-9c443d4c8b37)

Cats for the next release can be traditionally nominated in the comments
:D
Please be more active and cat-minded 😻

<hr>

changelog: none

r? flip1995
2025-06-24 16:15:22 +00:00
bors
3129d37ef7 Auto merge of #142962 - GuillaumeGomez:rollup-do1coji, r=GuillaumeGomez
Rollup of 7 pull requests

Successful merges:

 - rust-lang/rust#137268 (Allow comparisons between `CStr`, `CString`, and `Cow<CStr>`.)
 - rust-lang/rust#142704 (Remove the deprecated unstable `concat_idents!` macro)
 - rust-lang/rust#142742 ([win][aarch64] Fix linking statics on Arm64EC, take 2)
 - rust-lang/rust#142843 (Enable reproducible-build-2 for Windows MSVC)
 - rust-lang/rust#142916 (rustdoc-json: Add test for `#[optimize(..)]`)
 - rust-lang/rust#142919 (rustdoc-json: Add test for `#[cold]`)
 - rust-lang/rust#142944 (Stats output tweaks)

Failed merges:

 - rust-lang/rust#142825 (Port `#[track_caller]` to the new attribute system)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-06-24 15:35:57 +00:00
Jieyou Xu
db11e74723
Don't include current rustc version string in feature removed help
The version string is difficult to properly normalize out, and removing
it isn't a huge deal (the user can query version info easily through
`rustc --version` or `cargo --version`).

The normalization options were all non-ideal:

- Per-test version string normalization is nasty to maintain, and we
  need to maintain `n` copies of it.
- Centralized compiletest normalization (with a directive opt-out) is
  also not ideal, because `cfg(version(..))` tests can't have those
  accidentally normalized out (and you'd have to remember to opt-out).
2025-06-24 23:32:09 +08:00