Skip to content

Rollup of 9 pull requests#154489

Merged
rust-bors[bot] merged 24 commits intorust-lang:mainfrom
Zalathar:rollup-wBQK8Wt
Mar 28, 2026
Merged

Rollup of 9 pull requests#154489
rust-bors[bot] merged 24 commits intorust-lang:mainfrom
Zalathar:rollup-wBQK8Wt

Conversation

@Zalathar
Copy link
Copy Markdown
Member

Successful merges:

r? @ghost

Create a similar rollup

lambdageek and others added 24 commits March 13, 2026 14:37
The warning has no error code, so in a `-D warnings` environment, it's
impossible to ignore if it consistently breaks your build.  Change it
to a note so it is still visible, but doesn't break the build
Remove the confusing word "error".  The diagnostic is already prefixed
with a level when it is displayed, so this is redundant and possibly
confusing ("warning: error ...").

Add some help text summarizing the impact of what happened: the next
build won't be able to reuse work from the current run.
…e fail

Use a proc macro to observe the incremental session directory and do
something platform specific so that renaming the '-working' session
directory during finalize_session_directory will fail.  On Unix,
change the permissions on the parent directory to be read-only.  On
Windows, open and leak a file inside the `-working` directory.
And make `Ipv6MulticastScope` exhaustive,
with `repr(u8)` and the proper discriminant values.
The variants for the two reserved scopes
are gated behind a perma-unstable feature,
in order to avoid committing to names for them.

