Skip to content

Rollup of 7 pull requests #139996

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

Merged
merged 34 commits into from
Apr 18, 2025
Merged

Rollup of 7 pull requests #139996

merged 34 commits into from
Apr 18, 2025

Conversation

matthiaskrgr
Copy link
Member

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

petrosagg and others added 30 commits April 11, 2025 15:23
This PR is fixing a regression introduced by rust-lang#121646 that can lead to a
double free when dropping the channel.

The details of the bug can be found in the corresponding crossbeam PR
crossbeam-rs/crossbeam#1187

Signed-off-by: Petros Angelatos <[email protected]>
This allows us to better distinguish builtin and overloaded implicit
dereferences.
`#[target_feature]` attributes refer to a target-specific list of
features. Enabling certain features can imply enabling other features.
Certain features are always enabled on certain targets, since they are
required by the target's ABI. Features can also be enabled indirectly
based on other compiler flags.

Feature information is ultimately known to `rustc`. Rather than force
external tools to track it -- which may be wildly impractical due to
`-C target-cpu` -- have `rustdoc` output `rustc`'s feature data.
Since this uses `pat_adjustments`, I've also tweaked the documentation
to mention implicit deref patterns and made sure the pattern migration
diagnostic logic accounts for it. I'll adjust `ExprUseVisitor` in a
later commit and add some tests there for closure capture inference.
See the doc comment on `ResolvedPat` for more information. This and the
next couple commits split resolution apart from checking for path,
struct, and tuple struct patterns, in order to find the pattern's type
before peeling the scrutinee. This helps us avoid peeling the scrutinee
when the pattern could match it.

The reason this handles errors from resolution after peeling is for
struct and tuple struct patterns: we check their subpatterns even when
they fail to resolve, to potentially catch more resolution errors. By
doing this after peeling, we're able to use the updated `PatInfo`. I
don't know if there's currently any observable difference from using the
outdated `PatInfo`, but it could potentially be a source of subtle
diagnostic bugs in the future, so I'm opting to peel first.
See the previous commit for details. This doesn't yet extract the struct
pat's type's ADT def before peeling, but it should now be possible.
This is the use for the previous commits' refactors; see the messages
there for more information.
Implicit deref patterns allow previously ill-typed programs. Make sure
they're still ill-typed without the feature gate. I've thrown in a test
for `deref!(_)` too, though it seems it refers to `deref_patterns` as a
library feature.
- Clarifies the uses of implicit and explicit deref patterns
- Includes motivating examples for both syntaxes
- Shows the interaction with match ergonomics for reference types
- Cross-links with `string_deref_patterns` and `box_patterns`

The examples are contrived, but hopefully the intent comes across.
This adds two new warnings, both of which print the attribute
incorrectly as `#[]`. The next commit will fix this.
The current code assumes that the attribute is just an identifier, and
so misprints paths.
This shows places where the use of `name_or_empty` causes problems, i.e.
we print empty identifiers in error messages:
```
error: unrecognized field name ``
error: `` isn't a valid `#[macro_export]` argument
`#[no_sanitize()]` should be applied to a function
```
(The last one is about an attribute `#[no_sanitize("address")]`.)

The next commit will fix these.
I'm removing empty identifiers everywhere, because in practice they
always mean "no identifier" rather than "empty identifier". (An empty
identifier is impossible.) It's better to use `Option` to mean "no
identifier" because you then can't forget about the "no identifier"
possibility.

Some specifics:
- When testing an attribute for a single name, the commit uses the
  `has_name` method.
- When testing an attribute for multiple names, the commit uses the new
  `has_any_name` method.
- When using `match` on an attribute, the match arms now have `Some` on
  them.

In the tests, we now avoid printing empty identifiers by not printing
the identifier in the `error:` line at all, instead letting the carets
point out the problem.
…Nadrieril

deref patterns: implement implicit deref patterns

