about summary refs log tree commit diff
path: root/src
AgeCommit message (Collapse)AuthorLines
2025-07-22Introduce `Symbol::with_interner`.Nicholas Nethercote-21/+29
It lets you get the contents of multiple symbols with a single TLS lookup and interner lock, instead of one per symbol.
2025-07-22Rollup merge of #144254 - ognevny:opt-dist-artifact-dir, r=Kobzol许杰友 Jieyou Xu (Joe)-2/+2
opt-dist: make `artifact-dir` an absolute path for `opt-dist local` ...like for CI environments. the same logic applied as for `build_dir`. fixes the issue where some intermediate steps fail due to path being relative to an active directory r? Kobzol try-job: dist-x86_64-msvc try-job: dist-x86_64-linux
2025-07-22Rollup merge of #144251 - tshepang:rdg-sync, r=jieyouxu许杰友 Jieyou Xu (Joe)-8/+8
rustc-dev-guide subtree update Subtree update of `rustc-dev-guide` to https://github.com/rust-lang/rustc-dev-guide/commit/cca233729f03d0c59456cd3e866f92681faf4c54. Created using https://github.com/rust-lang/josh-sync. r? ```@ghost```
2025-07-22Rollup merge of #144243 - lnicola:sync-from-ra, r=lnicola许杰友 Jieyou Xu (Joe)-28/+278
Subtree update of `rust-analyzer` r? ```@ghost```
2025-07-22Rollup merge of #144187 - RalfJung:type-id-base-addr, r=oli-obk许杰友 Jieyou Xu (Joe)-27/+37
fix handling of base address for TypeId allocations This fixes the problems discovered by ````@theemathas```` in https://github.com/rust-lang/rust/pull/142789: - const-eval would sometimes consider TypeId pointers to be null - the type ID is different in Miri than in regular executions Both boil down to the same issue: the TypeId "allocation" has a guaranteed 0 base address, but const-eval assumes it was non-zero (like normal allocations) and Miri randomized it (like normal allocations). r? ````@oli-obk````
2025-07-22Rollup merge of #144080 - jieyouxu:realign, r=BoxyUwU许杰友 Jieyou Xu (Joe)-3/+7
Mitigate `#[align]` name resolution ambiguity regression with a rename Mitigates beta regression rust-lang/rust#143834 after a beta backport. ### Background on the beta regression The name resolution regression arises due to rust-lang/rust#142507 adding a new feature-gated built-in attribute named `#[align]`. However, unfortunately even [introducing new feature-gated unstable built-in attributes can break user code](https://www.github.com/rust-lang/rust/issues/134963) such as ```rs macro_rules! align { () => { /* .. */ }; } pub(crate) use align; // `use` here becomes ambiguous ``` ### Mitigation approach This PR renames `#[align]` to `#[rustc_align]` to mitigate the beta regression by: 1. Undoing the introduction of a new built-in attribute with a common name, i.e. `#[align]`. 2. Renaming `#[align]` to `#[rustc_align]`. The renamed attribute being `rustc_align` will not introduce new stable breakages, as attributes beginning with `rustc` are reserved and perma-unstable. This does mean existing nightly code using `fn_align` feature will additionally need to specify `#![feature(rustc_attrs)]`. This PR is very much a short-term mitigation to alleviate time pressure from having to fully fix the current limitation of inevitable name resolution regressions that would arise from adding any built-in attributes. Long-term solutions are discussed in [#t-lang > namespacing macro attrs to reduce conflicts with new adds](https://rust-lang.zulipchat.com/#narrow/channel/213817-t-lang/topic/namespacing.20macro.20attrs.20to.20reduce.20conflicts.20with.20new.20adds/with/529249622). ### Alternative mitigation options [Various mitigation options were considered during the compiler triage meeting](https://github.com/rust-lang/rust/issues/143834#issuecomment-3084415277), and those consideration are partly reproduced here: - Reverting the PR doesn't seem very minimal/trivial, and carries risks of its own. - Rename to a less-common but aim-to-stabilization name is itself not safe nor convenient, because (1) that risks introducing new regressions (i.e. ambiguity against the new name), and (2) lang would have to FCP the new name hastily for the mitigation to land timely and have a chance to be backported. This also makes the path towards stabilization annoying. - Rename the attribute to a rustc attribute, which will be perma-unstable and does not cause new ambiguities in stable code. - This alleviates the time pressure to address *this* regression, or for lang to have to rush an FCP for some new name that can still break user code. - This avoids backing out a whole implementation. ### Review advice This PR is best reviewed commit-by-commit. - Commit 1 adds a test `tests/ui/attributes/fn-align-nameres-ambiguity-143834.rs` which demonstrates the current name resolution regression re. `align`. This test fails against current master. - Commit 2 carries out the renames and test reblesses. Notably, commit 2 will cause `tests/ui/attributes/fn-align-nameres-ambiguity-143834.rs` to change from fail (nameres regression) to pass. This PR, if the approach still seems acceptable, will need a beta-backport to address the beta regression.
2025-07-22Rollup merge of #144027 - RalfJung:clippy, r=Mark-Simulacrum许杰友 Jieyou Xu (Joe)-63/+84
clippy: make tests work in stage 1 This finally fixes https://github.com/rust-lang/rust/issues/78717 :) Similar to what Miri already does, the clippy test step needs to carefully consider which compiler is used to build clippy and which compiler is linked into clippy (and thus must be used to build the test dependencies). On top of that we have some extra complications that Miri avoided by using `cargo-miri` for building its test dependencies: we need cargo to use the right rustc and the right sysroot, but https://github.com/rust-lang/cargo/issues/4423 makes this quite hard to do. See the long comment in `src/tools/clippy/tests/compile-test.rs` for details. Some clippy tests tried to import rustc crates; that fundamentally requires a full bootstrap loop so it cannot work in stage 1. I had to kind of guess what those tests were doing so I don't know if my changes there make any sense. Cc ```@flip1995``` ```@Kobzol```
2025-07-22Rollup merge of #143816 - Kobzol:compiletest-check-macro, r=jieyouxu许杰友 Jieyou Xu (Joe)-140/+63
Implement `check` for compiletest and RA using tool macro Small cleanup to reduce the number of places that require custom check steps. Of course I had to include one mini hack because of Rust Analyzer.. but I think it's worth it here. r? ````@jieyouxu````
2025-07-22Rollup merge of #142097 - ZuseZ4:offload-host1, r=oli-obk许杰友 Jieyou Xu (Joe)-0/+8
gpu offload host code generation r? ghost This will generate most of the host side code to use llvm's offload feature. The first PR will only handle automatic mem-transfers to and from the device. So if a user calls a kernel, we will copy inputs back and forth, but we won't do the actual kernel launch. Before merging, we will use LLVM's Info infrastructure to verify that the memcopies match what openmp offloa generates in C++. `LIBOMPTARGET_INFO=-1 ./my_rust_binary` should print that a memcpy to and later from the device is happening. A follow-up PR will generate the actual device-side kernel which will then do computations on the GPU. A third PR will implement manual host2device and device2host functionality, but the goal is to minimize cases where a user has to overwrite our default handling due to performance issues. I'm trying to get a full MVP out first, so this just recognizes GPU functions based on magic names. The final frontend will obviously move this over to use proper macros, like I'm already doing it for the autodiff work. This work will also be compatible with std::autodiff, so one can differentiate GPU kernels. Tracking: - https://github.com/rust-lang/rust/issues/131513
2025-07-21opt-dist: make `artifact-dir` an absolute path for `opt-dist local`Maksim Bondarenkov-2/+2
...like for CI environments. the same logic applied as for `build_dir`. fixes the issue where some intermediate steps fail due to path being relative to an active directory
2025-07-21Merge pull request #2512 from rust-lang/rustc-pullTshepang Mbambo-2309/+5418
Rustc pull update
2025-07-21fix some typosTshepang Mbambo-6/+6
2025-07-21Auto merge of #144238 - jhpratt:rollup-xb8aida, r=jhprattbors-692/+1370
Rollup of 8 pull requests Successful merges: - rust-lang/rust#144144 (tests: Skip supported-crate-types test on musl hosts) - rust-lang/rust#144159 (opt-dist: change build_dir field to be an actual build dir) - rust-lang/rust#144162 (Debug impls for DropElaborators) - rust-lang/rust#144189 (Add non-regression test for rust-lang/rust#144168) - rust-lang/rust#144216 (Don't consider unstable fields always-inhabited) - rust-lang/rust#144229 (Miri subtree update) - rust-lang/rust#144230 (Option::as_slice: fix comment) - rust-lang/rust#144235 (Fix run-make tests on musl hosts) r? `@ghost` `@rustbot` modify labels: rollup
2025-07-21Downgrade ra-ap-rustc_parse_formatLaurențiu Nicola-17/+22
2025-07-21Revert "Bump rustc-literal-escaper"Laurențiu Nicola-6/+12
This reverts commit 9f3adc540b51a4c2d0472d94033f6d9147b36f6e.
2025-07-21Bump rustc-literal-escaperLaurențiu Nicola-12/+6
2025-07-21Bump rustc cratesLaurențiu Nicola-22/+28
2025-07-21Merge from rust-lang/rustLaurențiu Nicola-3867/+3502
2025-07-21Preparing for merge from rust-lang/rustLaurențiu Nicola-1/+1
2025-07-21Merge pull request #20256 from A4-Tacks/gen-mut-trait-derefShoyu Vanilla (Flint)-0/+37
Add Deref -> DerefMut for generate_mut_trait_impl
2025-07-21Merge pull request #20262 from ChayimFriedman2/goto-ref-rawShoyu Vanilla (Flint)-2/+45
fix: Fix search of raw labels and lifetimes
2025-07-21Merge ref '460259d14de0' from rust-lang/rustThe rustc-josh-sync Cronjob Bot-2308/+5417
Pull recent changes from https://github.com/rust-lang/rust via Josh. Upstream ref: 460259d14de0274b97b8801e08cb2fe5f16fdac5 Filtered ref: 599ee17eb87c83f97eb37fd9fe264da65d4c9461 This merge was created using https://github.com/rust-lang/josh-sync.
2025-07-21Prepare for merging from rust-lang/rustThe rustc-josh-sync Cronjob Bot-1/+1
This updates the rust-version file to 460259d14de0274b97b8801e08cb2fe5f16fdac5.
2025-07-20Rollup merge of #144235 - Gelbpunkt:run-make-musl, r=jieyouxuJacob Pratt-1/+8
Fix run-make tests on musl hosts On musl hosts, we already set `-Ctarget-feature=-crt-static` and `IS_MUSL_HOST=1` in compiletest. However, in order for the run-make tests to compile fine on musl hosts, we need to propagate this flag in our rustc invocations to ensure we can generate cdylibs.
2025-07-20Rollup merge of #144229 - RalfJung:miri-sync, r=RalfJungJacob Pratt-684/+1349
Miri subtree update r? `@ghost`
2025-07-20Rollup merge of #144159 - ognevny:opt-dist-build-dir, r=KobzolJacob Pratt-7/+13
opt-dist: change build_dir field to be an actual build dir make it configurable so users can set build.build-dir option in bootstrap.toml r? Kobzol try-job: dist-x86_64-msvc try-job: dist-x86_64-linux
2025-07-21Auto merge of #143833 - scottmcm:final-mcp-838, r=compiler-errorsbors-8/+14
Ban projecting into SIMD types [MCP838] Closes https://github.com/rust-lang/compiler-team/issues/838 The actual compiler change here is tiny; there's just a bazillion tests to update. ~~Since I'm sure I've missed some, for now~~ ~~r ghost~~ try-job: test-various try-job: x86_64-gnu-nopt
2025-07-21Fix run-make tests on musl hostsJens Reidel-1/+8
On musl hosts, we already set -Ctarget-feature=-crt-static and IS_MUSL_HOST=1 in compiletest. However, in order for the run-make tests to compile fine on musl hosts, we need to propagate this flag in our rustc invocations to ensure we can generate cdylibs. Signed-off-by: Jens Reidel <adrian@travitia.xyz>
2025-07-20clippy: make tests work in stage 1Ralf Jung-63/+84
2025-07-20Implement `check::RustAnalyzer` using the `tool_check_step` macroJakub Beránek-69/+25
2025-07-20fix handling of base address for TypeId allocationsRalf Jung-27/+37
2025-07-20opt-dist: change build_dir field to be an actual build dirognevnydemon-7/+13
make it configurable so users can set build.build-dir option in bootstrap.toml
2025-07-20Update Miri TestsScott McMurray-8/+14
2025-07-20Auto merge of #143861 - rust-lang:cargo_update, r=clubby789bors-28/+27
Weekly `cargo update` Automation to keep dependencies in `Cargo.lock` current. r? dep-bumps The following is the output from `cargo update`: ```txt compiler & tools dependencies: Locking 15 packages to latest compatible versions Updating chrono-tz v0.10.3 -> v0.10.4 Removing chrono-tz-build v0.4.1 Updating clap v4.5.40 -> v4.5.41 Updating clap_builder v4.5.40 -> v4.5.41 Updating clap_derive v4.5.40 -> v4.5.41 Updating crc32fast v1.4.2 -> v1.5.0 Updating derive_setters v0.1.7 -> v0.1.8 Updating libredox v0.1.4 -> v0.1.6 Updating measureme v12.0.1 -> v12.0.3 Removing parse-zoneinfo v0.3.1 Adding phf v0.12.1 Adding phf_shared v0.12.1 Updating rustix v1.0.7 -> v1.0.8 Updating serde_json v1.0.140 -> v1.0.141 Updating sysinfo v0.36.0 -> v0.36.1 Updating wasi-preview1-component-adapter-provider v34.0.1 -> v34.0.2 Updating winnow v0.7.11 -> v0.7.12 note: pass `--verbose` to see 39 unchanged dependencies behind latest library dependencies: Locking 0 packages to latest compatible versions note: pass `--verbose` to see 3 unchanged dependencies behind latest rustbook dependencies: Locking 13 packages to latest compatible versions Updating ammonia v4.1.0 -> v4.1.1 Updating cc v1.2.29 -> v1.2.30 Updating clap v4.5.40 -> v4.5.41 Updating clap_builder v4.5.40 -> v4.5.41 Updating clap_complete v4.5.54 -> v4.5.55 Updating clap_derive v4.5.40 -> v4.5.41 Updating crc32fast v1.4.2 -> v1.5.0 Updating html5ever v0.31.0 -> v0.35.0 Updating markup5ever v0.16.2 -> v0.35.0 Updating match_token v0.1.0 -> v0.35.0 Updating rustix v1.0.7 -> v1.0.8 Updating serde_json v1.0.140 -> v1.0.141 Updating winnow v0.7.11 -> v0.7.12 ```
2025-07-20Rollup merge of #144190 - scottmcm:spanned-errors-in-mir-validation, r=RalfJungGuillaume Gomez-4/+10
Give a message with a span on MIR validation error It was handy to get a source+line link for rust-lang/rust#143833, even if it's just to the function and not necessarily to the statement. r? mir
2025-07-20Rollup merge of #144125 - GuillaumeGomez:new-annotations, r=KobzolGuillaume Gomez-2/+106
Add new `ignore-backends` and `needs-backends` tests annotations Part of https://github.com/rust-lang/compiler-team/issues/891. Next step will be to add these annotations in the files where either the output is different based on the codegen (like `asm` tests) or that are known to fail in the GCC backend. cc `@oli-obk` `@antoyo` r? `@Kobzol`
2025-07-20Rollup merge of #144112 - Enselic:no-debuginfo-in-codegen, r=Mark-SimulacrumGuillaume Gomez-1/+18
bootstrap: Ignore `rust.debuginfo-level-tests` for codegen tests As dicussed in https://github.com/rust-lang/rust/issues/61117#issuecomment-495587364, codegen tests typically depend on the raw LLVM IR output and are sensitive to debuginfo level. So do not apply `rust.debuginfo-level-tests` for codegen tests. Before this commit: $ ./x test --set rust.debuginfo-level-tests=2 tests/codegen --force-rerun test result: FAILED. 654 passed; 136 failed; 75 ignored; 0 measured; 0 filtered out; finished in 3.22s After this commit: $ ./x test --set rust.debuginfo-level-tests=2 tests/codegen --force-rerun NOTE: ignoring `rust.debuginfo-level-tests=2` for codegen tests test result: ok. 790 passed; 0 failed; 75 ignored; 0 measured; 0 filtered out; finished in 3.21s ### Run this in CI? Maybe it will make sense to add this to CI later but I think it is too early to do now before more non-codegen tests work with `rust.debuginfo-level-tests=2`.
2025-07-20Rollup merge of #144011 - Zalathar:check-compiler-no-llvm, r=KobzolGuillaume Gomez-28/+32
bootstrap: Don't trigger an unnecessary LLVM build from check builds Coming back to r-l/r development after a few weeks away, I found a major regression in my dev workflows: running `x check compiler` (either manually or via rust-analyzer) would have the side-effect of building LLVM, even though that shouldn't be necessary. For my main build directory this would be a minor annoyance, but for my separate rust-analyzer build directory it's a huge problem because it causes a completely separate build of LLVM, which takes a long time and should be completely unnecessary. --- After some investigation, I tracked down the problem to the `can_skip_build` check in this code: https://github.com/rust-lang/rust/blob/3014e79f9c8d5510ea7b3a3b70d171d0948b1e96/src/bootstrap/src/core/build_steps/compile.rs#L1382-L1396 Historically, this would skip the LLVM build for stage 0 check builds. But after the recent stage 0 std redesign and some associated check stage renumbering (e.g. rust-lang/rust#143048), the condition `builder.top_stage == build_stage` is now false, because `top_stage` is 1 (due to the renumbering) but `build_stage` is 0 (because a “stage 1” non-library check build still uses the stage 0 compiler). --- Because this is a critical contributor roadblock for me, I have tried to fix this in a relatively narrow way. It's possible that all of this surrounding logic could be greatly simplified (especially in light of the stage redesign changes), but I didn't want this fix to be held back by scope creep. --- (Zulip thread: https://rust-lang.zulipchat.com/#narrow/channel/326414-t-infra.2Fbootstrap/topic/Bootstrap.20incorrectly.20building.20LLVM.20for.20check.20builds/near/528991035)
2025-07-20Add new `needs-backends` tests annotationsGuillaume Gomez-0/+26
2025-07-20Add new `ignore-backends` tests annotationsGuillaume Gomez-2/+80
2025-07-20Merge pull request #20255 from A4-Tacks/deref-intranstiveLaurențiu Nicola-2/+25
Fix ide-assist: generate Deref transitive
2025-07-20Auto merge of #144208 - matthiaskrgr:rollup-wrli87h, r=matthiaskrgrbors-148/+197
Rollup of 11 pull requests Successful merges: - rust-lang/rust#141260 (Allow volatile access to non-Rust memory, including address 0) - rust-lang/rust#143604 (Stabilize `const_float_round_methods`) - rust-lang/rust#143988 ([rustdoc] Make aliases search support partial matching) - rust-lang/rust#144078 (Fix debuginfo-lto-alloc.rs test) - rust-lang/rust#144111 (Remove deprecated `MaybeUninit` slice methods) - rust-lang/rust#144116 (Fixes for LLVM 21) - rust-lang/rust#144134 (Cleanup unicode table gen) - rust-lang/rust#144142 (Add implicit sized bound to trait ascription types) - rust-lang/rust#144148 (Remove pretty print hack for async blocks) - rust-lang/rust#144169 (interpret: fix TypeId pointers being considered data pointers) - rust-lang/rust#144196 (Initialize mingw for the runner's user) r? `@ghost` `@rustbot` modify labels: rollup
2025-07-20Support `cfg_select!`Chayim Refael Friedman-1/+139
2025-07-20Rollup merge of #144196 - ChrisDenton:init-mingw, r=mati865Matthias Krüger-0/+5
Initialize mingw for the runner's user This is apparently the more proper fix to https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/Spurious.20bors.20CI.20failures/near/528915775 But let's see if it works.
2025-07-20Rollup merge of #144169 - RalfJung:type-id-fix, r=oli-obkMatthias Krüger-4/+23
interpret: fix TypeId pointers being considered data pointers Fixes https://github.com/rust-lang/miri/issues/4477 r? ````@oli-obk````
2025-07-20Rollup merge of #144134 - hkBst:cleanup-unicode-table-gen, r=Mark-SimulacrumMatthias Krüger-45/+38
Cleanup unicode table gen Fixing clippy warnings and moving to edition 2024.
2025-07-20Rollup merge of #143988 - GuillaumeGomez:alias-inexact, r=lolbinarycatMatthias Krüger-99/+131
[rustdoc] Make aliases search support partial matching Fixes rust-lang/rust#140782. To make this work, I moved aliases into the `searchIndex` like any other item. It links to the "original" item with a new `original` field. No so great part is that we need to have some fields like `bitIndex` to be set on the alias to make the description load to work but I consider it minor enough to be ok. This PR voluntarily doesn't handle de-prioritization of aliases as ```@lolbinarycat``` wished to work on this so I'll leave them this part. :wink: cc ```@lolbinarycat```
2025-07-20Auto merge of #144068 - dianqk:update-llvm, r=cuviperbors-0/+0
Update LLVM submodule Fixes for https://rust-lang.zulipchat.com/#narrow/stream/187780-t-compiler.2Fllvm/topic/Backporting.20LLVM.20fix.20for.20Wasm.20EH.3F/near/528879210.
2025-07-20Merge from rustcThe Miri Cronjob Bot-579/+1045
2025-07-20Preparing for merge from rustcThe Miri Cronjob Bot-1/+1