Commit Graph

319882 Commits

Author SHA1 Message Date
Trevor Gross f68f5980c3 core: Move {RangeIter, RangeFromIter}::remainder to new_range_remainder
Split the remainder functions from the rest of `std::range`.

(cherry picked from commit 0bb3fe315e)
2026-04-02 11:38:37 -07:00
Trevor Gross b7bdc7aee2 core: Destabilize beta-stable RangeInclusiveIter::remainder
As discussed, make this portion of the range API unstable again. This
will now be tracked under `new_range_remainder`.

Discussion: https://rust-lang.zulipchat.com/#narrow/channel/327149-t-libs-api.2Fapi-changes/topic/.60RangeFrom.3A.3Aremainder.60.20possible.20panic/with/582108913
(cherry picked from commit cbc94349d0)
2026-04-02 11:28:50 -07:00
Nikita Popov 533179a437 [perf] Revert FastISel patch
This change caused a significant compile-time regression for
debug builds.

(cherry picked from commit 1a320616e9)
2026-04-02 11:07:50 -07:00
dianqk 6db4dfefe1 Update LLVM to 22.1.2
(cherry picked from commit 283d705b31)
2026-04-02 11:07:43 -07:00
mu001999 195f9764c0 Init self_decl with a correct vis
(cherry picked from commit 01795c3eab)
2026-04-02 11:07:33 -07:00
dianne 1374038f80 update diagnostic for variables moved by dbg!
(cherry picked from commit 7d1b41cbb3)
2026-04-02 11:05:25 -07:00
dianne 4f50466be4 don't drop arguments' temporaries in dbg!
(cherry picked from commit 51816efcc0)
2026-04-02 11:05:25 -07:00
Folkert de Vries 73caca416f add neon load/store assembly test
(cherry picked from commit 35f9cb6eee)
2026-04-02 10:43:00 -07:00
Folkert de Vries e427d29e3c aarch64: fix UB in non-power-of-two reads and writes
(cherry picked from commit 2fa37e7b34)
2026-04-02 10:41:57 -07:00
bors 8ebd005178 Auto merge of #154307 - ShoyuVanilla:beta-fix, r=jieyouxu
[beta] Revert #151380 in beta

cc https://rust-lang.zulipchat.com/#narrow/channel/474880-t-compiler.2Fbackports/topic/.23153869.3A.20beta-nominated/with/581306395

r? ghost
2026-04-01 20:23:34 +00:00
bors 66bcd258f0 Auto merge of #154346 - ehuss:beta-backports, r=ehuss
[beta] backports

- Update cargo
- https://github.com/rust-lang/rust/pull/153763: Don't add empty target features for target-cpu=native on macOS 
- https://github.com/rust-lang/rust/pull/153491: Move `freeze_*` methods to `OpenOptionsExt2`
2026-03-25 05:58:23 +00:00
Jonathan Brouwer a692f685c7 Rollup merge of #153491 - ChrisDenton:openoptionsext2, r=Mark-Simulacrum
Move `freeze_*` methods to `OpenOptionsExt2`

Move the unstable `freeze_last_access_time` and `freeze_last_write_time` from `OpenOptionsExt` to a new `OpenOptionsExt2` trait. This should fix rust-lang/rust#153486.
2026-03-24 18:23:04 -07:00
Jonathan Brouwer 470cb0754e Rollup merge of #153763 - nikic:target-cpu-native-fix, r=lqd
Don't add empty target features for target-cpu=native on macOS

LLVM does not support host feature detection (only host cpu detection) on apple platforms. As such, the returned feature string will be empty. Adding this empty string to the target-features attribute results in a verifier error on LLVM 22.

Fix this by not adding the empty string to the target features. The reason why this was not caught by the target-cpu-native test is that it requires a function that adds *some* target features, otherwise the attribute is omitted entirely. We achieve this with a somewhat peculiar construction that enables `neon` if it's already enabled. (This is to avoid enabling it on softfloat targets.)

