Automatic Rustup - #5281
Open
workflows-miri[bot] wants to merge 31 commits into
Open
Conversation
Pull recent changes from https://github.com/rust-lang/rust via Josh. Upstream ref: 1e5ee356374211706221b71b6106d297a646ee57 Filtered ref: b4f59cc8a0c6987c83a832bc4976a5d6a1d9d821 Upstream diff: rust-lang/rust@fcbe791...1e5ee35 This merge was created using https://github.com/rust-lang/josh-sync.
Rustc sync 2026 09 13
Installing cargo tools (`cargo install`) without locked dependencies exposes users to supply-chain attacks to all the dependencies of the tool (https://blog.rust-lang.org/2026/08/20/supply-chain-attack-on-arrayref/). Using `cargo install --locked` reduces this risk to a compromise of the tool itself, while using the locked and hashed version of the dependencies. I went through all `rg "cargo install"` hits in the repository and added `--locked` to all but explanatory examples. I validated that those tools publish functioning `Cargo.lock`s with https://gist.github.com/konstin/ef3412518e207bea6035a1bd01f3821b.
chore: bump to cc@1.4.3 for rustc_llvm and library ### What is this? Old cc-rs derives this from the `-Clto` rustflag on its own. `cc@1.2.39` starts gating that behind `-Clinker-plugin-lto`, which bootstrap doesn't pass. Therefore, we need to pass this flag explicitly to keep LTO mode Previous efforts: * rust-lang/rust#146186 * rust-lang/rust#155438 I personally want this because of cc 1.3.0+ has the support of Cargo `-Ztrim-paths`, which helps what I am experimenting in <rust-lang/rust#161049>. ### How to review Commit by commit. To keep commits bisect-able, I added the first commit without cc bump. clang should be fine with duplicate `-flto` flags. One thing I am not certain is whether we should probe `-flto` flag in this case, or just make this fail if `-flto` isn't supported. (I assume `-flto` is quote widely supported) r? Kobzol --- 🤖 **LLM disclosure:** I used LLM for the experiment of <rust-lang/rust#161049>, but not the bootstrap LTO change in this PR.
Fix ordering for `default impl` check in the new solver The second commit of rust-lang/rust#160605 moved the `default impl` check later, for better performance, which introduced a regression. This commit moves the check a little earlier, so it is after the `args_may_unify` call (thus retaining the perf benefit) but before the `probe_trait_candidate` (which has side-effects). The check is now duplicated in three `GoalKind::consider_impl_candidate` methods, which is unfortunate, but it fits in with the existing duplicated code in those methods. And it means another copy of the check (in `try_assemble_bounds_via_registered_opaques`) can be removed. Fixes rust-lang/rust#160994. r? @lcnr
add a cache to the `WfPredicates` visitor Part of speeding up compiling `ReShell` with `-Znext-solver`, see rust-lang/trait-system-refactor-initiative#272 and [#t-types/trait-system-refactor > more `reshell` slowness](https://rust-lang.zulipchat.com/#narrow/channel/364551-t-types.2Ftrait-system-refactor/topic/more.20.60reshell.60.20slowness/with/616484452). The PR changes the `WfPredicates` visitor to only collect new bounds for unique types. That is, if we have a type like: ``` type T0 = Map<Then<Whitespace, Whitespace>> type T1 = Map<Then<T0, T0>> type T2 = Map<Then<T1, T1>> ... type T_N = Map<Then<T_N-1, T_N-1>> ``` etc., the visitor used to end up collecting one WF obligation for each path from `T_N` to its `Whitespace` leaves, even though WF of a type (I believe) doesn't depend on the path the visitor took to get there, which allows us to deduplicate by Ty. Not deduplicating caused us to go O(2^N) here. next-solver is still about ~5x slower than the old solver on the third reproducer due to some other hidden quadratics, and fixing that seems to be more involved, but I think this PR will still be ✨ An Improvement. r? lcnr
Fix checking of LLVM prebuilt status This regressed in rust-lang/rust#160916. I'll start from the end. There was a pre-existing bug (fixed by the second commit of this PR), where if we do `x check library`, we have `builder.kind == Kind::Check`, but we are actually building things (like the compiler) during that bootstrap invocation. But bootstrap was only checking the builder kind before, and in that case it would skip building LLVM, *unless* it was already built locally previously. On PR CI, and perhaps always (because build steps executed during check likely only occur during `x check library`, which requires *building* the compiler anyway), the LLVM was built locally anyway, so this bug was hidden away. This also removes an unnecessary LLVM build when running Clippy on the rustc_private tools. However, after rust-lang/rust#160916, this was no longer case, because it stopped treating locally built LLVM as being prebuilt (which, in and of itself, is kinda a bug). Because when we check the compiler, we want to avoid building (and checking out!) LLVM. Before rust-lang/rust#160916, bootstrap considered a *previously locally built* LLVM to be available as a prebuilt `llvm-config`, and in that case configured `LLVM_CONFIG` for `rustc_llvm`. Because all PR CI bootstrap invocations that do `check` actually built LLVM prior doing a build, this worked, somehow, but broke after my PR. Should unblock rust-lang/rust#161466. r? jieyouxu
…rrowckDomain, r=cjgillot Remove `impl DebugWithContext for BorrowckDomain` Only `iterate_to_fixpoint` requires `Domain: DebugWithContext<Self>`; `visit_results` does not. And `Borrowck` is an unusual analysis that never calls `iterate_to_fixpoint`; instead its results are composed from the results of the three sub-analyses. r? @cjgillot
…nna-kruppe Doclink to `char::REPLACEMENT_CHARACTER` instead of `std::char::REPLACEMENT_CHARACTER`. Doclink to the associated const on primitive `char`, not the deprecated free const in the `core::char`/`std::char` modules.
…ertdev Install cargo tools with locked dependencies Installing cargo tools (`cargo install`) without locked dependencies exposes users to supply-chain attacks to all the dependencies of the tool (https://blog.rust-lang.org/2026/08/20/supply-chain-attack-on-arrayref/). Using `cargo install --locked` reduces this risk to a compromise of the tool itself, while using the locked and hashed version of the dependencies. I went through all `rg "cargo install"` hits in the repository and added `--locked` to all but explanatory examples (such as cargo's docs on `cargo install` itself). I validated that those tools publish functioning `Cargo.lock`s with https://gist.github.com/konstin/bcb1169c1c1120c259dca64e777a64d0.
enable next solver in Miri This was disabled in rust-lang/rust#160619, apparently because some tests failed. But I can't reproduce those test failures locally. Fixes #5269 Landing this here because rustc CI is where this used to break, and also Miri got broken again so we can't do syncs currently. Cc @Kivooeo r? @lcnr
Revert #161236 (Download auto jobs in citool in parallel) I think that this might have caused [this failure](rust-lang/rust#161260 (comment)). It's not worth debugging things like that over parallelizing this... r? jieyouxu
rename `T-libs-api` to `T-libs` in issue templates Since they were merged with rust-lang/rfcs#3984.
…uwer Rollup of 9 pull requests Successful merges: - rust-lang/rust#161475 (Fix checking of LLVM prebuilt status) - rust-lang/rust#161269 (Remove `impl DebugWithContext for BorrowckDomain`) - rust-lang/rust#161419 (Doclink to `char::REPLACEMENT_CHARACTER` instead of `std::char::REPLACEMENT_CHARACTER`.) - rust-lang/rust#161428 (Install cargo tools with locked dependencies) - rust-lang/rust#161502 (Clean up a few `_inner` functions after `ensure_sufficient_stack`) - rust-lang/rust#161507 (Remove useless `!fields.is_empty()` check) - rust-lang/rust#161512 (enable next solver in Miri) - rust-lang/rust#161516 (Revert rust-lang/rust#161236 (Download auto jobs in citool in parallel)) - rust-lang/rust#161518 (rename `T-libs-api` to `T-libs` in issue templates)
Optimize `DeepRejectCtxt` Details in individual commits. r? @jdonszelmann
…oxyUwU
Reject non-constructor self types in const-arg tuple-call lowering
Turning on `min_generic_const_args` makes `tracing` stop compiling. Its logging macros expand a field name to something like `FieldName<{ FieldName::len(stringify!(field)) }>`, and under mgca a braced call in const-arg position gets lowered as a tuple constructor. So lowering tries to resolve the bare self type `FieldName` (written without its `const N`), which kicks off an `E0107 "missing generics"` cascade pointing deep into macro code. But `FieldName::len(..)` is just an associated fn, not a constructor, so lowering it like a `TupleCall` was wrong in the first place. See rust-lang/rust#157152.
Only an enum can host a tuple-variant ctor, so for any other self type that can't (struct, union, primitive, foreign type) the call has to be an assoc fn and needs wrapping in `const { ... }`. We catch those from the self type's resolution before lowering it and emit the existing "complex const arguments must be placed inside of a `const` block" error, which is the message you'd want anyway. Enums, aliases, `Self` and type params get left alone since they might resolve to an enum. tbh the bare generic *enum* case (`Option::Some(0)`) still E0107s, and imo that's better as a follow-up since catching it needs the variant type before lowering. Tests cover struct/union/primitive/foreign plus the wrapped forms that compile, and I checked it against the real `tracing` 0.1.44 crate too.
_fwiw just the code changes and tests were implemented with AI help and I verified/reproduced/tested everything locally before sending to remote._
…rtdev stdarch subtree update Subtree update of `stdarch` to rust-lang/stdarch@0d4e35e. Created using https://github.com/rust-lang/josh-sync. r? @ghost
…able-minification, r=lolbinarycat compiletest: forward disable-minification from bootstrap `build.docs-minification = false` was already honored when building docs through bootstrap's doc steps, but compiletest-driven rustdoc suites always generated minified CSS/JS. Bootstrap now forwards `--disable-minification` to compiletest when docs minification is disabled, and compiletest passes `-Zunstable-options --disable-minification` to rustdoc for HTML/JS/JSON/UI doc generation. Fixes rust-lang/rust#142737.
…mu001999
Extend `dropping_{references,copy_types}` lints to `drop_in_place`
This PR extends the `dropping_{references,copy_types}` lints to also check for calls to `std::ptr::drop_in_place` and `<*mut _>::drop_in_place`.
It also extends the `undropped_manually_drops` lint.
Fixes rust-lang/rust#160127
cc @theemathas
Add floating point inline ASM support for SPARC This PR adds support for floating point registers to SPARC inline ASM. Ping target maintainers: @psumbera @kulikjak @jonathanpallant @mvolfik @he32 @0323pin @semarie Tracking issues: f16 inline ASM: rust-lang/rust#125398 (part of rust-lang/rust#116909) SPARC inline ASM: rust-lang/rust#93335
…Simulacrum feat: add symmetric PartialEq impls for Vec, &[T], &mut [T] versus Cow<'_, [T]> add the missing reverse `PartialEq<Cow<'_, [U]>>` impls for `Vec<T, A>`, `&[T]`, and `&mut [T]`, essentially mirroring the existing forwards in `library/alloc/src/vec/partial_eq.rs` partially addresses rust-lang/rust#152830. The `VecDeque` half of that issue is being handled separately by rust-lang/rust#152972, so there is no overlap with this PR also fyi: verified locally with `./x test library/alloctests --stage 1` and the new `test_partial_eq_cow_symmetric` test passes alongside the existing alloc test suite
…anBrouwer Derive `GenericTypeVisitable` for `RegionConstraint` _correctly_ The derive added in rust-lang/rust#160164 was incorrect -- it resulted in an overflow during trait solving. This is because `#[derive(GenericTypeVisitable)]` automatically adds a `: GenericTypeVisitable` bound to every field of a type -- in this case, `Box<[RegionConstraint<I>]>: GenericTypeVisitable<V>`. To fix this, I added a `#[generic_type_visitable(bounds(..))]` attribute to the derive macro, which allows overriding the added bounds. I also made the derive macro no longer a no-op in rustc, so that errors like this can be caught on r-l/r CI in the future. Best reviewed commit-by-commit. cc @ChayimFriedman2
…white be more permissive wrt overflow and and improve diagnostics This builds on rust-lang/rust#160632 Previously we only showed a single root goal for the FCW. It was difficult to find out how the goal overflowed. We display a proving chain now which should help users identify relevant types or auto traits. This will affect perf for crates emitting the FCW. E.g. `calimero-store` goes from 4.7s -> 5.7s in local testing since it emits thousands of FCWs internally. The FCW is a mitigation of future hard error and authors are expected to resolve it so it's probably acceptable. It doesn't affect crates without the FCW. r? lcnr
Add regression test for gce dependency ICE in non-gce crate Closes rust-lang/rust#128525
Rollup of 8 pull requests Successful merges: - rust-lang/rust#161558 (stdarch subtree update) - rust-lang/rust#159887 (compiletest: forward disable-minification from bootstrap) - rust-lang/rust#160229 (Extend `dropping_{references,copy_types}` lints to `drop_in_place`) - rust-lang/rust#160949 (Add floating point inline ASM support for SPARC) - rust-lang/rust#156160 (feat: add symmetric PartialEq impls for Vec, &[T], &mut [T] versus Cow<'_, [T]>) - rust-lang/rust#160914 (Derive `GenericTypeVisitable` for `RegionConstraint` _correctly_) - rust-lang/rust#161341 (be more permissive wrt overflow and and improve diagnostics) - rust-lang/rust#161530 (Add regression test for gce dependency ICE in non-gce crate)
Update LLVM submodule to latest `release/23.x` branch This pulls in rust-lang/llvm-project#199 which updates the revision of LLVM 23 to the latest copy of the release branch, just past the rc3 release.
This updates the rust-version file to da5114692c9ebe46b869488c5f34f92eb10b98c1.
Pull recent changes from https://github.com/rust-lang/rust via Josh. Upstream ref: rust-lang/rust@da51146 Filtered ref: 3c152ff Upstream diff: rust-lang/rust@c656540...da51146 This merge was created using https://github.com/rust-lang/josh-sync.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Merge ref 'da5114692c9e' from rust-lang/rust
Pull recent changes from https://github.com/rust-lang/rust via Josh.
Upstream ref: rust-lang/rust@da51146
Filtered ref: 3c152ff
Upstream diff: rust-lang/rust@c656540...da51146
This merge was created using https://github.com/rust-lang/josh-sync.