about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorLines
2025-08-13Implement `clippy::CodegenGcc` as a separate stepJakub Beránek-7/+81
To correctly pass `RustcPrivateCompilers` to it and to avoid running it on `x clippy compiler`.
2025-08-13Merge pull request #20329 from jackh726/next-trait-solver-querifyLukas Wirth-1309/+19140
Switch from Chalk to the next trait solver
2025-08-13Prepare standard library for checking rustc in `prepare_compiler_for_check`Jakub Beránek-27/+23
2025-08-13Merge ref '1553adfe6884' from rust-lang/rustThe Miri Cronjob Bot-6344/+11129
Pull recent changes from https://github.com/rust-lang/rust via Josh. Upstream ref: 1553adfe6884a8f6c28f5a673d3e605535ee0113 Filtered ref: e5ee70aa5f36dacdc6df9490e867c45aa4e51c18 This merge was created using https://github.com/rust-lang/josh-sync.
2025-08-13Rollup merge of #145325 - clarfonthey:cast-init, r=scottmcmJakub Beránek-3/+74
Add `cast_init` and `cast_uninit` methods for pointers ACP: rust-lang/libs-team#627 Tracking issue: rust-lang/rust#145036 This includes an incredibly low-effort search to find uses that could be switched to using these methods. I only searched for `cast::<\w>` and `cast::<MaybeUninit` because there would otherwise be way too much to look through, and I also didn't modify anything inside submodules/subtrees.
2025-08-13Rollup merge of #145320 - Kobzol:fix-cranelift-codegen-dist, r=shepmasterJakub Beránek-1/+5
Allow cross-compiling the Cranelift dist component Should help unblock https://github.com/rust-lang/rust/pull/145252 (https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/macos-13.20shutting.20down/with/534032174).
2025-08-13Rollup merge of #145308 - giltho:dangling-doc, r=scottmcmJakub Beránek-20/+20
Adjust documentation of `dangling` I believe the current doc of `dangling` is slightly off as it indicates: `Note that the pointer value may potentially represent a valid pointer to a T` The returned pointer has no provenance, so it may not be a valid pointer (except in the case of ZSTs, but I don't think this is what the documentation is trying to warn about). See: https://rust-lang.zulipchat.com/#narrow/channel/136281-t-opsem/topic/Dangling.20pointers.3A.20definition The value returned by dangling may never be used to dereference a value that isn't a ZST, even if address equality is detected with that of a valid pointer. This is a minor fix, but this doc still got me confused for a second
2025-08-13Rollup merge of #145303 - m-ou-se:payload-as-str-doc, r=jhprattJakub Beránek-0/+2
Docs: Link to payload_as_str() from payload().
2025-08-13Rollup merge of #145289 - rejected-l:master, r=KobzolJakub Beránek-7/+7
chore(ci): upgrade checkout to v5 Maintenance update to actions/checkout@v5 to align with the current runner stack (Node 24); nothing else modified. Release notes: https://github.com/actions/checkout/releases/tag/v5.0.0
2025-08-13Rollup merge of #145274 - compiler-errors:unused-must-use, r=fmeaseJakub Beránek-198/+358
Remove unused `#[must_use]` Self-explanatory Fixes https://github.com/rust-lang/rust/issues/145257
2025-08-13Rollup merge of #145269 - epage:test-env, r=jhprattJakub Beránek-13/+12
Deprecate RUST_TEST_* env variables Like with rust-lang/rust#139224, this is a documentation-only deprecation for now. Over time, we can - warn and then remove on use of unstable environment variables - warn on use of stable environment variables (no plan to remove due to compatibility) Longer term, we expect test runners, like `cargo test`, to provide the necessary mechanisms for environmental or persistent configuration (e.g. using cargo config which supports `.cargo/config.toml` as well as environment variables). This would include: - `RUST_TEST_THREADS` - `RUST_TEST_NOCAPTURE` - `RUST_TEST_SHUFFLE` (unstable) - `RUST_TEST_SHUFFLE_SEED` (unstable) The primary outcomes for this change are - Reducing the scope of what is expected for custom test harnesses to implement - Reduce the mechanisms that test runners, like `cargo test`, are expected to track when they are being bypassed to protect against negative interactions, e.g. `RUST_TEST_NOCAPTURE=1` when json output is being read. For testing-devex FCP, see rust-lang/testing-devex-team#10 Fixes rust-lang/testing-devex-team#10 History ------- At each step, I could not find evidence of design discussions on whether to support CLI, env, or both. The first env variable seems to come from the fact that it was being forked out of an existing env variable that had a much wider scope. At best, this seems like a way to offer a more persistent configuration for these flags but environment variables hidden away in libtest is a bit clunky and this seems like the wrong layer to handle this problem. **Originally:** `RUST_THREADS` was respected by the Rust runtime and libextra/test got this for free **2013:** rust-lang/rust#7335 suggested splitting `RUST_TEST_TASKS` out of `RUST_THREADS`. In that issue and the implementation (rust-lang/rust#8823). **2014:** rust-lang/rust#13374 ask for support to disable capturing of stdout/stderr. `--nocapture` and `RUST_TEST_NOCAPTURE` were added together. **2015:** rust-lang/rust#23525 renamed `RUST_TEST_TASKS` to `RUST_TEST_THREADS` **2016:** rust-lang/rust#25636 asked to configure `RUST_TEST_THREADS` via `--test-threads` which was implemented in rust-lang/rust#35414 **2021:** rust-lang/rust#85440 asked for test randomization which was implemented in rust-lang/rust#89082, adding `--shuffle` / RUST_TEST_SHUFFLE` and `--shuffle-seed SEED` / `RUST_TEST_SHUFFLE_SEED` Potentially relevant issues --------------------------- - rust-lang/rust#74845
2025-08-13Rollup merge of #144870 - Kivooeo:file_prefix-stabilize, r=tgross35Jakub Beránek-1/+1
Stabilize `path_file_prefix` feature This stabilises `Path::file_prefix`, following the FCP in [tracking issue ](https://github.com/rust-lang/rust/issues/86319) (FCP ended almost a year ago, so if it's needed for proccess we could rerun it) Closes: https://github.com/rust-lang/rust/issues/86319
2025-08-13Rollup merge of #144870 - Kivooeo:file_prefix-stabilize, r=tgross35Jakub Beránek-10/+3
Stabilize `path_file_prefix` feature This stabilises `Path::file_prefix`, following the FCP in [tracking issue ](https://github.com/rust-lang/rust/issues/86319) (FCP ended almost a year ago, so if it's needed for proccess we could rerun it) Closes: https://github.com/rust-lang/rust/issues/86319
2025-08-13Rollup merge of #144642 - lolbinarycat:editorconfig-no-run-make, r=lcnrJakub Beránek-1/+10
editorconfig: don't trim trailing whitespace in tests some test snapshot files require trailing whitespace, and previously manually editing those snapshot files (as is required for run-make tests and some platform-specific tests) in an editor with editorconfig support would cause that whitespace to be removed, [causing CI failures like this one](https://github.com/rust-lang/rust/pull/144596#issuecomment-3130442996)
2025-08-13Rollup merge of #144519 - clarfonthey:const-system-time, r=jhprattJakub Beránek-68/+166
Constify `SystemTime` methods This is separated out from rust-lang/rust#143949 due to the fact that it touches nontrivial system code. While the same arithmetic methods on `Instant` could be made const, since that type explicitly cannot be constructed at const-time, we don't bother. However, due to the fact that `SystemTime::UNIX_EPOCH` exists, it can be useful to create other anchors at other points in time, and thus these methods should be possible to use in const context. > Side comment: I would honestly like to just move every single implementation which is a thin wrapper over `Duration` or some integer clock into their own module which is tested on all targets, so that we don't have to worry about code for lower-tier targets not being tested. However, the comments in `std::sys_common` pointing out the desire to move things to `std::sys::common` confused me, particularly due to the fact that `std::sys::common` is taken from the hellish asterisk-import of `std::sys::pal::common` and others. > > I think that, for trivial types like this, we should just have a platform-independent module that can be tested on all platforms, to both ensure that the code is properly tested regardless of whether higher-tier platforms needed, and to avoid the extreme mental gymnastics required to determine where in the code it lies. > > However, since I'm not on any of the teams maintaining this code and am not involved, I'll settle for just copy-pasting like everyone else has been doing. I just want to express how I'm not happy about that. **Reviewer note: please only pay attention to the last commit of this PR, until its blocker is merged.** Since this depends on the previous PR: `@rustbot` blocked
2025-08-13Rollup merge of #143467 - ChaiTRex:ascii_char_is_ascii, r=tgross35Jakub Beránek-1/+611
Add ASCII-related methods from `u8` and `MIN`/`MAX` to `core::ascii::Char` * Add ASCII-related methods from `u8` to `core::ascii::Char`. * Add `core::ascii::Char::MIN` and `core::ascii::Char::MAX`.
2025-08-13Prepare for merging from rust-lang/rustThe Miri Cronjob Bot-1/+1
This updates the rust-version file to 1553adfe6884a8f6c28f5a673d3e605535ee0113.
2025-08-13Bump slab from 0.4.10 to 0.4.11 in /clippy_test_depsdependabot[bot]-2/+2
Bumps [slab](https://github.com/tokio-rs/slab) from 0.4.10 to 0.4.11. - [Release notes](https://github.com/tokio-rs/slab/releases) - [Changelog](https://github.com/tokio-rs/slab/blob/master/CHANGELOG.md) - [Commits](https://github.com/tokio-rs/slab/compare/v0.4.10...v0.4.11) --- updated-dependencies: - dependency-name: slab dependency-version: 0.4.11 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
2025-08-13Auto merge of #145093 - nikic:dead-on-return, r=nnethercotebors-6/+55
Set dead_on_return attribute for indirect arguments Set the dead_on_return attribute (added in LLVM 21) for arguments that are passed indirectly, but not byval. This indicates that the value of the argument on return does not matter, enabling additional dead store elimination. From LangRef: > This attribute indicates that the memory pointed to by the argument is dead upon function return, both upon normal return and if the calls unwinds, meaning that the caller will not depend on its contents. Stores that would be observable either on the return path or on the unwind path may be elided. > > Specifically, the behavior is as-if any memory written through the pointer during the execution of the function is overwritten with a poison value upon function return. The caller may access the memory, but any load not preceded by a store will return poison. > > This attribute does not imply aliasing properties. For pointer arguments that do not alias other memory locations, noalias attribute may be used in conjunction. Conversely, this attribute always implies dead_on_unwind. > > This attribute cannot be applied to return values. This fixes parts of https://github.com/rust-lang/rust/issues/96497.
2025-08-13Make std use the edition 2024 preludeTim (Theemathas) Chirananthavat-1/+1
This seem to have been overlooked in <https://github.com/rust-lang/rust/pull/138162>
2025-08-13Only import the item in "Unqualify method call" if neededChayim Refael Friedman-1/+122
2025-08-13Fix pgo testsywxt-5/+27
2025-08-13Fix parallel rustc not being reproducible due to unstable sorting of items.ywxt-83/+107
2025-08-13fix tail calls to `#[track_caller]` functionsWaffle Lapkin-8/+134
2025-08-12Auto merge of #145295 - Kobzol:unify-stages, r=jieyouxubors-266/+241
Consolidate stage directories and group logs in bootstrap My post-stage-0-redesign bootstrap fixes aren't done yet, but I think that enough steps have been migrated to the new system that it makes sense to actually modify the directories on disk, and what gets printed when bootstrap runs, so that it actually corresponds to the new system. Before, the printed stages didn't always make sense. This PR: - Fixes the numbering of `stageN` directories in the build directory. It was not corresponding to the correct stages before; notice that I did not modify `bootstrap/README.md`, as it was essentially describing what happens after this PR (first commit). - Unifies all steps that output a build group to use the `Builder::msg` method. It's probably not the final stage, and some of the test steps might not be fully accurate yet, because I didn't fix test step numbering yet, but I think that it's a clear improvement from before, and now that everything uses the same method, we can easily make changes across the board, to ensure that it stays unified (second commit). r? `@jieyouxu` try-job: dist-x86_64-msvc try-job: dist-x86_64-linux
2025-08-12Add cast_init and cast_uninit methods for pointersltdk-3/+74
2025-08-12fix `unnecessary_semicolon`: don't lint on stmts with attrs (#15466)dswij-1/+30
fixes https://github.com/rust-lang/rust-clippy/issues/15426 changelog: [`unnecessary_semicolon`]: don't lint on statements with attributes
2025-08-12Remove unused must_useMichael Goulet-198/+358
2025-08-12Allow cross-compiling the Cranelift dist componentJakub Beránek-1/+5
2025-08-12Constify SystemTime methodsltdk-68/+166
2025-08-12misc: use `Ty::is_unit`Ada Alakbarova-1/+1
2025-08-12get `DefId` from `AdtDef` instead of `expect`ingAda Alakbarova-5/+1
2025-08-12fix `unnecessary_semicolon`: don't lint on stmts with attrsAda Alakbarova-0/+29
2025-08-12Add change tracker entryJakub Beránek-0/+5
2025-08-12Replace `stage0-tools-bin` with `stage1-tools-bin`Jakub Beránek-5/+5
2025-08-12Change the desugaring of `assert!` for better error outputEsteban Küber-9/+16
In the desugaring of `assert!`, we now expand to a `match` expression instead of `if !cond {..}`. The span of incorrect conditions will point only at the expression, and not the whole `assert!` invocation. ``` error[E0308]: mismatched types --> $DIR/issue-14091.rs:2:13 | LL | assert!(1,1); | ^ expected `bool`, found integer ``` We no longer mention the expression needing to implement the `Not` trait. ``` error[E0308]: mismatched types --> $DIR/issue-14091-2.rs:15:13 | LL | assert!(x, x); | ^ expected `bool`, found `BytePos` ``` `assert!(val)` now desugars to: ```rust match val { true => {}, _ => $crate::panic::panic_2021!(), } ``` Fix #122159. We make some minor changes to some diagnostics to avoid span overlap on type mismatch or inverted "expected"/"found" on type errors. We remove some unnecessary parens from core, alloc and miri. address review comments
2025-08-12Change the desugaring of `assert!` for better error outputEsteban Küber-50/+134
In the desugaring of `assert!`, we now expand to a `match` expression instead of `if !cond {..}`. The span of incorrect conditions will point only at the expression, and not the whole `assert!` invocation. ``` error[E0308]: mismatched types --> $DIR/issue-14091.rs:2:13 | LL | assert!(1,1); | ^ expected `bool`, found integer ``` We no longer mention the expression needing to implement the `Not` trait. ``` error[E0308]: mismatched types --> $DIR/issue-14091-2.rs:15:13 | LL | assert!(x, x); | ^ expected `bool`, found `BytePos` ``` `assert!(val)` now desugars to: ```rust match val { true => {}, _ => $crate::panic::panic_2021!(), } ``` Fix #122159. We make some minor changes to some diagnostics to avoid span overlap on type mismatch or inverted "expected"/"found" on type errors. We remove some unnecessary parens from core, alloc and miri. address review comments
2025-08-12clippy: Update for switch to `MacroKinds`Josh Triplett-5/+3
This updates two clippy lints which had exceptions for `MacroKind::Bang` macros to extend those exceptions to any macro, now that a macro_rules macro can be any kind of macro.
2025-08-12rustdoc: Minimal fixes to compile with `MacroKinds`Josh Triplett-41/+70
This makes the minimal fixes necessary for rustdoc to compile and pass existing tests with the switch to `MacroKinds`. It only works for macros that don't actually have multiple kinds, and will panic (with a `todo!`) if it encounters a macro with multiple kinds. rustdoc needs further fixes to handle macros with multiple kinds, and to handle attributes and derive macros that aren't proc macros.
2025-08-12clippy: Update for switch to `MacroKinds`Josh Triplett-5/+3
This updates two clippy lints which had exceptions for `MacroKind::Bang` macros to extend those exceptions to any macro, now that a macro_rules macro can be any kind of macro.
2025-08-12mbe: Rename macro parsing state names to use `Bang` instead of `Not`Josh Triplett-9/+9
The use of `Not` to describe the `!` in `macro_rules!` reads confusingly, and also results in search collisions with the diagnostic structure `MacroRulesNot` elsewhere in the compiler. Rename it to use the more conventional `Bang` for `!`.
2025-08-12Detect and report macro kind mismatches early, and more preciselyJosh Triplett-29/+108
This eliminates the case in `failed_to_match_macro` to check for a function-like invocation of a macro with no function-like rules. Instead, macro kind mismatches now result in an unresolved macro, and we detect this case in `unresolved_macro_suggestions`, which now carefully distinguishes between a kind mismatch and other errors. This also handles cases of forward-referenced attributes and cyclic attributes. Expand test coverage to include all of these cases.
2025-08-12Only suggest changing `#[derive(mymacro)]` to `#[mymacro]` for attribute macrosJosh Triplett-8/+1
2025-08-12Expand documentation of `GlobDelegation`Josh Triplett-0/+2
I discovered this via research through the git log, and I want to leave additional guidance for future macro spelunkers.
2025-08-12Switch to a bitflags `MacroKinds` to support macros with more than one kindJosh Triplett-119/+212
Review everything that uses `MacroKind`, and switch anything that could refer to more than one kind to use `MacroKinds`. Add a new `SyntaxExtensionKind::MacroRules` for `macro_rules!` macros, using the concrete `MacroRulesMacroExpander` type, and have it track which kinds it can handle. Eliminate the separate optional `attr_ext`, now that a `SyntaxExtension` can handle multiple macro kinds. This also avoids the need to downcast when calling methods on `MacroRulesMacroExpander`, such as `get_unused_rule`. Integrate macro kind checking into name resolution's `sub_namespace_match`, so that we only find a macro if it's the right type, and eliminate the special-case hack for attributes.
2025-08-12Auto merge of #144678 - jdonszelmann:no-mangle-extern, r=bjorn3bors-55/+85
Make no_mangle on foreign items explicit instead of implicit for a followup PR I'm working on I need some foreign items to mangle. I could add a new attribute: `no_no_mangle` or something silly like that but by explicitly putting `no_mangle` in the codegen fn attrs of foreign items we can default it to `no_mangle` and then easily remove it when we don't want it. I guess you'd know about this r? `@bjorn3.` Shouldn't be too hard to review :) Builds on rust-lang/rust#144655 which should merge first.
2025-08-12Auto merge of #144678 - jdonszelmann:no-mangle-extern, r=bjorn3bors-1/+1
Make no_mangle on foreign items explicit instead of implicit for a followup PR I'm working on I need some foreign items to mangle. I could add a new attribute: `no_no_mangle` or something silly like that but by explicitly putting `no_mangle` in the codegen fn attrs of foreign items we can default it to `no_mangle` and then easily remove it when we don't want it. I guess you'd know about this r? `@bjorn3.` Shouldn't be too hard to review :) Builds on rust-lang/rust#144655 which should merge first.
2025-08-12Remove one dependency from tracing bootstrap buildJakub Beránek-131/+1
2025-08-12`too_many_lines`: only highlight the function signatureAda Alakbarova-40/+23
2025-08-12Merge pull request #20432 from ↵Chayim Refael Friedman-8/+102
sgasho/fix/20215_implement_default_member_to_resolve_ident_pat Fix "Implement default members" to resolve IdentPat