Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rollup of 9 pull requests #138595

Merged
merged 40 commits into from
Mar 17, 2025
Merged

Rollup of 9 pull requests #138595

merged 40 commits into from
Mar 17, 2025

Conversation

jhpratt
Copy link
Member

@jhpratt jhpratt commented Mar 17, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

GuillaumeGomez and others added 30 commits February 10, 2025 10:38
Signed-off-by: Ookiineko <chiisaineko@protonmail.com>
Signed-off-by: Ookiineko <chiisaineko@protonmail.com>
Signed-off-by: xizheyin <xizheyin@smail.nju.edu.cn>
Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
Signed-off-by: onur-ozkan <work@onurozkan.dev>
jhpratt added 7 commits March 17, 2025 05:47
…r=joshtriplett

Stablize anonymous pipe

Since rust-lang#135822 is staled, I create this PR to stablise anonymous pipe

Closes rust-lang#127154

try-job: test-various
std: Mention clone-on-write mutation in Arc<T>

Fixes rust-lang#138322

r? libs
…re, r=oli-obk

Improve upvar analysis for deref of child capture

Two fixes to the heuristic I implemented in rust-lang#123660. As I noted in the code:

> Luckily, if this function is not correct, then the program is not unsound, since we still borrowck and validate the choices made from this function -- the only side-effect is that the user may receive unnecessary borrowck errors.

This indeed fixes unnecessary borrowck errors.

r? oli-obk

---

The heuristic is only valid if we deref a `&T`, not a `&mut T` or `Box<T>`, so make sure to check the type. This fixes:

```rust
struct Foo { precise: i32 }

fn mut_ref_inside_mut(f: &mut Foo) {
    let x: impl AsyncFn() = async move || {
        let y = &f.precise;
    };
}
```

Since the capture from `f` to `&f.precise` needs to be treated as a lending borrow from the parent coroutine-closure to the child coroutine.

---

The heuristic is also valid if *any* deref projection in the child capture's projections is a `&T`, but we were only looking at the last one. This ensures that this function is considered not to be lending:

```rust
struct Foo { precise: i32 }

fn ref_inside_mut(f: &mut &Foo) {
    let x: impl Fn() -> _ = async move || {
        let y = &f.precise;
    };
}
```

(Specifically, checking that `impl Fn() -> _` is satisfied is exercising that the coroutine is not considered to be lending.)
Update Rust Foundation links in Readme

The Rust Foundation links in the Readme are outdated. I'm not sure if this is the best wording to use in place of the media guide, that can be changed if need be.
Flatten and simplify some control flow 🫓
@rustbot rustbot added A-meta Area: Issues & PRs about the rust-lang/rust repository itself A-tidy Area: The tidy tool O-unix Operating system: Unix-like O-windows Operating system: Windows 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) 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 Mar 17, 2025
@jhpratt
Copy link
Member Author

jhpratt commented Mar 17, 2025

@bors r+ rollup=never p=5

@bors
Copy link
Contributor

bors commented Mar 17, 2025

📌 Commit 87b87b1 has been approved by jhpratt

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 Mar 17, 2025
@bors
Copy link
Contributor

bors commented Mar 17, 2025

⌛ Testing commit 87b87b1 with merge 9c67cec...

@bors
Copy link
Contributor

bors commented Mar 17, 2025

☀️ Test successful - checks-actions
Approved by: jhpratt
Pushing 9c67cec to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Mar 17, 2025
@bors bors merged commit 9c67cec into rust-lang:master Mar 17, 2025
7 checks passed
@rustbot rustbot added this to the 1.87.0 milestone Mar 17, 2025
@rust-log-analyzer
Copy link
Collaborator

A job failed! Check out the build log: (web) (plain)

Click to see the possible cause of the failure (guessed by this bot)
   Compiling glob-match v0.2.1
   Compiling ureq v3.0.8
   Compiling citool v0.1.0 (/home/runner/work/rust/rust/src/ci/citool)
    Finished `release` profile [optimized] target(s) in 34.38s
     Running `target/release/citool post-merge-report 9bad8ac498985707f29b0bdc0293cc0457a3ab38 9c67cecd12d79f1bbc00a74f70e7ef9fff086a5a`