This implements implicit deref patterns (per https://hackmd.io/4qDDMcvyQ-GDB089IPcHGg#Implicit-deref-patterns) and adds tests and an unstable book chapter.

Best reviewed commit-by-commit. Overall there's a lot of additions, but a lot of that is tests, documentation, and simple(?) refactoring.

Tracking issue: rust-lang#87121

r? ``@Nadrieril``
…ature_information, r=aDotInTheVoid

rustdoc-json: Output target feature information

`#[target_feature]` attributes refer to a target-specific list of features. Enabling certain features can imply enabling other features. Certain features are always enabled on certain targets, since they are required by the target's ABI. Features can also be enabled indirectly based on other compiler flags.

Feature information is ultimately known to `rustc`. Rather than force external tools to track it – which may be wildly impractical due to `-C target-cpu` – have `rustdoc` output `rustc`'s feature data.

This change is motivated by obi1kenobi/cargo-semver-checks#1246, which intends to detect semver hazards caused by `#[target_feature]`.

try-job: aarch64-gnu
try-job: armhf-gnu
try-job: test-various
try-job: x86_64-msvc-1
try-job: i686-msvc-1
try-job: x86_64-mingw-1
try-job: aarch64-apple
…alfJung,tgross35

sync::mpsc: prevent double free on `Drop`

This PR is fixing a regression introduced by rust-lang#121646 that can lead to a double free when dropping the channel.

The details of the bug can be found in the corresponding crossbeam PR crossbeam-rs/crossbeam#1187
@bors bors added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Apr 18, 2025
@matthiaskrgr
Copy link
Member Author

@bors retry

@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 Apr 18, 2025
@matthiaskrgr matthiaskrgr added the CI-spurious-fail-msvc CI spurious failure: target env msvc label Apr 18, 2025
@bors
Copy link
Collaborator

bors commented Apr 18, 2025

⌛ Testing commit 8cb57ed with merge 8aa6aed...

bors added a commit to rust-lang-ci/rust that referenced this pull request Apr 18, 2025
…iaskrgr

Rollup of 7 pull requests

Successful merges:

 - rust-lang#138528 (deref patterns: implement implicit deref patterns)
 - rust-lang#139393 (rustdoc-json: Output target feature information)
 - rust-lang#139553 (sync::mpsc: prevent double free on `Drop`)
 - rust-lang#139615 (Remove `name_or_empty`)
 - rust-lang#139853 (Disable combining LLD with external llvm-config)
 - rust-lang#139913 (rustdoc/clean: Fix lowering of fn params (fixes correctness & HIR vs. middle parity regressions))
 - rust-lang#139942 (Ignore aix for tests/ui/erros/pic-linker.rs)

r? `@ghost`
`@rustbot` modify labels: rollup
@rust-log-analyzer
Copy link
Collaborator

The job x86_64-msvc-1 failed! Check out the build log: (web) (plain)

Click to see the possible cause of the failure (guessed by this bot)
failures:

---- [codegen] tests\codegen\target-feature-overrides.rs#COMPAT stdout ----

error in revision `COMPAT`: auxiliary build of D:\a\rust\rust\tests\auxiliary\minicore.rs failed to compile: 
status: exit code: 1
command: PATH="D:\a\rust\rust\build\x86_64-pc-windows-msvc\stage2\bin;C:\Program Files (x86)\Windows Kits\10\bin\x64;C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.43.34808\bin\HostX64\x64;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.43.34808\bin\HostX64\x64;D:\a\rust\rust\build\x86_64-pc-windows-msvc\stage0-bootstrap-tools\x86_64-pc-windows-msvc\release\deps;D:\a\rust\rust\build\x86_64-pc-windows-msvc\stage0\bin;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\bin;C:\Users\runneradmin\bin;D:\a\rust\rust\ninja;D:\a\rust\rust\sccache;C:\Program Files\MongoDB\Server\7.0\bin;C:\vcpkg;C:\tools\zstd;C:\hostedtoolcache\windows\stack\3.5.1\x64;C:\cabal\bin;C:\ghcup\bin;C:\mingw64\bin;C:\Program Files\dotnet;C:\Program Files\MySQL\MySQL Server 8.0\bin;C:\Program Files\R\R-4.4.2\bin\x64;C:\SeleniumWebDrivers\GeckoDriver;C:\SeleniumWebDrivers\EdgeDriver;C:\SeleniumWebDrivers\ChromeDriver;C:\Program Files (x86)\sbt\bin;C:\Program Files (x86)\GitHub CLI;C:\Program Files\Git\usr\bin;C:\Program Files (x86)\pipx_bin;C:\npm\prefix;C:\hostedtoolcache\windows\go\1.23.8\x64\bin;C:\hostedtoolcache\windows\Python\3.9.13\x64\Scripts;C:\hostedtoolcache\windows\Python\3.9.13\x64;C:\hostedtoolcache\windows\Ruby\3.3.8\x64\bin;C:\Program Files\OpenSSL\bin;C:\tools\kotlinc\bin;C:\hostedtoolcache\windows\Java_Temurin-Hotspot_jdk\17.0.14-7\x64\bin;C:\Program Files\ImageMagick-7.1.1-Q16-HDRI;C:\Program Files\Microsoft SDKs\Azure\CLI2\wbin;C:\ProgramData\kind;C:\ProgramData\Chocolatey\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Program Files\PowerShell\7;C:\Program Files\Microsoft\Web Platform Installer;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn;C:\Program Files\Microsoft SQL Server\150\Tools\Binn;C:\Program Files\dotnet;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit;C:\Program Files (x86)\WiX Toolset v3.14\bin;C:\Program Files\Microsoft SQL Server\130\DTS\Binn;C:\Program Files\Microsoft SQL Server\140\DTS\Binn;C:\Program Files\Microsoft SQL Server\150\DTS\Binn;C:\Program Files\Microsoft SQL Server\160\DTS\Binn;C:\ProgramData\chocolatey\lib\pulumi\tools\Pulumi\bin;C:\Program Files\CMake\bin;C:\Strawberry\c\bin;C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin;C:\ProgramData\chocolatey\lib\maven\apache-maven-3.9.9\bin;C:\Program Files\Microsoft Service Fabric\bin\Fabric\Fabric.Code;C:\Program Files\Microsoft SDKs\Service Fabric\Tools\ServiceFabricLocalClusterManager;C:\Program Files\nodejs;C:\Program Files\Git\cmd;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\bin;C:\Program Files\GitHub CLI;C:\tools\php;C:\Program Files (x86)\sbt\bin;C:\Program Files\Amazon\AWSCLIV2;C:\Program Files\Amazon\SessionManagerPlugin\bin;C:\Program Files\Amazon\AWSSAMCLI\bin;C:\Program Files\Microsoft SQL Server\130\Tools\Binn;C:\Program Files\mongosh;C:\Program Files\LLVM\bin;C:\Program Files (x86)\LLVM\bin;C:\Users\runneradmin\.dotnet\tools;C:\Users\runneradmin\.cargo\bin;C:\Users\runneradmin\AppData\Local\Microsoft\WindowsApps;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.43.34808\bin\HostX64\x64" "D:\\a\\rust\\rust\\build\\x86_64-pc-windows-msvc\\stage2\\bin\\rustc.exe" "D:\\a\\rust\\rust\\tests\\auxiliary\\minicore.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=C:\\Users\\runneradmin\\.cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=D:\\a\\rust\\rust\\vendor" "--sysroot" "D:\\a\\rust\\rust\\build\\x86_64-pc-windows-msvc\\stage2" "--cfg" "compat" "--check-cfg" "cfg(test,FALSE,compat,incompat)" "-O" "-Cdebug-assertions=no" "-C" "prefer-dynamic" "-o" "D:\\a\\rust\\rust\\build\\x86_64-pc-windows-msvc\\test\\codegen\\target-feature-overrides.COMPAT\\libminicore.rlib" "-A" "unused" "-A" "internal_features" "-Crpath" "-Cdebuginfo=0" "--target=x86_64-unknown-linux-gnu" "-Copt-level=3" "-Ctarget-feature=+avx2" "-Cpanic=abort" "--crate-type" "rlib" "-Cpanic=abort"
stdout: none
--- stderr -------------------------------
error: couldn't create a temp dir: Access is denied. (os error 5) at path "C:\\Users\\RUNNER~1\\AppData\\Local\\Temp\\rustcWP1k3R"

error: aborting due to 1 previous error
------------------------------------------


---
test result: FAILED. 699 passed; 1 failed; 144 ignored; 0 measured; 3 filtered out; finished in 28.45s

Some tests failed in compiletest suite=codegen mode=codegen host=x86_64-pc-windows-msvc target=x86_64-pc-windows-msvc
Build completed unsuccessfully in 1:36:46
make: *** [Makefile:113: ci-msvc-py] Error 1
  local time: Fri Apr 18 10:35:11 CUT 2025
  network time: Fri, 18 Apr 2025 10:35:12 GMT
##[error]Process completed with exit code 2.
Post job cleanup.
[command]"C:\Program Files\Git\bin\git.exe" version

@bors
Copy link
Collaborator

bors commented Apr 18, 2025

💔 Test failed - checks-actions

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

@bors retry

@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 Apr 18, 2025
@bors
Copy link
Collaborator

bors commented Apr 18, 2025

⌛ Testing commit 8cb57ed with merge 191df20...

@bors
Copy link
Collaborator

bors commented Apr 18, 2025

☀️ Test successful - checks-actions
Approved by: matthiaskrgr
Pushing 191df20 to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Apr 18, 2025
@bors bors merged commit 191df20 into rust-lang:master Apr 18, 2025
7 checks passed
@rustbot rustbot added this to the 1.88.0 milestone Apr 18, 2025
Copy link

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 6a0bd27 (parent) -> 191df20 (this PR)

Test differences

Show 165 test diffs

Stage 1

  • [rustdoc-json] tests/rustdoc-json/targets/aarch64_apple_darwin.rs: [missing] -> ignore (only executed when the target is aarch64-apple-darwin) (J0)
  • [rustdoc-json] tests/rustdoc-json/targets/aarch64_reflects_compiler_options.rs: [missing] -> ignore (only executed when the architecture is aarch64) (J0)
  • [rustdoc-json] tests/rustdoc-json/targets/aarch64_unknown_linux_gnu.rs: [missing] -> ignore (only executed when the target is aarch64-unknown-linux-gnu) (J0)
  • [rustdoc-json] tests/rustdoc-json/targets/i686_pc_windows_msvc.rs: [missing] -> ignore (only executed when the target is i686-pc-windows-msvc) (J0)
  • [rustdoc-json] tests/rustdoc-json/targets/i686_unknown_linux_gnu.rs: [missing] -> ignore (only executed when the target is i686-unknown-linux-gnu) (J0)
  • [rustdoc-json] tests/rustdoc-json/targets/x86_64_apple_darwin.rs: [missing] -> ignore (only executed when the target is x86_64-apple-darwin) (J0)
  • [rustdoc-json] tests/rustdoc-json/targets/x86_64_pc_windows_gnu.rs: [missing] -> ignore (only executed when the target is x86_64-pc-windows-gnu) (J0)
  • [rustdoc-json] tests/rustdoc-json/targets/x86_64_pc_windows_msvc.rs: [missing] -> ignore (only executed when the target is x86_64-pc-windows-msvc) (J0)
  • [rustdoc-json] tests/rustdoc-json/targets/x86_64_reflects_compiler_options.rs: [missing] -> pass (J0)
  • [rustdoc-json] tests/rustdoc-json/targets/x86_64_unknown_linux_gnu.rs: [missing] -> pass (J0)
  • [rustdoc] tests/rustdoc/anon-fn-params.rs: [missing] -> pass (J0)
  • [rustdoc] tests/rustdoc/assoc-fns.rs: [missing] -> pass (J0)
  • [rustdoc] tests/rustdoc/inline_cross/fn-ptr-ty.rs: [missing] -> pass (J0)
  • [rustdoc] tests/rustdoc/inline_cross/fn-type.rs: pass -> [missing] (J0)
  • [ui] tests/ui/pattern/deref-patterns/bindings.rs: pass -> [missing] (J0)
  • [ui] tests/ui/pattern/deref-patterns/bindings.rs#explicit: [missing] -> pass (J0)
  • [ui] tests/ui/pattern/deref-patterns/bindings.rs#implicit: [missing] -> pass (J0)
  • [ui] tests/ui/pattern/deref-patterns/branch.rs: pass -> [missing] (J0)
  • [ui] tests/ui/pattern/deref-patterns/branch.rs#explicit: [missing] -> pass (J0)
  • [ui] tests/ui/pattern/deref-patterns/branch.rs#implicit: [missing] -> pass (J0)
  • [ui] tests/ui/pattern/deref-patterns/implicit-const-deref.rs: [missing] -> pass (J0)
  • [ui] tests/ui/pattern/deref-patterns/implicit-cow-deref.rs: [missing] -> pass (J0)
  • [ui] tests/ui/pattern/deref-patterns/needs-gate.rs: [missing] -> pass (J0)
  • [ui] tests/ui/pattern/deref-patterns/recursion-limit.rs: [missing] -> pass (J0)
  • [ui] tests/ui/pattern/deref-patterns/unsatisfied-bounds.rs: [missing] -> pass (J0)
  • errors::verify_incremental_unknown_item_13: pass -> [missing] (J15)
  • errors::verify_incremental_unknown_rustc_clean_argument_13: [missing] -> pass (J15)
  • errors::verify_passes_unrecognized_argument_124: [missing] -> pass (J15)
  • errors::verify_passes_unrecognized_field_124: pass -> [missing] (J15)

Stage 2

  • [rustdoc-json] tests/rustdoc-json/targets/aarch64_reflects_compiler_options.rs: [missing] -> pass (J1)
  • [rustdoc-json] tests/rustdoc-json/targets/x86_64_reflects_compiler_options.rs: [missing] -> ignore (only executed when the architecture is x86_64) (J1)
  • [ui] tests/ui/pattern/deref-patterns/bindings.rs: pass -> [missing] (J2)
  • [ui] tests/ui/pattern/deref-patterns/bindings.rs#explicit: [missing] -> pass (J2)
  • [ui] tests/ui/pattern/deref-patterns/bindings.rs#implicit: [missing] -> pass (J2)
  • [ui] tests/ui/pattern/deref-patterns/branch.rs: pass -> [missing] (J2)
  • [ui] tests/ui/pattern/deref-patterns/branch.rs#explicit: [missing] -> pass (J2)
  • [ui] tests/ui/pattern/deref-patterns/branch.rs#implicit: [missing] -> pass (J2)
  • [ui] tests/ui/pattern/deref-patterns/implicit-const-deref.rs: [missing] -> pass (J2)
  • [ui] tests/ui/pattern/deref-patterns/implicit-cow-deref.rs: [missing] -> pass (J2)
  • [ui] tests/ui/pattern/deref-patterns/needs-gate.rs: [missing] -> pass (J2)
  • [ui] tests/ui/pattern/deref-patterns/recursion-limit.rs: [missing] -> pass (J2)
  • [ui] tests/ui/pattern/deref-patterns/unsatisfied-bounds.rs: [missing] -> pass (J2)
  • [rustdoc-json] tests/rustdoc-json/targets/x86_64_apple_darwin.rs: [missing] -> ignore (only executed when the target is x86_64-apple-darwin) (J3)
  • [rustdoc-json] tests/rustdoc-json/targets/i686_unknown_linux_gnu.rs: [missing] -> ignore (only executed when the target is i686-unknown-linux-gnu) (J4)
  • [rustdoc-json] tests/rustdoc-json/targets/aarch64_apple_darwin.rs: [missing] -> ignore (only executed when the target is aarch64-apple-darwin) (J5)
  • [rustdoc-json] tests/rustdoc-json/targets/aarch64_reflects_compiler_options.rs: [missing] -> ignore (only executed when the architecture is aarch64) (J6)
  • [rustdoc-json] tests/rustdoc-json/targets/x86_64_reflects_compiler_options.rs: [missing] -> pass (J6)
  • [rustdoc-json] tests/rustdoc-json/targets/x86_64_pc_windows_gnu.rs: [missing] -> ignore (only executed when the target is x86_64-pc-windows-gnu) (J7)
  • [rustdoc-json] tests/rustdoc-json/targets/aarch64_apple_darwin.rs: [missing] -> pass (J8)
  • [rustdoc-json] tests/rustdoc-json/targets/x86_64_pc_windows_msvc.rs: [missing] -> ignore (only executed when the target is x86_64-pc-windows-msvc) (J9)
  • [rustdoc-json] tests/rustdoc-json/targets/aarch64_unknown_linux_gnu.rs: [missing] -> pass (J10)
  • [rustdoc-json] tests/rustdoc-json/targets/aarch64_unknown_linux_gnu.rs: [missing] -> ignore (only executed when the target is aarch64-unknown-linux-gnu) (J11)
  • [rustdoc] tests/rustdoc/anon-fn-params.rs: [missing] -> pass (J12)
  • [rustdoc] tests/rustdoc/assoc-fns.rs: [missing] -> pass (J12)
  • [rustdoc] tests/rustdoc/inline_cross/fn-ptr-ty.rs: [missing] -> pass (J12)
  • [rustdoc] tests/rustdoc/inline_cross/fn-type.rs: pass -> [missing] (J12)
  • [rustdoc-json] tests/rustdoc-json/targets/x86_64_unknown_linux_gnu.rs: [missing] -> pass (J13)
  • [rustdoc-json] tests/rustdoc-json/targets/x86_64_pc_windows_msvc.rs: [missing] -> pass (J14)
  • [rustdoc-json] tests/rustdoc-json/targets/x86_64_pc_windows_gnu.rs: [missing] -> pass (J16)
  • [rustdoc-json] tests/rustdoc-json/targets/x86_64_unknown_linux_gnu.rs: [missing] -> ignore (only executed when the target is x86_64-unknown-linux-gnu) (J17)
  • [rustdoc-json] tests/rustdoc-json/targets/i686_pc_windows_msvc.rs: [missing] -> pass (J18)
  • [rustdoc-json] tests/rustdoc-json/targets/i686_pc_windows_msvc.rs: [missing] -> ignore (only executed when the target is i686-pc-windows-msvc) (J19)
  • [rustdoc-json] tests/rustdoc-json/targets/x86_64_apple_darwin.rs: [missing] -> pass (J20)
  • [rustdoc-json] tests/rustdoc-json/targets/i686_unknown_linux_gnu.rs: [missing] -> pass (J21)

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

Job group index

Job duration changes

  1. dist-aarch64-linux: 5446.4s -> 7710.2s (41.6%)
  2. dist-x86_64-apple: 9868.7s -> 7152.2s (-27.5%)
  3. x86_64-apple-1: 9536.5s -> 8192.0s (-14.1%)
  4. aarch64-apple: 3498.1s -> 3939.9s (12.6%)
  5. x86_64-apple-2: 5852.2s -> 5135.4s (-12.2%)
  6. i686-gnu-nopt-2: 6826.0s -> 6358.8s (-6.8%)
  7. test-various: 4132.4s -> 4365.1s (5.6%)
  8. dist-i686-mingw: 7808.4s -> 8232.8s (5.4%)
  9. dist-aarch64-apple: 4532.6s -> 4755.4s (4.9%)
  10. x86_64-msvc-1: 8587.1s -> 8985.4s (4.6%)
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.

@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#138528 deref patterns: implement implicit deref patterns a974e4bf41019445715eaf1edb3c12c3a8d77a8c (link)
#139393 rustdoc-json: Output target feature information ef46fdd26fb0489920d14f9279e7d5647d7eb26b (link)
#139553 sync::mpsc: prevent double free on Drop f99a892566f6420187c3668b7ff7d840aecf1e97 (link)
#139615 Remove name_or_empty 756012b2b9ce1efb42b55b56feadec6eb4c235f1 (link)
#139853 Disable combining LLD with external llvm-config cf4c05065ce4518e931e9cf82eab73219aaa3183 (link)
#139913 rustdoc/clean: Fix lowering of fn params (fixes correctness… 17828f6313c0a06b81fa6caeeec45e227283c695 (link)
#139942 Ignore aix for tests/ui/erros/pic-linker.rs 3cd35198dba7fd98c8efc226348c0bc0fa10990b (link)

previous master: 6a0bd27619

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 (191df20): comparison URL.

Overall result: no relevant changes - no action needed

@rustbot label: -perf-regression

Instruction count

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

Max RSS (memory usage)

Results (primary -0.5%, 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.6% [0.6%, 0.7%] 3
Regressions ❌
(secondary)
1.5% [1.5%, 1.5%] 1
Improvements ✅
(primary)
-1.5% [-3.1%, -0.5%] 3
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) -0.5% [-3.1%, 0.7%] 6

Cycles

Results (primary 0.9%)

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)
3.0% [1.0%, 5.0%] 2
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-0.6% [-0.6%, -0.5%] 3
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 0.9% [-0.6%, 5.0%] 5

