Commit graph

298901 commits

Author SHA1 Message Date
Lukas Wirth
e01f53fd56
Merge pull request #19992 from Veykril/push-uxpqwrxqtlvm
Use `ThinVec` in `ItemScope` in a couple places
2025-06-13 13:45:31 +00:00
Lukas Wirth
2eea0f8c05 Use ThinVec in ItemScope in a couple places 2025-06-13 15:34:03 +02:00
Lukas Wirth
44092665c6
Merge pull request #19991 from Veykril/push-kzqoxzmxqnkl
perf: Bring back `EMPTY` item tree deduplication
2025-06-13 13:12:19 +00:00
bit-aloo
da0cceebf0
replace output usage in sanity with new execution context 2025-06-13 18:29:48 +05:30
Sasha Pourcelot
527f35a28f doc: mention that intrinsics should not be called in user code
Intrinsic functions declared in `std::intrinsics` are an implementation
detail and should not be called directly by the user. The compiler
explicitly warns against their use in user code:

```
warning: the feature `core_intrinsics` is internal to the compiler or standard library
 --> src/lib.rs:1:12
  |
1 | #![feature(core_intrinsics)]
  |            ^^^^^^^^^^^^^^^
  |
  = note: using it is strongly discouraged
  = note: `#[warn(internal_features)]` on by default
