| Age | Commit message (Collapse) | Author | Lines |
|
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
|
|
|
|
|
|
|
|
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
|
|
Generate annotations for macro defined items if their name is in the input
|
|
|
|
Simplify and optimize `ItemTree`
|
|
|
|
|
|
|
|
|
|
|
|
clippy-subtree-update
|
|
clippy-subtree-update
|
|
|
|
|
|
r? @ghost
changelog: none
|
|
`cargo update` and `cargo upgrade`
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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. :tada: :partying_face:
changelog: [`strlen_on_c_strings`]: Optimize it by 99.75%
|
|
Fix link to good first issues
|
|
|
|
Replace `build.rs` Rust generation with macros, using the unstable
`${concat(...)}`.
Fixes: https://github.com/rust-lang/compiler-builtins/issues/947
|
|
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
|
|
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
Add supported asm types for LoongArch32
r? ``````@Amanieu``````
|
|
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.
|
|
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
|
|
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
|
|
retpoline and retpoline-external-thunk flags (target modifiers) to enable retpoline-related target features
`-Zretpoline` and `-Zretpoline-external-thunk` flags are target modifiers (tracked to be equal in linked crates).
* Enables target features for `-Zretpoline-external-thunk`:
`+retpoline-external-thunk`, `+retpoline-indirect-branches`, `+retpoline-indirect-calls`.
* Enables target features for `-Zretpoline`:
`+retpoline-indirect-branches`, `+retpoline-indirect-calls`.
It corresponds to clang -mretpoline & -mretpoline-external-thunk flags.
Also this PR forbids to specify those target features manually (warning).
Issue: rust-lang/rust#116852
|
|
retpoline and retpoline-external-thunk flags (target modifiers) to enable retpoline-related target features
`-Zretpoline` and `-Zretpoline-external-thunk` flags are target modifiers (tracked to be equal in linked crates).
* Enables target features for `-Zretpoline-external-thunk`:
`+retpoline-external-thunk`, `+retpoline-indirect-branches`, `+retpoline-indirect-calls`.
* Enables target features for `-Zretpoline`:
`+retpoline-indirect-branches`, `+retpoline-indirect-calls`.
It corresponds to clang -mretpoline & -mretpoline-external-thunk flags.
Also this PR forbids to specify those target features manually (warning).
Issue: rust-lang/rust#116852
|
|
r=petrochenkov,traviscross
Make `missing_fragment_specifier` an unconditional error
This was attempted in [1] then reverted in [2] because of fallout. Recently, this was made an edition-dependent error in [3].
Make missing fragment specifiers an unconditional error again, across all editions.
More context: https://github.com/rust-lang/rust/pull/128006
Most recent crater: https://github.com/rust-lang/rust/pull/128425#issuecomment-2686949847
Fixes: https://github.com/rust-lang/rust/issues/40107
[1]: https://github.com/rust-lang/rust/pull/75516
[2]: https://github.com/rust-lang/rust/pull/80210
[3]: https://github.com/rust-lang/rust/pull/128006
|