Binary size

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

Bootstrap: 771.347s -> 772.31s (0.12%)
Artifact size: 365.02 MiB -> 365.02 MiB (0.00%)

github-actions bot pushed a commit to model-checking/verify-rust-std that referenced this pull request Apr 19, 2025
…iaskrgr

Rollup of 7 pull requests

Successful merges:

 - rust-lang#138528 (deref patterns: implement implicit deref patterns)
 - rust-lang#139393 (rustdoc-json: Output target feature information)
 - rust-lang#139553 (sync::mpsc: prevent double free on `Drop`)
 - rust-lang#139615 (Remove `name_or_empty`)
 - rust-lang#139853 (Disable combining LLD with external llvm-config)
 - rust-lang#139913 (rustdoc/clean: Fix lowering of fn params (fixes correctness & HIR vs. middle parity regressions))
 - rust-lang#139942 (Ignore aix for tests/ui/erros/pic-linker.rs)

r? `@ghost`
`@rustbot` modify labels: rollup
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-attributes Area: Attributes (`#[…]`, `#![…]`) A-compiletest Area: The compiletest test runner A-rustdoc-json Area: Rustdoc JSON backend A-testsuite Area: The testsuite used to check the correctness of rustc CI-spurious-fail-msvc CI spurious failure: target env msvc merged-by-bors This PR was explicitly merged by bors. 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. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output.
Projects
None yet
Development

Successfully merging this pull request may close these issues.