```

[**Playground link**]

This PR documents what the compiler warning says: these intrinsics should
not be called outside the standard library.

[**Playground link**]: https://play.rust-lang.org/?version=nightly&mode=debug&edition=2024&gist=1c893b0698291f550bbdde0151fd221b
2025-06-13 14:58:28 +02:00
Lukas Wirth
dd7f93ef77 Bring back EMPTY item tree deduplication 2025-06-13 14:51:23 +02:00
Jana Dönszelmann
6f5a717a6c
collect delayed lints in hir_crate_items 2025-06-13 14:03:01 +02:00
bors
c359117819 Auto merge of #142442 - matthiaskrgr:rollup-6yodjfx, r=matthiaskrgr
Rollup of 10 pull requests

Successful merges:

 - rust-lang/rust#134847 (Implement asymmetrical precedence for closures and jumps)
 - rust-lang/rust#141491 (Delegate `<CStr as Debug>` to `ByteStr`)
 - rust-lang/rust#141770 (Merge `Cfg::render_long_html` and `Cfg::render_long_plain` methods common code)
 - rust-lang/rust#142069 (Introduce `-Zmacro-stats`)
 - rust-lang/rust#142158 (Tracking the old name of renamed unstable library features)
 - rust-lang/rust#142221 ([AIX] strip underlying xcoff object)
 - rust-lang/rust#142340 (miri: we can use apfloat's mul_add now)
 - rust-lang/rust#142379 (Add bootstrap option to compile a tool with features)
 - rust-lang/rust#142410 (intrinsics: rename min_align_of to align_of)
 - rust-lang/rust#142413 (rustc-dev-guide subtree update)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-06-13 11:42:31 +00:00
Lukas Wirth
e1e7f59ef9
Merge pull request #19990 from Veykril/push-zkvrlrotmuzr
Generate annotations for macro defined items if their name is in the input
2025-06-13 11:41:26 +00:00
Lukas Wirth
4b61ff7237 Generate annotations for macro defined items if their name is in the input 2025-06-13 13:30:09 +02:00
Lukas Wirth
777fdacb54
Merge pull request #19982 from Veykril/push-uptnmqtlylsx
Simplify and optimize `ItemTree`
2025-06-13 11:16:24 +00:00
Lukas Wirth
63e1707119 Remove unnecessary item tree query calls 2025-06-13 13:05:52 +02:00
Philipp Krones
7e25bb163c Move COERCE_CONTAINER_TO_ANY to nursery, as it has FPs 2025-06-13 12:55:22 +02:00
Philipp Krones
9cb0a64e51
Move COERCE_CONTAINER_TO_ANY to nursery, as it has FPs 2025-06-13 12:55:22 +02:00
Jonathan Brouwer
3160dfa5dc
Add failing tests 2025-06-13 12:38:16 +02:00
Chris Denton
595e88ae7d
Windows: make read_dir stop iterating on error 2025-06-13 09:49:48 +00:00
Philipp Krones
cbd683fe31 Merge commit '4ef75291b5' into clippy-subtree-update 2025-06-13 11:24:45 +02:00
Philipp Krones
8fe9c2cc6b
Merge commit '4ef75291b5' into clippy-subtree-update 2025-06-13 11:24:45 +02:00
Chris Denton
ae645fc0b8
Remove "intermittent" wording from ReadDir 2025-06-13 09:14:15 +00:00
Ralf Jung
25ec235b86 tweak runtime/const macro management 2025-06-13 10:22:56 +02:00
Philipp Krones
4ef75291b5
Rustup (#15044)
r? @ghost

changelog: none
2025-06-13 08:22:55 +00:00
Lukas Wirth
43d86181c0
Merge pull request #19989 from Veykril/push-xrqwoukkltnm
`cargo update` and `cargo upgrade`
2025-06-13 08:19:08 +00:00
Philipp Krones
19c2f0332c
Bump nightly version -> 2025-06-13 2025-06-13 10:17:27 +02:00
Philipp Krones
85655d4a09
Merge remote-tracking branch 'upstream/master' into rustup 2025-06-13 10:17:14 +02:00
Lukas Wirth
05b7cdcf8e cargo upgrade 2025-06-13 10:08:20 +02:00
Oli Scherer
bb2b765702 Require generic params for const generic params 2025-06-13 07:48:00 +00:00
Lukas Wirth
68f6a23c58 cargo update
Updating adler2 v2.0.0 -> v2.0.1
    Updating anyhow v1.0.97 -> v1.0.98
    Updating bitflags v2.9.0 -> v2.9.1
    Updating borsh v1.5.5 -> v1.5.7
    Updating boxcar v0.2.12 -> v0.2.13
    Updating camino v1.1.9 -> v1.1.10
    Updating cc v1.2.16 -> v1.2.26
    Updating cfg-if v1.0.0 -> v1.0.1
    Updating flate2 v1.1.1 -> v1.1.2
    Updating foldhash v0.1.4 -> v0.1.5
    Updating getrandom v0.2.15 -> v0.2.16
    Updating hashbrown v0.15.2 -> v0.15.4
    Updating hermit-abi v0.3.9 -> v0.5.2
    Updating icu_collections v1.5.0 -> v2.0.0
      Adding icu_locale_core v2.0.0
    Removing icu_locid v1.5.0
    Removing icu_locid_transform v1.5.0
    Removing icu_locid_transform_data v1.5.0
    Updating icu_normalizer v1.5.0 -> v2.0.0
    Updating icu_normalizer_data v1.5.0 -> v2.0.0
    Updating icu_properties v1.5.1 -> v2.0.1
    Updating icu_properties_data v1.5.0 -> v2.0.1
    Updating icu_provider v1.5.0 -> v2.0.0
    Removing icu_provider_macros v1.5.0
    Updating idna_adapter v1.2.0 -> v1.2.1
    Updating kqueue v1.0.8 -> v1.1.1
    Updating libloading v0.8.7 -> v0.8.8
    Updating libmimalloc-sys v0.1.40 -> v0.1.42
    Updating litemap v0.7.5 -> v0.8.0
    Updating lock_api v0.4.12 -> v0.4.13
    Updating log v0.4.26 -> v0.4.27
    Updating memchr v2.7.4 -> v2.7.5
    Updating mimalloc v0.1.44 -> v0.1.46
    Updating miniz_oxide v0.8.5 -> v0.8.9
    Updating mio v1.0.3 -> v1.0.4
    Updating num_cpus v1.16.0 -> v1.17.0
    Updating once_cell v1.21.1 -> v1.21.3
    Updating parking_lot v0.12.3 -> v0.12.4
    Updating parking_lot_core v0.9.10 -> v0.9.11
    Updating portable-atomic v1.11.0 -> v1.11.1
      Adding potential_utf v0.1.2
    Updating proc-macro2 v1.0.94 -> v1.0.95
    Updating redox_syscall v0.5.10 -> v0.5.13
    Updating rustc-demangle v0.1.24 -> v0.1.25
    Updating rustc_apfloat v0.2.2+llvm-462a31f5a5ab -> v0.2.3+llvm-462a31f5a5ab
    Updating serde_spanned v0.6.8 -> v0.6.9
    Updating smallvec v1.14.0 -> v1.15.1
    Updating syn v2.0.100 -> v2.0.103
    Updating synstructure v0.13.1 -> v0.13.2
    Updating tenthash v1.0.0 -> v1.1.0
    Updating thread_local v1.1.8 -> v1.1.9
    Updating time v0.3.40 -> v0.3.41
    Updating time-macros v0.2.21 -> v0.2.22
    Updating tinystr v0.7.6 -> v0.8.1
    Updating toml v0.8.20 -> v0.8.23
    Updating toml_datetime v0.6.8 -> v0.6.11
    Updating toml_edit v0.22.24 -> v0.22.27
      Adding toml_write v0.1.2
    Updating tracing-attributes v0.1.28 -> v0.1.29
    Updating tracing-core v0.1.33 -> v0.1.34
    Removing utf16_iter v1.0.5
    Updating wasi v0.11.0+wasi-snapshot-preview1 -> v0.11.1+wasi-snapshot-preview1
    Updating windows v0.61.1 -> v0.61.3
    Updating windows-core v0.61.0 -> v0.61.2
    Updating windows-future v0.2.0 -> v0.2.1
    Updating windows-link v0.1.1 -> v0.1.3
    Updating windows-result v0.3.2 -> v0.3.4
    Updating windows-strings v0.4.0 -> v0.4.2
      Adding windows-sys v0.60.2
    Updating windows-targets v0.53.0 -> v0.53.2
      Adding windows-threading v0.1.0
    Updating winnow v0.7.3 -> v0.7.11
    Removing write16 v1.0.0
    Updating writeable v0.5.5 -> v0.6.1
    Updating yoke v0.7.5 -> v0.8.0
    Updating yoke-derive v0.7.5 -> v0.8.0
      Adding zerotrie v0.2.2
    Updating zerovec v0.10.4 -> v0.11.2
    Updating zerovec-derive v0.10.3 -> v0.11.1
2025-06-13 09:46:52 +02:00
Mara Bos
855ea48ccc Add test for temporary lifetime extension in Self() syntax. 2025-06-13 09:20:55 +02:00
Mara Bos
578fa8e945 Add tests. 2025-06-13 09:20:55 +02:00
Mara Bos
e71a93b5c2 Add comment. 2025-06-13 09:20:55 +02:00
Mara Bos
ff5ba7aa74 Update tests. 2025-06-13 09:20:48 +02:00
Mara Bos
99929fa9e6 Implement temporary lifetime extension for tuple ctors. 2025-06-13 09:04:12 +02:00
Lukas Wirth
4f1a07ca58 Remove ast ids from item tree mod items 2025-06-13 08:47:25 +02:00
dianqk
4b2e77bd74
Update to LLVM 20.1.7 2025-06-13 14:44:34 +08:00
Lukas Wirth
e39c1e971b Split mod items into small and big variants 2025-06-13 08:24:50 +02:00
Lukas Wirth
d052450526 Store item tree visibilities in a thin vec 2025-06-13 08:09:57 +02:00
Samuel Tardieu
6662aedb86
[PERF] Optimize 3rd heaviest func, (81b -> 10m) (#15043)
So this is funny, the query `tcx.module_children` was top 3 in most
time consuming functions in Clippy, it was being called 24384 times in
tokio. "Unacceptable!" I thought. Digging a bit around, turns out that
`clippy::strlen_on_c_strings` was calling for `get_def_path` via
`match_libc_symbol`. This query pretty-prints things and performs some
analysis.

Yes, we were running early lint checks to see if symbols were from
`libc`.
I don't really trust callgrind when it says I've turn 81 billion
instructions
into like 10 million. So I benchmarked this the good ol' "compiling 20
times
without incr" method and it went from 0.31s-0.45s to 0.25s
constistently.

(Profiled, and "benchmarked") on tokio.

What I can get behind is via `strlen_on_c_strings` changing from 31
million instructions into 76k. 🎉 🥳

changelog: [`strlen_on_c_strings`]: Optimize it by 99.75%
2025-06-13 06:09:14 +00:00
Laurențiu Nicola
647705e880
Merge pull request #19988 from Kobzol/fix-label-link
Fix link to good first issues
2025-06-13 06:06:39 +00:00
Jakub Beránek
f6b64d1533
Fix link to good first issues 2025-06-13 07:55:07 +02:00
qinghon
013e06c5ff
Eliminate build.rs-generated Aarch64 atomic macros (#951)
Replace `build.rs` Rust generation with macros, using the unstable
`${concat(...)}`.

Fixes: https://github.com/rust-lang/compiler-builtins/issues/947
2025-06-13 01:27:47 -04:00
bors
015c7770ec Auto merge of #142432 - matthiaskrgr:rollup-ziuls9y, r=matthiaskrgr
Rollup of 6 pull requests

Successful merges:

 - rust-lang/rust#138016 (Added `Clone` implementation for `ChunkBy`)
 - rust-lang/rust#141162 (refactor  `AttributeGate` and `rustc_attr!` to emit notes during feature checking)
 - rust-lang/rust#141474 (Add `ParseMode::Diagnostic` and fix multiline spans in diagnostic attribute lints)
 - rust-lang/rust#141947 (Specify that "option-like" enums must be `#[repr(Rust)]` to be ABI-compatible with their non-1ZST field.)
 - rust-lang/rust#142252 (Improve clarity of `core::sync::atomic` docs about "Considerations" in regards to CAS operations)
 - rust-lang/rust#142337 (miri: add flag to suppress float non-determinism)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-06-13 05:09:09 +00:00