Fixes https://github.com/rust-lang/rust/issues/153397.
2026-03-24 18:16:01 -07:00
Eric Huss 5b5a9cf5f0 Update cargo submodule
2 commits in e8eb8435d5cad936237a1ee798c2f983624d0825..f2d3ce0bd7f24a49f8f72d9000448f8838c4e850
2026-03-06 12:51:00 -0600 to 2026-03-21 06:43:08 -0500
- [beta 1.95] Fix symlink_and_directory when running in a long target dir name (rust-lang/cargo#16776)
- [beta 1.95] Update tar to 0.4.45 (rust-lang/cargo#16770)
2026-03-24 18:15:16 -07:00
Shoyu Vanilla 63cd511300 Revert "Auto merge of #151380 - ShoyuVanilla:shallow-resolve-to-root-var, r=lcnr"
This reverts commit 75b9d89c68, reversing
changes made to 7bee525095.
2026-03-24 20:57:08 +09:00
bors 951adfe62e Auto merge of #153958 - fmease:beta-dyn-ace-gingerly-care, r=BoxyUwU
[beta] Don't look for non-type-level assoc consts when checking trait object types

Beta backport of PR rust-lang/rust#153738. Said PR can't just be rebased onto beta as it needs slight adjustments due to PR RUST-153050 not being part of beta.

Directly fixes rust-lang/rust#153731.

~~Blocked on backport acceptance by T-compiler~~ (done) (nomination happened / nomination procedure happens over at rust-lang/rust#153738, not here).
2026-03-19 21:25:41 +00:00
León Orell Valerian Liehr bdc1b3ffa8 [beta] Don't look for non-type-level assoc consts when checking trait object types 2026-03-17 01:54:26 +01:00
bors 94a8e826a5 Auto merge of #153530 - lnicola:lockfile-path-backport, r=Veykril
[beta] backport rust-analyzer `lockfile-path` fix

Closes rust-lang/rust-analyzer#21761
Closes rust-lang/rust-analyzer#21783
2026-03-08 21:32:40 +00:00
bors 64e2968f2c Auto merge of #153463 - cuviper:beta-next, r=cuviper
[beta] update stage0 and cargo

Update stage0 to 1.94.0

<https://forge.rust-lang.org/release/process.html#beta-stage0-update-friday>

---

Update cargo submodule rust-lang/rust#153515

2 commits in f298b8c82da0cba538516b45b04a480fc501d4c0..e8eb8435d5cad936237a1ee798c2f983624d0825
2026-02-24 21:59:20 +0000 to 2026-03-06 12:51:00 -0600
- [beta-1.95] Add missing truncate when writing .crate files (rust-lang/cargo#16713)
- [beta 1.95] backport test fixes (rust-lang/cargo#16715)
2026-03-07 09:42:59 +00:00
Laurențiu Nicola d2cb7e4ef1 Tweak pre-release check for beta 2026-03-07 11:21:06 +02:00
Laurențiu Nicola b93cdbfcfa Use -Zlockfile-path on every 1.95 nightly 2026-03-07 11:20:59 +02:00
Weihang Lo 1b95471493 [beta-1.95] Update cargo submodule 2026-03-06 21:45:02 -08:00
Josh Stone f96caa95f1 update stage0 to 1.94.0 2026-03-05 15:14:40 -08:00
bors ad726b5063 Auto merge of #153314 - cuviper:beta-next, r=cuviper
[beta] prepare Rust 1.95.0-beta

Ref: https://forge.rust-lang.org/release/process.html#beta-pr

- Replace version placeholders with 1.95.0
- Bump to beta release
- library/test: always enable unstable features for miri rust-lang/rust#153369 

r? cuviper
2026-03-05 05:16:37 +00:00
Josh Stone 752b6637ce library/test: always enable unstable features for miri
The unstable features of the `test` crate used to be default-enabled,
and manually disabled when building the beta and stable channels. Commit
dae8ea92a7 flipped that to default-disabled, only enabled for nightly
and dev channels.

However, this broke miri testing on the beta/stable channels, because it
also uses unstable features -- which should be fine to enable just for
its own sysroot build. Now the `test` build script makes that happen by
noticing the `MIRI_CALLED_FROM_SETUP` environment variable.

(cherry picked from commit 30d7ed4c47)
2026-03-04 13:48:26 -08:00
Josh Stone 23b953f802 Bump to beta release 2026-03-02 15:01:23 -08:00
Josh Stone bad24ccbec Replace version placeholders with 1.95.0 2026-03-02 15:00:53 -08:00
bors 67aec36df7 Auto merge of #153183 - JonathanBrouwer:rollup-APFHc2s, r=JonathanBrouwer
Rollup of 12 pull requests

Successful merges:

 - rust-lang/rust#151143 (explicit tail calls: support indirect arguments)
 - rust-lang/rust#153012 (Stop using `LinkedGraph` in `lexical_region_resolve`)
 - rust-lang/rust#153175 (Clarify a confusing green-path function)
 - rust-lang/rust#153179 (Force a CI LLVM stamp bump)
 - rust-lang/rust#150828 (Improved security section in rustdoc for `current_exe`)
 - rust-lang/rust#152673 (rustc_public: rewrite `bridge_impl` to reduce boilerplate)
 - rust-lang/rust#152674 (rustc_public: remove the `CrateDefItems` trait)
 - rust-lang/rust#153073 (Fix mem::conjure_zst panic message to use any::type_name instead)
 - rust-lang/rust#153117 (Remove mutation from macro path URL construction)
 - rust-lang/rust#153128 (Recover feature lang_items for emscripten)
 - rust-lang/rust#153138 (Print path root when printing path)
 - rust-lang/rust#153159 (Work around a false `err.emit();` type error in rust-analyzer)
2026-02-27 22:04:20 +00:00
Jonathan Brouwer 70da804451 Rollup merge of #153159 - Zalathar:emit-workaround, r=nnethercote
Work around a false `err.emit();` type error in rust-analyzer

For whatever reason, rust-analyzer doesn't see that these calls to `err.emit();` are diverging, so the trailing semicolon makes r-a complain about a type mismatch between `()` and some other type.

Removing the trailing semicolon makes no functional difference (because the emit still unwinds the stack), but seems to be enough to allow rust-analyzer to see that emitting an error returns `!` in these cases, which silences the false error.
2026-02-27 14:05:38 +01:00
Jonathan Brouwer f433c13b48 Rollup merge of #153138 - mu001999-contrib:print-path-root, r=petrochenkov
Print path root when printing path

Extracted from https://github.com/rust-lang/rust/pull/152996.

r? petrochenkov
2026-02-27 14:05:37 +01:00
Jonathan Brouwer 5bb3260b37 Rollup merge of #153128 - mu001999-contrib:fix/features, r=joboet
Recover feature lang_items for emscripten

Fixes https://github.com/rust-lang/rust/pull/152469#discussion_r2858304043
2026-02-27 14:05:36 +01:00
Jonathan Brouwer 57fe4c06de Rollup merge of #153117 - arferreira:cleanup-macro-path-iter, r=GuillaumeGomez
Remove mutation from macro path URL construction

Resolves the `FIXME` in `generate_macro_def_id_path`.
The old code mutated `path` to build the URL — popping the macro name, pushing an interned filename, then restoring the original at the end. None of that was necessary. A slice pattern gives us `module_path` and `last` without touching the original, and `push_fmt(format_args!(...))` writes the filename directly into the URL builder, same as `make_href` already does.
Also tightened the error guards: the original `path.len() < 2` is now two distinct checks with messages that describe the actual failure (empty path vs. single-element path missing the crate prefix).

r? @GuillaumeGomez
2026-02-27 14:05:36 +01:00
Jonathan Brouwer f5383a3353 Rollup merge of #153073 - mehdiakiki:fix/conjure-zst-panic-message, r=RalfJung
Fix mem::conjure_zst panic message to use any::type_name instead

Use `crate::any::type_name::<T>()` instead of `stringify!(T)` in the
runtime panic message of `conjure_zst` , so the actual type name (e.g.
`i32`) is shown rather than the literal string `[T]`.
2026-02-27 14:05:35 +01:00
Jonathan Brouwer b2099acea5 Rollup merge of #152674 - makai410:rpub/sus-trait, r=celinval
rustc_public: remove the `CrateDefItems` trait

This trait feels sus since its documentation says it's for 'retrieving all items from a definition' however it only provides an `associated_items` method (??), which I believe should only be valid for `impl`s and `trait`s.
2026-02-27 14:05:34 +01:00
Jonathan Brouwer 3186ae21a1 Rollup merge of #152673 - makai410:rpub/bridge-impl, r=celinval
rustc_public: rewrite `bridge_impl` to reduce boilerplate

It looks better.
2026-02-27 14:05:33 +01:00
Jonathan Brouwer b16d243cac Rollup merge of #150828 - sourcefrog:doc-exe-security, r=cuviper
Improved security section in rustdoc for `current_exe`

A few improvements to the security section of the docs about `current_exe`

0. The explanatory link <https://vulners.com/securityvulns/SECURITYVULNS:DOC:22183> is ~~broken~~ not directly very helpful in understanding the risk.
1. It basically previously says to never trust the result, which is IMO too pessimistic to be helpful. It's worth understanding the behavior but if you have a use case to re-exec the current program, which is not uncommon, this is a reasonable way to do it.
2. The particular risk is about setuid/setgid processes that shouldn't fully trust the user that spawned them.
3. IMO the most important risk with this function is that the invoker can control argv and PATH, so I made this more explicit. (Many unixes, including Linux, don't rely on them in the implementation, but some do.)
4. The previous text about TOCTOU and races is IMO not really coherent: if an attacker can write to the location where you're going to re-exec, they can fundamentally control what program is executed. They don't need to race with your execution of current_exe, and there is no up-front check.
5. Briefly explain the pattern of CVE-2009-1894: on Linux, depending on system configuration, an attacker who can create hardlinks to the executable can potentially control `/proc/self/exe`. On modern Linux this should normally require permission to write to the executable.

I did some web research for "argv0 vulnerability" and similar terms and didn't find anything else we should be documenting here. (There are issues about argc=0 but those should be prevented by memory safety in Rust.)

I found what the link seemed to be pointing to in <https://vulners.com/cve/CVE-2009-1894>, which talks about confusing a setuid program by creating a hardlink to its exe. I think this is in very particular circumstances something people should still be concerned about: a setuid program on a machine with `fs.protected_hardlinks = 0`. I don't think this justifies warning people not to use the function at all.

cc @mgeisler
2026-02-27 14:05:33 +01:00
Jonathan Brouwer 5a8a757292 Rollup merge of #153179 - jieyouxu:force-ci-llvm-stamp, r=madsmtm
Force a CI LLVM stamp bump

To see if this helps with rust-lang/rust#153127.
2026-02-27 14:05:32 +01:00
Jonathan Brouwer e95cbb6da6 Rollup merge of #153175 - Zalathar:load-green, r=petrochenkov
Clarify a confusing green-path function

The current name of this function, `try_load_from_disk_and_cache_in_memory`, is confusing on a number of levels:

- Trying to mark the node green is load-bearing even for queries that never cache to disk.
- It will only return None if it fails to mark the query green; the subsequent parts always return Some.
- If it cannot load a value from disk, it will obtain a value by invoking the query provider.
- It is not actually responsible for storing values in the in-memory cache; that is handled by an outer layer.

This PR therefore:
- Hoists the try-mark-green out of that function, making the function always return a value.
- Renames the function to `load_from_disk_or_invoke_provider_green `.
- Renames a few other local variables in passing.

There should be no change to compiler behaviour.
2026-02-27 14:05:32 +01:00
Jonathan Brouwer 383ef53b9a Rollup merge of #153012 - Zalathar:lexical, r=petrochenkov
Stop using `LinkedGraph` in `lexical_region_resolve`

There are only two users of the older `LinkedGraph` data structure, and this is one.

It turns out that this diagnostic-related code doesn't need any non-trivial graph operations (since it does its own graph traversal); it just needs the ability to get a list of in-edges or out-edges (constraints) for any particular node. That's easy enough to do with a simple custom data structure.

Inspired by https://github.com/rust-lang/rust/pull/152621, which wants to make changes to `LinkedGraph` that wouldn't make sense for this use-site.
2026-02-27 14:05:31 +01:00
Jonathan Brouwer 1b897d4f18 Rollup merge of #151143 - folkertdev:tail-call-indirect, r=WaffleLapkin
explicit tail calls: support indirect arguments

tracking issue: https://github.com/rust-lang/rust/issues/112788

After discussion in https://github.com/rust-lang/rust/issues/144855, I was wrong and it is actually possible to support tail calls with `PassMode::Indirect { on_stack: false, .. }` arguments.

Normally an indirect argument with `on_stack: false` would be passed as a pointer into the caller's stack frame. For tail calls, that would be unsound, because the caller's stack frame is overwritten by the callee's stack frame.

Therefore we store the argument for the callee in the corresponding caller's slot. Because guaranteed tail calls demand that the caller's signature matches the callee's, the corresponding slot has the correct type.

To handle cases like the one below, the tail call arguments must first be copied to a temporary, and can only then be copied to the caller's argument slots.

```rust
// A struct big enough that it is not passed via registers.
pub struct Big([u64; 4]);

fn swapper(a: Big, b: Big) -> (Big, Big) {
    become swapper_helper(b, a);
}
```

---

I'm not really familiar with MIR and what tricks/helpers we have, so I'm just cobbling this together. Hopefully we can arrive at something more elegant.
2026-02-27 14:05:30 +01:00
bors 3a70d0349f Auto merge of #152702 - oli-obk:nonnulltransmute, r=scottmcm
Prepare NonNull for pattern types



Pull out the changes that affect some tests, but do not require pattern types.

See https://github.com/rust-lang/rust/pull/136006#discussion_r2806740338 for what triggered this PR

r? @scottmcm
2026-02-27 13:04:46 +00:00
Zalathar c6d028c30a Clarify a confusing green-path function 2026-02-27 22:53:26 +11:00
Jieyou Xu ec7c117cda bootstrap: force a CI LLVM stamp bump
To see if this helps with
<https://github.com/rust-lang/rust/issues/153127>.
2026-02-27 19:24:21 +08:00
Folkert de Vries e6cf5a22e7 test u128 passing on linux and windows 2026-02-27 10:51:55 +01:00
Folkert de Vries 31ae3d2be8 guaranteed tail calls: support indirect arguments 2026-02-27 10:24:39 +01:00
bors 6f54d591c3 Auto merge of #151247 - chenyukang:yukang-fix-const-recover-151149, r=estebank
Try to recover from over-parsing in const item with missing semicolon

Fixes rust-lang/rust#151149

r? @estebank
2026-02-27 09:09:21 +00:00
bors 0ee5907d59 Auto merge of #153145 - ytmimi:rustfmt-subtree-update, r=ytmimi
rustfmt subtree update

r? @ghost
2026-02-27 03:08:01 +00:00
Zalathar 882ae150e9 Work around a false err.emit(); type error in rust-analyzer 2026-02-27 13:06:14 +11:00
randomicon00 9092262255 fix: mem::conjure_zst panic message to use any::type_name instead of stringify! 2026-02-26 20:35:57 -05:00
bors 6a979b3e32 Auto merge of #153108 - alexcrichton:revert, r=joboet
Revert "Simplify internals of `{Rc,Arc}::default`"

This reverts rust-lang/rust#152591 following a [perf run being done](https://github.com/rust-lang/rust/pull/152591#issuecomment-3960081137). I'm not really positioned at this time to dive in further and understand the performance regressions, so I'll back away from `Rc`/`Arc` and leave them as-is.
2026-02-26 19:51:40 +00:00