Downloading metrics of job aarch64-gnu
Downloading metrics of job aarch64-gnu-debug
Downloading metrics of job arm-android
Downloading metrics of job armhf-gnu
Downloading metrics of job dist-aarch64-linux
Downloading metrics of job dist-android
Downloading metrics of job dist-arm-linux
Downloading metrics of job dist-armhf-linux
Downloading metrics of job dist-armv7-linux
Downloading metrics of job dist-i586-gnu-i586-i686-musl
Downloading metrics of job dist-i686-linux
Downloading metrics of job dist-loongarch64-linux
Downloading metrics of job dist-loongarch64-musl
Downloading metrics of job dist-ohos
Downloading metrics of job dist-powerpc-linux
Downloading metrics of job dist-powerpc64-linux
Downloading metrics of job dist-powerpc64le-linux
Downloading metrics of job dist-riscv64-linux
Downloading metrics of job dist-s390x-linux
Downloading metrics of job dist-various-1
Downloading metrics of job dist-various-2
Downloading metrics of job dist-x86_64-freebsd
Downloading metrics of job dist-x86_64-illumos
Downloading metrics of job dist-x86_64-linux
Downloading metrics of job dist-x86_64-linux-alt
Downloading metrics of job dist-x86_64-musl
Downloading metrics of job dist-x86_64-netbsd
Downloading metrics of job i686-gnu-1
Downloading metrics of job i686-gnu-2
Downloading metrics of job i686-gnu-nopt-1
Downloading metrics of job i686-gnu-nopt-2
Downloading metrics of job mingw-check
Downloading metrics of job test-various
Downloading metrics of job x86_64-fuchsia
Downloading metrics of job x86_64-rust-for-linux
Downloading metrics of job x86_64-gnu
Downloading metrics of job x86_64-gnu-stable
Downloading metrics of job x86_64-gnu-aux
Downloading metrics of job x86_64-gnu-debug
Downloading metrics of job x86_64-gnu-distcheck
Downloading metrics of job x86_64-gnu-llvm-19-1
Downloading metrics of job x86_64-gnu-llvm-19-2
Downloading metrics of job x86_64-gnu-llvm-19-3
Downloading metrics of job x86_64-gnu-llvm-18-1
Downloading metrics of job x86_64-gnu-llvm-18-2
Downloading metrics of job x86_64-gnu-llvm-18-3
Downloading metrics of job x86_64-gnu-nopt
Downloading metrics of job x86_64-gnu-tools
Downloading metrics of job dist-x86_64-apple
Downloading metrics of job dist-apple-various
Downloading metrics of job x86_64-apple-1
Downloading metrics of job x86_64-apple-2
Downloading metrics of job dist-aarch64-apple
Downloading metrics of job aarch64-apple
Downloading metrics of job x86_64-msvc-1
Downloading metrics of job x86_64-msvc-2
Downloading metrics of job i686-msvc-1
Downloading metrics of job i686-msvc-2
Downloading metrics of job x86_64-msvc-ext1
Downloading metrics of job x86_64-msvc-ext2
Downloading metrics of job x86_64-msvc-ext3
Downloading metrics of job i686-mingw-1
Downloading metrics of job i686-mingw-2
Downloading metrics of job i686-mingw-3
Downloading metrics of job x86_64-mingw-1
Downloading metrics of job x86_64-mingw-2
Downloading metrics of job dist-x86_64-msvc
Downloading metrics of job dist-i686-msvc
Downloading metrics of job dist-aarch64-msvc
Downloading metrics of job dist-i686-mingw
Downloading metrics of job dist-x86_64-mingw
Downloading metrics of job dist-x86_64-msvc-alt
*This is an experimental post-merge analysis report. You can ignore it.*

<details>
<summary>Post-merge report</summary>

Comparing 9bad8ac498985707f29b0bdc0293cc0457a3ab38 (base) -> 9c67cecd12d79f1bbc00a74f70e7ef9fff086a5a (this PR)

## Test differences
- `[ui] tests/ui/async-await/async-closures/imm-deref-lending.rs`: [missing] -> pass (**J0**)
- `[ui] tests/ui/async-await/async-closures/imm-deref-not-lending.rs`: [missing] -> pass (**J0**)
- `[ui] tests/ui/feature-gates/literal-escaper.rs`: [missing] -> pass (**J0**)
- `[ui] tests/ui/tool-attributes/crate-attr.rs`: [missing] -> pass (**J0**)
- `[ui] tests/ui/tool-attributes/multiple-registered.rs`: [missing] -> pass (**J0**)
- `[ui] tests/ui/tool-attributes/nested-disallowed.rs`: [missing] -> pass (**J0**)
- `tests::test_unescape_byte_bad`: [missing] -> pass (**J1**)
- `tests::test_unescape_byte_good`: [missing] -> pass (**J1**)
- `tests::test_unescape_byte_str_good`: [missing] -> pass (**J1**)
- `tests::test_unescape_char_bad`: [missing] -> pass (**J1**)
- `tests::test_unescape_char_good`: [missing] -> pass (**J1**)
- `tests::test_unescape_raw_byte_str`: [missing] -> pass (**J1**)
- `tests::test_unescape_raw_str`: [missing] -> pass (**J1**)
- `tests::test_unescape_str_good`: [missing] -> pass (**J1**)
- `tests::test_unescape_str_warn`: [missing] -> pass (**J1**)
- `unescape::tests::test_unescape_byte_bad`: pass -> [missing] (**J2**)
- `unescape::tests::test_unescape_byte_good`: pass -> [missing] (**J2**)
- `unescape::tests::test_unescape_byte_str_good`: pass -> [missing] (**J2**)
- `unescape::tests::test_unescape_char_bad`: pass -> [missing] (**J2**)
- `unescape::tests::test_unescape_char_good`: pass -> [missing] (**J2**)
- `unescape::tests::test_unescape_raw_byte_str`: pass -> [missing] (**J2**)
- `unescape::tests::test_unescape_raw_str`: pass -> [missing] (**J2**)
- `unescape::tests::test_unescape_str_good`: pass -> [missing] (**J2**)
- `unescape::tests::test_unescape_str_warn`: pass -> [missing] (**J2**)

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