Jakub Beránek
9d642fe6f3
Pre-install eslint in mingw-check-tidy Dockerfile 2025-06-13 06:54:36 +02:00
Matthias Krüger
71490fff31
Rollup merge of #142308 - tgross35:upgrade-library-object, r=Mark-Simulacrum
Upgrade `object`, `addr2line`, and `unwinding` in the standard library

Object:

0.37.0 is a semver-breaking release but the only breakage is in `elf::R_RISCV_GNU_*` and `pe::IMAGE_WEAK_EXTERN_*` constants, as well as Mach-O dyld. This API is not used by `std`, so we should be fine to upgrade.

This new version also includes functionality for parsing Wasm object files that we may eventually like to make use of.

Changelog: https://github.com/gimli-rs/object/blob/master/CHANGELOG.md#0370

Addr2line:

0.25.0 is a breaking change only because it upgrades the `gimli` version. It also includes a change to the `compiler-builtins` dependency that helps with [1].

Changelog: https://github.com/gimli-rs/addr2line/blob/master/CHANGELOG.md#0250-20250611

[1]: https://github.com/rust-lang/rust/issues/142265
2025-06-13 05:19:18 +02:00
Matthias Krüger
6c0a896de2
Rollup merge of #142276 - tgross35:update-library-lockfile, r=Mark-Simulacrum
Update dependencies in `library/Cargo.lock`

