Skip to content

Conversation

Zalathar
Copy link
Contributor

@Zalathar Zalathar commented Sep 21, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

thaliaarchi and others added 16 commits July 19, 2025 20:25
The `cargo asm` tool pattern matches on such labels to figure out where functions end: normal functions generated by LLVM always do have such a label. We don't guarantee that naked functions emit such a label, but having `cargo asm` work is convenient
Although these types aren't directly constructable externally, since
they're pub, I think this omission was an oversight.
Improve doc of some methods that take ranges

Some methods that were taking some range in parameter were a bit inconsistent / unclear in the panic documentation.

Here is the recap:
- Replaced "start/end point" by "start/end bound" to be coherent with [`RangeBounds`](https://doc.rust-lang.org/stable/std/ops/trait.RangeBounds.html) naming (it's also easier to understand I think)
- Previously, it was written "_[...] or if the end point is greater than the length of [...]_", but this is not entirely true! Actually, you can have a start bound that is greater than the length, with an end bound that is unbounded and it will also panic. Therefore I think that "_[...] one of the range bound is bounded and greater than the length of [...]_" is better!
- `String` methods weren't mentionning that the method panics if `start_bound > end_bound` but it actually does! It uses `slice::range` which panics when `start > end`.  (https://doc.rust-lang.org/stable/src/alloc/string.rs.html#1932-1934, https://doc.rust-lang.org/stable/src/core/slice/index.rs.html#835-837).
You can also test it with:
```rs
struct MyRange;
impl std::ops::RangeBounds<usize> for MyRange {
    fn start_bound(&self) -> std::ops::Bound<&usize> {
        std::ops::Bound::Included(&3usize)
    }
    fn end_bound(&self) -> std::ops::Bound<&usize> {
        std::ops::Bound::Included(&1usize)
    }
}

fn main() {
    let mut s = String::from("I love Rust!");
    s.drain(MyRange); // panics!
}
```
…r=Mark-Simulacrum

Stabilize `new_zeroed_alloc`

The corresponding `new_uninit` and `new_uninit_slice` functions were stabilized in rust-lang#129401, but the zeroed counterparts were left for later out of a [desire](rust-lang#63291 (comment)) to stabilize only the minimal set. These functions are straightforward mirrors of the uninit functions and well-established. Since no blockers or design questions have surfaced in the past year, I think it's time to stabilize them.

Tracking issue: rust-lang#129396
…k-Simulacrum

Stabilize `std::panic::Location::file_as_c_str`

Closes: rust-lang#141727

Nominating this for T-lang as per ```@traviscross```  rust-lang#141727 (comment)
…r=workingjubilee

fix issue with `cmse-nonsecure-entry` ABI being both async and c-variadic

tracking issue: rust-lang#75835
fixes rust-lang#132142

An `extern "cmse-nonsecure-entry"` function cannot be c-variadic (or, in any case, clang/LLVM does not support it, see  https://godbolt.org/z/MaPjzGcE1). So just stop looking at the type if we know it'll be invalid anyway.

I'm not entirely sure how to test this. The ICE is only possible on the `thumbv8m.main-none-eabi` and some related targets. I think using `minicore` is the most convenient, but use of `async` requires quite a long list of lang items to be present. Maybe we want that anyway though? On the other hand, it's extra `minicore` surface that might go out of date.

An alternative is `run-make`, that should work, but is much less convenient. See also [#t-compiler/help > &rust-lang#96;async fn&rust-lang#96; and &rust-lang#96;minicore&rust-lang#96;](https://rust-lang.zulipchat.com/#narrow/channel/182449-t-compiler.2Fhelp/topic/.60async.20fn.60.20and.20.60minicore.60/with/539427262).

r? `@ghost`
…=cjgillot

Deref related cleanups in ref_prop

Cherry picked from rust-lang#146710

r? cjgillot
…manieu

naked_asm: emit a label starting with `func_end`

The `cargo asm` tool (`cargo install cargo-show-asm`) pattern matches on such labels to figure out where functions end: normal functions generated by LLVM always do have such a label. We don't guarantee that naked functions emit such a label, but having `cargo asm` work is convenient.

https://github.com/pacak/cargo-show-asm/blob/be45f67454ad8b634246a7fc69b3c6a963ee93f1/src/asm/statements.rs#L897-L901

To make the label name unique it's suffixed with the name of the current symbol.

r? ```@Amanieu```
Add unstable attribute to BTreeMap-related allocator generics

Although these types aren't directly constructable externally, since they're pub, I think this omission was an oversight.

r? libs-api
Fix old typo in lang_start_internal comment

Noticed this when reading the rt cleanup code; the typo was introduced during a mass port of libstd to std in comments.
@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. rollup A PR which is a rollup labels Sep 21, 2025
@Zalathar
Copy link
Contributor Author

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Sep 21, 2025

📌 Commit 5224279 has been approved by Zalathar

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Sep 21, 2025
@bors
Copy link
Collaborator

bors commented Sep 21, 2025

⌛ Testing commit 5224279 with merge dfa2223...

@bors
Copy link
Collaborator

bors commented Sep 21, 2025

☀️ Test successful - checks-actions
Approved by: Zalathar
Pushing dfa2223 to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Sep 21, 2025
@bors bors merged commit dfa2223 into rust-lang:master Sep 21, 2025
11 checks passed
@rustbot rustbot added this to the 1.92.0 milestone Sep 21, 2025
@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#140983 Improve doc of some methods that take ranges 5a2e984593bbc3c449548a74f663c1bfd3366940 (link)
#144091 Stabilize new_zeroed_alloc 9573073b44799a5256a1590517a37bf4152b954c (link)
#145664 Stabilize std::panic::Location::file_as_c_str 164615223f7af7ce897cd27e46189aa648877e4d (link)
#146551 fix issue with cmse-nonsecure-entry ABI being both async … e66e349332613df6f7c60184ac43fb62867398af (link)
#146744 Deref related cleanups in ref_prop c89077ee8fa8d21ad293ab76628e586521f8e00b (link)
#146793 naked_asm: emit a label starting with func_end a94e35b527340c7ecd2e07f5c40f0f74e6649eac (link)
#146820 Add unstable attribute to BTreeMap-related allocator generi… 1278c03e395af7ce6bd51ae6a460f43269c9fdca (link)
#146822 Fix old typo in lang_start_internal comment ac1ed5950ecbfe9c3618b7ade52d1c69f3989f47 (link)

previous master: dd7fda5700

In the case of a perf regression, run the following command for each PR you suspect might be the cause: @rust-timer build $SHA

Copy link
Contributor

What is this? This is an experimental post-merge analysis report that shows differences in test outcomes between the merged PR and its parent PR.

Comparing dd7fda5 (parent) -> dfa2223 (this PR)

Test differences

Show 1154 test diffs

Stage 1

  • [crashes] tests/crashes/132142.rs: pass -> [missing] (J1)
  • [ui] tests/ui/cmse-nonsecure/cmse-nonsecure-entry/c-variadic.rs: [missing] -> pass (J1)

Stage 2

  • [crashes] tests/crashes/132142.rs: pass -> [missing] (J0)
  • [ui] tests/ui/cmse-nonsecure/cmse-nonsecure-entry/c-variadic.rs: [missing] -> pass (J2)

Additionally, 1150 doctest diffs were found. These are ignored, as they are noisy.

Job group index

Test dashboard

Run

cargo run --manifest-path src/ci/citool/Cargo.toml -- \
    test-dashboard dfa22235d858086511bedc4acde9db1c045ffbac --output-dir test-dashboard

And then open test-dashboard/index.html in your browser to see an overview of all executed tests.

Job duration changes

  1. dist-loongarch64-musl: 5932.3s -> 5208.2s (-12.2%)
  2. x86_64-gnu-aux: 6230.2s -> 6890.0s (10.6%)
  3. x86_64-msvc-2: 6746.5s -> 7393.7s (9.6%)
  4. dist-x86_64-apple: 6782.3s -> 7368.0s (8.6%)
  5. aarch64-msvc-1: 6874.1s -> 7453.0s (8.4%)
  6. dist-powerpc64-linux: 5033.8s -> 5388.1s (7.0%)
  7. aarch64-apple: 5060.5s -> 4708.2s (-7.0%)
  8. dist-aarch64-apple: 6010.2s -> 6420.2s (6.8%)
  9. x86_64-msvc-ext1: 7373.2s -> 7846.6s (6.4%)
  10. dist-aarch64-msvc: 5923.2s -> 5557.5s (-6.2%)
How to interpret the job duration changes?

Job durations can vary a lot, based on the actual runner instance
that executed the job, system noise, invalidated caches, etc. The table above is provided
mostly for t-infra members, for simpler debugging of potential CI slow-downs.

@Zalathar Zalathar deleted the rollup-lj8jfok branch September 21, 2025 08:01
@rust-timer
Copy link
Collaborator

Finished benchmarking commit (dfa2223): comparison URL.

Overall result: ❌✅ regressions and improvements - please read the text below

Our benchmarks found a performance regression caused by this PR.
This might be an actual regression, but it can also be just noise.

Next Steps:

  • If the regression was expected or you think it can be justified,
    please write a comment with sufficient written justification, and add
    @rustbot label: +perf-regression-triaged to it, to mark the regression as triaged.
  • If you think that you know of a way to resolve the regression, try to create
    a new PR with a fix for the regression.
  • If you do not understand the regression or you think that it is just noise,
    you can ask the @rust-lang/wg-compiler-performance working group for help (members of this group
    were already notified of this PR).

@rustbot label: +perf-regression
cc @rust-lang/wg-compiler-performance

Instruction count

Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.

mean range count
Regressions ❌
(primary)
0.2% [0.2%, 0.2%] 1
Regressions ❌
(secondary)
0.2% [0.1%, 0.2%] 4
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-0.2% [-0.3%, -0.1%] 2
All ❌✅ (primary) 0.2% [0.2%, 0.2%] 1

Max RSS (memory usage)

Results (primary -2.0%, secondary -3.9%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
1.9% [1.9%, 1.9%] 1
Improvements ✅
(primary)
-2.0% [-3.0%, -1.0%] 2
Improvements ✅
(secondary)
-4.5% [-5.4%, -2.2%] 9
All ❌✅ (primary) -2.0% [-3.0%, -1.0%] 2

Cycles

Results (secondary -0.0%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
2.9% [1.6%, 4.6%] 6
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-2.5% [-3.5%, -2.1%] 7
All ❌✅ (primary) - - 0

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 472.936s -> 472.257s (-0.14%)
Artifact size: 389.95 MiB -> 387.89 MiB (-0.53%)

@rustbot rustbot added the perf-regression Performance regression. label Sep 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
merged-by-bors This PR was explicitly merged by bors. perf-regression Performance regression. rollup A PR which is a rollup S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.