[IETF RFC 4291](https://datatracker.ietf.org/doc/html/rfc4291#section-2.7)
and [IETF RFC 7346](https://datatracker.ietf.org/doc/html/rfc7346#section-2)
define the list of multicast scopes.
The former document says:

> scopes labeled "(unassigned)" are available for administrators
> to define additional multicast regions.
Co-authored-by: David Rheinsberg <david@readahead.eu>
Returning dedicated structs and enums makes the meaning of each return value
more obvious, and provides a more natural home for documentation.

The intermediate `load_data` function was unhelpful, and has been inlined into
the main function.
The standard library has helper methods for converting integers to/from
little-endian bytes, for checked conversion from `usize` to `u8`, and for
treating `&mut T` as `&mut [T; 1]`.
The test needs proc-macros to function
This reverts commit 6fd8466, reversing
changes made to fda6d37.
…wesleywiser

Clean up the API for opening/checking incremental-compilation files

Returning dedicated structs and enums makes the meaning of each return value more obvious, and provides a more natural home for documentation.

This part of the codebase is fairly crufty, and I doubt anyone feels fully confident about reviewing changes to it, but hopefully these particular cleanups should be fairly straightforward.

I have more changes planned in this area (e.g. cleaning up `LoadResult`), but I stopped here to make review a bit easier.
format safety doc of Rc/Arc::from_raw/from_raw_in

The following APIs previously had safety notes, but they were not placed under a dedicated Safety section. This PR adds a Safety section for each API and moves the original safety descriptions there:
- [`Rc::from_raw`](https://doc.rust-lang.org/nightly/alloc/rc/struct.Rc.html#method.from_raw)
- [`Rc::from_raw_in`](https://doc.rust-lang.org/nightly/alloc/rc/struct.Rc.html#method.from_raw_in)
- [`Arc::from_raw`](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html#method.from_raw)
- [`Arc::from_raw_in`](https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html#method.from_raw_in)

Additionally, we updated the parameter requirements to clarify that the raw pointer may be returned not only from `into_raw`, but also from `into_raw_with_allocator`.
…r=wesleywiser

Change "error finalizing incremental compilation" text and emit it as a note, not a warning

As mentioned in rust-lang#151181 (comment) and rust-lang#151181 (comment) the current message could be improved:

1. Right now it displays as "warning: error ..." which is confusing (is it an error or a warning)
2. It doesn't give the user a clear indication of what the consequences are
3. The _current_ build is successful. The _next_ build might be slower

The new message is now

```text
note: did not finalize incremental compilation session directory ...
  |
  = help: the next build will not be able to reuse work from this compilation
```

I started a zulip thread [#t-compiler/incremental > Ergonomics of "error finalizing incremental session"](https://rust-lang.zulipchat.com/#narrow/channel/241847-t-compiler.2Fincremental/topic/Ergonomics.20of.20.22error.20finalizing.20incremental.20session.22/with/580191447)
…criminant, r=Mark-Simulacrum

Make `Ipv6Addr::multicast_scope()` exhaustive

And make `Ipv6MulticastScope` exhaustive, with `repr(u8)` and the proper discriminant values. The variants for the two reserved scopes are gated behind a perma-unstable feature, in order to avoid committing to names for them.

[IETF RFC 4291](https://datatracker.ietf.org/doc/html/rfc4291#section-2.7) and [IETF RFC 7346](https://datatracker.ietf.org/doc/html/rfc7346#section-2) define the list of multicast scopes. The former document says:

> scopes labeled "(unassigned)" are available for administrators to define additional multicast regions.

Tracking issue: rust-lang#27709
@rustbot label A-io
…imulacrum

`vec::as_mut_slice()`: use lowercase "isize" in safety comment

To match other references to that type
…-Simulacrum

Use common Timestamp impl in Hermit (attempt 2)

The goal is to have less code to maintain, so to be able to make changes easier.

Previous attempt rust-lang#148847 was asked to postpone because there was restructure of code, which is complete now.

r? joboet
chore(deps): update rust crate tar to v0.4.45

Fix [RUSTSEC-2026-0068](https://rustsec.org/advisories/RUSTSEC-2026-0068.html): tar-rs incorrectly ignores PAX size headers if header size is nonzero
Fix [RUSTSEC-2026-0067](https://rustsec.org/advisories/RUSTSEC-2026-0067.html): `unpack_in` can chmod arbitrary directories by following symlinks
Revert "Unstable book options parser"

- Reverts rust-lang#154070

This reverts commit 6fd8466, reversing changes made to fda6d37.

---

The changes in rust-lang#154070 are well-intentioned, but in their current form they place an unreasonable maintenance burden on the affected part of the compiler, out of proportion to the benefit gained.

- Moving the unstable options to a separate `include!` file is marginally more convenient for the unstable-book-gen tool, but a big hassle for compiler contributors looking to read or modify the list of unstable options. It breaks normal file layout conventions, interferes with navigation, and interferes with IDE features, all without ever being truly necessary.

- The extra `syn`-based parser in unstable-book-gen is quite complicated, almost entirely undocumented, and seemingly buggy. That makes it extremely difficult to understand or modify, which in turn makes it effectively impossible to ever change the `options!` macro on the compiler side.

- The new tests in unstable-book-gen don't appear to be hooked up to run in CI.

- The compiler changes don't appear to have been approved by a T-compiler reviewer.

Before contemplating a revert, I tried to put together a fix-forward to resolve or mitigate some of these issues. But unstable-book-gen in its current state makes that impractical, so unfortunately I believe that the only way forward is to revert the original changes.

---

I do think the reverted functionality is potentially useful, and I'm not fundamentally opposed to a revised version of it landing in the future, if the relevant concerns are addressed.

But I feel strongly that the current version does not justify the real and troublesome maintenance burden that it imposes on compiler contributors.
@rust-bors rust-bors bot added the rollup A PR which is a rollup label Mar 28, 2026
@rustbot rustbot added A-run-make Area: port run-make Makefiles to rmake.rs O-hermit Operating System: Hermit O-unix Operating system: Unix-like S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) labels Mar 28, 2026
@rustbot rustbot added 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. labels Mar 28, 2026
@Zalathar
Copy link
Copy Markdown
Member Author

Rollup of everything.

@bors r+ rollup=never p=5

@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors bot commented Mar 28, 2026

📌 Commit e0a0ad1 has been approved by Zalathar

It is now in the queue for this repository.

@rust-bors rust-bors bot 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 Mar 28, 2026
@rust-bors

This comment has been minimized.

rust-bors bot pushed a commit that referenced this pull request Mar 28, 2026
Rollup of 9 pull requests

Successful merges:

 - #154357 (uefi: extend comment for TcpStream Send impl)
 - #154410 (Clean up the API for opening/checking incremental-compilation files )
 - #154081 (format safety doc of Rc/Arc::from_raw/from_raw_in)
 - #154110 (Change "error finalizing incremental compilation" text and emit it as a note, not a warning)
 - #154196 (Make `Ipv6Addr::multicast_scope()` exhaustive)
 - #154221 (`vec::as_mut_slice()`: use lowercase "isize" in safety comment)
 - #154234 (Use common Timestamp impl in Hermit (attempt 2))
 - #154396 (chore(deps): update rust crate tar to v0.4.45)
 - #154488 (Revert "Unstable book options parser")
@jieyouxu
Copy link
Copy Markdown
Member

Sorry, I'm yielding this to a revert to unblock macos contributors who use CI LLVM (#154485)
@bors yield

@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors bot commented Mar 28, 2026

Auto build was cancelled. Cancelled workflows:

The next pull request likely to be tested is #154485.

@rust-bors

This comment has been minimized.

@rust-bors rust-bors bot added merged-by-bors This PR was explicitly merged by bors. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Mar 28, 2026
@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors bot commented Mar 28, 2026

☀️ Test successful - CI
Approved by: Zalathar
Duration: 3h 7m 19s
Pushing 79531c5 to main...

@rust-bors rust-bors bot merged commit 79531c5 into rust-lang:main Mar 28, 2026
12 checks passed
@rustbot rustbot added this to the 1.96.0 milestone Mar 28, 2026
@rust-timer
Copy link
Copy Markdown
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#154081 format safety doc of Rc/Arc::from_raw/from_raw_in df88c8b180809fde153fef20413164ac5ff8b5a9 (link)
#154110 Change "error finalizing incremental compilation" text and … 8c2cf1d2bf3081a1e632d758ed466b3504e10924 (link)
#154196 Make Ipv6Addr::multicast_scope() exhaustive 88906161d72d5ca5cf16a33cf7e10557dbe110cc (link)
#154221 vec::as_mut_slice(): use lowercase "isize" in safety comm… 14decbc04408a14830cea998a888a05f086c968a (link)
#154234 Use common Timestamp impl in Hermit (attempt 2) 3e58e0ee3bb1955a9412c8774d9b027244bf7b7a (link)
#154357 uefi: extend comment for TcpStream Send impl 43f5613b421e4ba2cdf38a5619deb9b4a1054802 (link)
#154396 chore(deps): update rust crate tar to v0.4.45 1341aaec361594f1f385e6736ddbd6cfc98edf17 (link)
#154410 Clean up the API for opening/checking incremental-compilati… e8194532c33de57250e6426448487e386641962e (link)
#154488 Revert "Unstable book options parser" febb939ec7e89e7bb0f666919571ae126e79fbdc (link)

previous master: c4db0e127c

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

@github-actions
Copy link
Copy Markdown
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 c4db0e1 (parent) -> 79531c5 (this PR)

Test differences

Show 875 test diffs

Stage 1

  • [run-make] tests/run-make/incremental-finalize-fail: [missing] -> pass (J1)

Stage 2

  • [run-make] tests/run-make/incremental-finalize-fail: [missing] -> ignore (ignored when cross-compiling) (J0)
  • [run-make] tests/run-make/incremental-finalize-fail: [missing] -> ignore (skipping test as target does not support all of the crate types ["proc-macro"]) (J2)
  • [run-make] tests/run-make/compressed-debuginfo-zstd: ignore (ignored if LLVM wasn't build with zstd for ELF section compression or LLVM is not the default codegen backend) -> pass (J3)
  • [run-make] tests/run-make/incremental-finalize-fail: [missing] -> pass (J4)

Additionally, 870 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 79531c53ded6316bd4973f60bc992954255b8b10 --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. pr-check-1: 40m 19s -> 28m 35s (-29.1%)
  2. x86_64-gnu-tools: 1h 15m -> 56m 46s (-25.2%)
  3. x86_64-gnu-gcc: 1h 19m -> 1h (-23.4%)
  4. x86_64-rust-for-linux: 1h 3m -> 50m 1s (-20.6%)
  5. pr-check-2: 51m 31s -> 41m 17s (-19.9%)
  6. test-various: 2h 23m -> 1h 55m (-19.4%)
  7. dist-aarch64-apple: 1h 51m -> 1h 34m (-15.4%)
  8. aarch64-apple: 2h 16m -> 2h 35m (+14.0%)
  9. x86_64-gnu-stable: 2h 45m -> 2h 24m (-12.7%)
  10. dist-x86_64-apple: 1h 37m -> 1h 48m (+11.7%)
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-wBQK8Wt branch March 28, 2026 10:51
@rust-timer
Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (79531c5): comparison URL.

Overall result: ❌✅ regressions and improvements - no action needed

@rustbot label: -perf-regression

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
Regressions ❌
(secondary)
1.1% [1.1%, 1.1%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-0.6% [-0.7%, -0.6%] 2
All ❌✅ (primary) - - 0

Max RSS (memory usage)

Results (primary 1.0%, secondary -6.8%)

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

mean range count
Regressions ❌
(primary)
1.0% [1.0%, 1.0%] 1
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-6.8% [-6.8%, -6.8%] 1
All ❌✅ (primary) 1.0% [1.0%, 1.0%] 1

Cycles

Results (primary 2.0%, secondary 4.5%)

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

mean range count
Regressions ❌
(primary)
2.0% [2.0%, 2.0%] 1
Regressions ❌
(secondary)
4.5% [4.5%, 4.5%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 2.0% [2.0%, 2.0%] 1

Binary size

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

Bootstrap: 485.299s -> 484.626s (-0.14%)
Artifact size: 395.08 MiB -> 395.06 MiB (-0.01%)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-run-make Area: port run-make Makefiles to rmake.rs merged-by-bors This PR was explicitly merged by bors. O-hermit Operating System: Hermit O-unix Operating system: Unix-like rollup A PR which is a rollup T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) 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.