This removes the `compiler_builtins` dependency from a handful of library dependencies, which is progress toward [1].

[1]: https://github.com/rust-lang/rust/issues/142265
2025-06-13 05:19:17 +02:00
Matthias Krüger
e8bdbac823
Rollup merge of #142274 - tgross35:update-stdarch, r=Amanieu
Update the stdarch submodule

Includes the following changes:

* Add s390x z17 target features [1]
* Remove `compiler-builtins` from `rustc-dep-of-std` dependencies [2]
* Darwin AArch64 detection update [3]
* Fixes for the latest nightly [4]
* Add a lockfile [5]

[1]: https://github.com/rust-lang/stdarch/pull/1826
[2]: https://github.com/rust-lang/stdarch/pull/1825
[3]: https://github.com/rust-lang/stdarch/pull/1827
[4]: https://github.com/rust-lang/stdarch/pull/1830
[5]: https://github.com/rust-lang/stdarch/pull/1829
2025-06-13 05:19:17 +02:00
Matthias Krüger
6a09b67bdc
Rollup merge of #142267 - workingjubilee:debug-assert-less-in-ast-lowering, r=oli-obk
assert more in release in `rustc_ast_lowering`

My understanding of the compiler's architecture is that in the `ast_lowering` crate, we are constructing the HIR as a one-time thing per crate. This is after tokenizing, parsing, resolution, expansion, possible reparsing, reresolution, reexpansion, and so on. In other words, there are many reasons that perf-focused PRs spend a lot of time touching `rustc_parse`, `rustc_expand`, `rustc_ast`, and then `rustc_hir` and "onwards", but `ast_lowering` is a little bit of an odd duck.