**Job group index**

- **J0**: `aarch64-apple`, `aarch64-gnu`, `arm-android`, `armhf-gnu`, `dist-i586-gnu-i586-i686-musl`, `i686-gnu-1`, `i686-gnu-nopt-1`, `i686-msvc-1`, `test-various`, `x86_64-apple-2`, `x86_64-gnu`, `x86_64-gnu-llvm-18-1`, `x86_64-gnu-llvm-18-2`, `x86_64-gnu-llvm-18-3`, `x86_64-gnu-llvm-19-1`, `x86_64-gnu-llvm-19-2`, `x86_64-gnu-llvm-19-3`, `x86_64-gnu-nopt`, `x86_64-gnu-stable`, `x86_64-mingw-1`, `x86_64-msvc-1`
- **J1**: `aarch64-apple`, `aarch64-gnu`, `arm-android`, `armhf-gnu`, `dist-i586-gnu-i586-i686-musl`, `i686-gnu-1`, `i686-gnu-2`, `i686-gnu-nopt-1`, `i686-gnu-nopt-2`, `i686-mingw-2`, `i686-mingw-3`, `i686-msvc-1`, `i686-msvc-2`, `test-various`, `x86_64-apple-1`, `x86_64-gnu`, `x86_64-gnu-llvm-18-1`, `x86_64-gnu-llvm-18-2`, `x86_64-gnu-llvm-18-3`, `x86_64-gnu-llvm-19-1`, `x86_64-gnu-llvm-19-2`, `x86_64-gnu-llvm-19-3`, `x86_64-gnu-nopt`, `x86_64-gnu-stable`, `x86_64-mingw-1`, `x86_64-mingw-2`, `x86_64-msvc-1`, `x86_64-msvc-2`
- **J2**: `aarch64-apple`, `aarch64-gnu`, `i686-gnu-2`, `i686-gnu-nopt-2`, `i686-mingw-2`, `i686-mingw-3`, `i686-msvc-2`, `x86_64-apple-1`, `x86_64-gnu`, `x86_64-gnu-llvm-18-3`, `x86_64-gnu-llvm-19-3`, `x86_64-gnu-nopt`, `x86_64-gnu-stable`, `x86_64-mingw-2`, `x86_64-msvc-2`
</details>
no pull requests found for branch "master"
##[error]Process completed with exit code 1.
Post job cleanup.

@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#136355 Add *_value methods to proc_macro lib 0a9ad6c0d61f7f7aedf8ef11564cd6c5ba46fae9 (link)
#137621 Add std support to cygwin target 1efbe7f5815f8fa1f89ced88e3f93cf7a920bb70 (link)
#137793 Stablize anonymous pipe 858ec722fa2c41bb210f2d7f7d1f2ab36cadfcea (link)
#138341 std: Mention clone-on-write mutation in Arc b04b807d1dce1b21dff2ee0aca7d5319912af73f (link)
#138517 Improve upvar analysis for deref of child capture 1921f4e7491320b44fd4faf5beb0d31405455b9b (link)
#138584 Update Rust Foundation links in Readme 777e0ab650223d1c920fa87810f04d09d1b0efed (link)
#138586 Document #![register_tool] fcd734f5bc6c925abe98caf4540b84fcf0d305a3 (link)
#138590 Flatten and simplify some control flow 🫓 66485756bee90a191b4677344a16a70265d40cf6 (link)
#138592 update change entry for #137147 2dda47fd8d1e4531fe4a9352ad25457d058593e2 (link)

previous master: 9bad8ac498

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

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (9c67cec): comparison URL.

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

@rustbot label: -perf-regression

Instruction count

This is the most reliable metric that we have; it was used to determine the overall result at the top of this comment. However, even this metric can sometimes exhibit noise.

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

Max RSS (memory usage)

Results (secondary 1.5%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

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

Cycles

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

Binary size

Results (primary 0.5%, secondary 0.3%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
0.5% [0.4%, 0.5%] 4
Regressions ❌
(secondary)
0.3% [0.0%, 1.0%] 12
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 0.5% [0.4%, 0.5%] 4

Bootstrap: 776.387s -> 774.895s (-0.19%)
Artifact size: 365.11 MiB -> 365.10 MiB (-0.00%)

@jhpratt jhpratt deleted the rollup-09pvfzu branch March 17, 2025 18:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-meta Area: Issues & PRs about the rust-lang/rust repository itself A-tidy Area: The tidy tool merged-by-bors This PR was explicitly merged by bors. O-unix Operating system: Unix-like O-windows Operating system: Windows 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-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.