In this crate, we have a number of debug assertions. Some are clearly expensive checks that seem like they are prohibitive to run in actual optimized compiler builds, but then there are a number that are simple asserts on integer equalities, `is_empty`, or the like. I believe we should do some of them even in release builds, because the correctness gain is worth the performance cost: almost zero.
2025-06-13 05:19:16 +02:00
Matthias Krüger
f6b02bbfa3
Rollup merge of #142248 - heiher:loong32-asm-types, r=Amanieu
Add supported asm types for LoongArch32

r? ``````@Amanieu``````
2025-06-13 05:19:15 +02:00
Matthias Krüger
9daf8ea811
Rollup merge of #142176 - workingjubilee:dont-shuffle-bswaps-per-arch, r=nikic
tests: Split dont-shuffle-bswaps along opt-levels and arches

This duplicates dont-shuffle-bswaps in order to make each opt level its own test. Then -opt3.rs gets split into a revision per arch we want to test, with certain architectures gaining new target-cpu minimums.
2025-06-13 05:19:15 +02:00
Matthias Krüger
3766fb231a Rollup merge of #140770 - folkertdev:custom-abi, r=tgross35
add `extern "custom"` functions

tracking issue: rust-lang/rust#140829
previous discussion: https://github.com/rust-lang/rust/issues/140566

In short, an `extern "custom"` function is a function with a custom ABI, that rust does not know about. Therefore, such functions can only be defined with `#[unsafe(naked)]` and `naked_asm!`, or via an `extern "C" { /* ... */ }` block. These functions cannot be called using normal rust syntax: calling them can only be done from inline assembly.

The motivation is low-level scenarios where a custom calling convention is used. Currently, we often pick `extern "C"`, but that is a lie because the function does not actually respect the C calling convention.

At the moment `"custom"` seems to be the name with the most support. That name is not final, but we need to pick something to actually implement this.

r? `@traviscross`
cc `@tgross35`

try-job: x86_64-apple-2
2025-06-13 05:19:14 +02:00
Matthias Krüger
7c3b2e5254
Rollup merge of #140770 - folkertdev:custom-abi, r=tgross35
add `extern "custom"` functions

tracking issue: rust-lang/rust#140829
previous discussion: https://github.com/rust-lang/rust/issues/140566

In short, an `extern "custom"` function is a function with a custom ABI, that rust does not know about. Therefore, such functions can only be defined with `#[unsafe(naked)]` and `naked_asm!`, or via an `extern "C" { /* ... */ }` block. These functions cannot be called using normal rust syntax: calling them can only be done from inline assembly.

The motivation is low-level scenarios where a custom calling convention is used. Currently, we often pick `extern "C"`, but that is a lie because the function does not actually respect the C calling convention.

At the moment `"custom"` seems to be the name with the most support. That name is not final, but we need to pick something to actually implement this.

r? `@traviscross`
cc `@tgross35`

try-job: x86_64-apple-2
2025-06-13 05:19:14 +02:00