Skip to content

Conversation

matthiaskrgr
Copy link
Member

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

thaliaarchi and others added 10 commits March 11, 2025 18:01
This parallels the layout of `core::str`.
Reduce the amount of notifications sent to all the Exploit Mitigations
PG by removing it from some of the paths.
…htriplett

Implement `SliceIndex` for `ByteStr`

Implement `Index` and `IndexMut` for `ByteStr` in terms of `SliceIndex`. Implement it for the same types that `&[u8]` supports (a superset of those supported for `&str`, which does not have `usize` and `ops::IndexRange`).

At the same time, move compare and index traits to a separate file in the `bstr` module, to give it more space to grow as more functionality is added (e.g., iterators and string-like ops). Order the items in `bstr/traits.rs` similarly to `str/traits.rs`.

cc `@joshtriplett`

`ByteStr`/`ByteString` tracking issue: rust-lang#134915
Move `fd` into `std::sys`

Move platform definitions of `fd` into `std::sys`, as part of rust-lang#117276.

Unlike other modules directly under `std::sys`, this is only available on some platforms and I have not provided a fallback abstraction for unsupported platforms. That is similar to how `std::os::fd` is gated to only supported platforms.

Also, fix the `unsafe_op_in_unsafe_fn` lint, which was allowed for the Unix fd impl. Since macro expansions from `std::sys::pal::unix::weak` trigger this lint, fix it there too.

cc `@joboet,` `@ChrisDenton`

try-job: x86_64-gnu-aux
…g-notifications, r=cuviper

Change notifications for Exploit Mitigations PG

Reduce the amount of notifications sent to all the Exploit Mitigations PG by removing it from some of the paths.
@rustbot rustbot added A-meta Area: Issues & PRs about the rust-lang/rust repository itself O-hermit Operating System: Hermit O-SGX Target: SGX O-unix Operating system: Unix-like O-wasi Operating system: Wasi, Webassembly System Interface PG-exploit-mitigations Project group: Exploit mitigations 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 Apr 5, 2025
@matthiaskrgr
Copy link
Member Author

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Apr 5, 2025

📌 Commit 0823b34 has been approved by matthiaskrgr

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

bors commented Apr 5, 2025

⌛ Testing commit 0823b34 with merge 0e9c3e5...

@bors
Copy link
Collaborator

bors commented Apr 5, 2025

☀️ Test successful - checks-actions
Approved by: matthiaskrgr
Pushing 0e9c3e5 to master...

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

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#138368 KCFI: Add KCFI arity indicator support cea70fa710aa09f73730533e1eb9233cd80becec (link)
#138381 Implement SliceIndex for ByteStr e953cc78b183680a7970393abf9311241d79ee27 (link)
#139092 Move fd into std::sys 7b86f6b5a0dac3adcf1e0a1ece7cf19ebf47cc9d (link)
#139398 Change notifications for Exploit Mitigations PG 70ce28eb97cb6bd67fdfbe94938a8fc7ff8c38b1 (link)

previous master: da8321773a

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

github-actions bot commented Apr 5, 2025

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 da83217 (parent) -> 0e9c3e5 (this PR)

Test differences

Show 93 test diffs

Stage 0

  • sys::fd::unix::tests::limit_vector_count: [missing] -> pass (J6)
  • sys::pal::unix::fd::tests::limit_vector_count: pass -> [missing] (J6)

Stage 1

  • errors::verify_session_binary_float_literal_not_supported_38: pass -> [missing] (J0)
  • errors::verify_session_binary_float_literal_not_supported_39: [missing] -> pass (J0)
  • errors::verify_session_branch_protection_requires_aarch64_23: pass -> [missing] (J0)
  • errors::verify_session_branch_protection_requires_aarch64_24: [missing] -> pass (J0)
  • errors::verify_session_crate_name_empty_27: pass -> [missing] (J0)
  • errors::verify_session_crate_name_empty_28: [missing] -> pass (J0)
  • errors::verify_session_embed_source_insufficient_dwarf_version_19: pass -> [missing] (J0)
  • errors::verify_session_embed_source_insufficient_dwarf_version_20: [missing] -> pass (J0)
  • errors::verify_session_embed_source_requires_debug_info_20: pass -> [missing] (J0)
  • errors::verify_session_embed_source_requires_debug_info_21: [missing] -> pass (J0)
  • errors::verify_session_failed_to_create_profiler_46: pass -> [missing] (J0)
  • errors::verify_session_failed_to_create_profiler_47: [missing] -> pass (J0)
  • errors::verify_session_file_is_not_writeable_25: pass -> [missing] (J0)
  • errors::verify_session_file_is_not_writeable_26: [missing] -> pass (J0)
  • errors::verify_session_file_write_fail_26: pass -> [missing] (J0)
  • errors::verify_session_file_write_fail_27: [missing] -> pass (J0)
  • errors::verify_session_function_return_requires_x86_or_x86_64_41: pass -> [missing] (J0)
  • errors::verify_session_function_return_requires_x86_or_x86_64_42: [missing] -> pass (J0)
  • errors::verify_session_function_return_thunk_extern_requires_non_large_code_model_42: pass -> [missing] (J0)
  • errors::verify_session_function_return_thunk_extern_requires_non_large_code_model_43: [missing] -> pass (J0)
  • errors::verify_session_hexadecimal_float_literal_not_supported_36: pass -> [missing] (J0)
  • errors::verify_session_hexadecimal_float_literal_not_supported_37: [missing] -> pass (J0)
  • errors::verify_session_incompatible_linker_flavor_40: pass -> [missing] (J0)
  • errors::verify_session_incompatible_linker_flavor_41: [missing] -> pass (J0)
  • errors::verify_session_int_literal_too_large_35: pass -> [missing] (J0)
  • errors::verify_session_int_literal_too_large_36: [missing] -> pass (J0)
  • errors::verify_session_invalid_character_in_crate_name_28: pass -> [missing] (J0)
  • errors::verify_session_invalid_character_in_crate_name_29: [missing] -> pass (J0)
  • errors::verify_session_invalid_float_literal_suffix_34: pass -> [missing] (J0)
  • errors::verify_session_invalid_float_literal_suffix_35: [missing] -> pass (J0)
  • errors::verify_session_invalid_float_literal_width_33: pass -> [missing] (J0)
  • errors::verify_session_invalid_float_literal_width_34: [missing] -> pass (J0)
  • errors::verify_session_invalid_int_literal_width_30: pass -> [missing] (J0)
  • errors::verify_session_invalid_int_literal_width_31: [missing] -> pass (J0)
  • errors::verify_session_invalid_literal_suffix_29: pass -> [missing] (J0)
  • errors::verify_session_invalid_literal_suffix_30: [missing] -> pass (J0)
  • errors::verify_session_invalid_num_literal_base_prefix_31: pass -> [missing] (J0)
  • errors::verify_session_invalid_num_literal_base_prefix_32: [missing] -> pass (J0)
  • errors::verify_session_invalid_num_literal_suffix_32: pass -> [missing] (J0)
  • errors::verify_session_invalid_num_literal_suffix_33: [missing] -> pass (J0)
  • errors::verify_session_octal_float_literal_not_supported_37: pass -> [missing] (J0)
  • errors::verify_session_octal_float_literal_not_supported_38: [missing] -> pass (J0)
  • errors::verify_session_sanitizer_kcfi_arity_requires_kcfi_15: [missing] -> pass (J0)
  • errors::verify_session_sanitizer_kcfi_requires_panic_abort_15: pass -> [missing] (J0)
  • errors::verify_session_sanitizer_kcfi_requires_panic_abort_16: [missing] -> pass (J0)
  • errors::verify_session_soft_float_deprecated_48: pass -> [missing] (J0)
  • errors::verify_session_soft_float_deprecated_49: [missing] -> pass (J0)
  • errors::verify_session_soft_float_ignored_47: pass -> [missing] (J0)
  • errors::verify_session_soft_float_ignored_48: [missing] -> pass (J0)
  • errors::verify_session_split_debuginfo_unstable_platform_24: pass -> [missing] (J0)
  • errors::verify_session_split_debuginfo_unstable_platform_25: [missing] -> pass (J0)
  • errors::verify_session_split_lto_unit_requires_lto_16: pass -> [missing] (J0)
  • errors::verify_session_split_lto_unit_requires_lto_17: [missing] -> pass (J0)
  • errors::verify_session_target_small_data_threshold_not_supported_22: pass -> [missing] (J0)
  • errors::verify_session_target_small_data_threshold_not_supported_23: [missing] -> pass (J0)
  • errors::verify_session_target_stack_protector_not_supported_21: pass -> [missing] (J0)
  • errors::verify_session_target_stack_protector_not_supported_22: [missing] -> pass (J0)
  • errors::verify_session_unstable_virtual_function_elimination_17: pass -> [missing] (J0)
  • errors::verify_session_unstable_virtual_function_elimination_18: [missing] -> pass (J0)
  • errors::verify_session_unsupported_crate_type_for_target_39: pass -> [missing] (J0)
  • errors::verify_session_unsupported_crate_type_for_target_40: [missing] -> pass (J0)
  • errors::verify_session_unsupported_dwarf_version_18: pass -> [missing] (J0)
  • errors::verify_session_unsupported_dwarf_version_19: [missing] -> pass (J0)
  • errors::verify_session_unsupported_reg_struct_return_arch_45: pass -> [missing] (J0)
  • errors::verify_session_unsupported_reg_struct_return_arch_46: [missing] -> pass (J0)
  • errors::verify_session_unsupported_regparm_43: pass -> [missing] (J0)
  • errors::verify_session_unsupported_regparm_44: [missing] -> pass (J0)
  • errors::verify_session_unsupported_regparm_arch_44: pass -> [missing] (J0)
  • errors::verify_session_unsupported_regparm_arch_45: [missing] -> pass (J0)
  • [ui] tests/ui/sanitizer/kcfi-arity-requires-kcfi.rs: [missing] -> pass (J2)
  • [ui] tests/ui/sanitizer/kcfi-arity-requires-llvm-21-0-0.rs: [missing] -> pass (J2)
  • [assembly] tests/assembly/sanitizer/kcfi/emit-arity-indicator.rs#x86_64: [missing] -> ignore (ignored when the LLVM version 19.1.1 is older than 21.0.0) (J3)
  • [codegen] tests/codegen/sanitizer/kcfi/add-kcfi-arity-flag.rs#x86_64: [missing] -> ignore (ignored when the LLVM version 19.1.1 is older than 21.0.0) (J3)
  • [assembly] tests/assembly/sanitizer/kcfi/emit-arity-indicator.rs#x86_64: [missing] -> ignore (ignored when the LLVM version 18.1.3 is older than 21.0.0) (J5)
  • [codegen] tests/codegen/sanitizer/kcfi/add-kcfi-arity-flag.rs#x86_64: [missing] -> ignore (ignored when the LLVM version 18.1.3 is older than 21.0.0) (J5)
  • sys::fd::unix::tests::limit_vector_count: [missing] -> pass (J8)
  • sys::pal::unix::fd::tests::limit_vector_count: pass -> [missing] (J8)

Stage 2

  • [assembly] tests/assembly/sanitizer/kcfi/emit-arity-indicator.rs#x86_64: [missing] -> ignore (ignored when the LLVM version 18.1.3 is older than 21.0.0) (J1)
  • [codegen] tests/codegen/sanitizer/kcfi/add-kcfi-arity-flag.rs#x86_64: [missing] -> ignore (ignored when the LLVM version 18.1.3 is older than 21.0.0) (J1)
  • [ui] tests/ui/sanitizer/kcfi-arity-requires-kcfi.rs: [missing] -> ignore (ignored on targets without kernel CFI sanitizer) (J4)
  • [ui] tests/ui/sanitizer/kcfi-arity-requires-llvm-21-0-0.rs: [missing] -> ignore (ignored on targets without kernel CFI sanitizer) (J4)
  • [ui] tests/ui/sanitizer/kcfi-arity-requires-kcfi.rs: [missing] -> pass (J7)
  • [ui] tests/ui/sanitizer/kcfi-arity-requires-llvm-21-0-0.rs: [missing] -> pass (J7)
  • [assembly] tests/assembly/sanitizer/kcfi/emit-arity-indicator.rs#x86_64: [missing] -> ignore (ignored when the LLVM version 20.1.2 is older than 21.0.0) (J9)
  • [codegen] tests/codegen/sanitizer/kcfi/add-kcfi-arity-flag.rs#x86_64: [missing] -> ignore (ignored when the LLVM version 20.1.2 is older than 21.0.0) (J9)
  • [assembly] tests/assembly/sanitizer/kcfi/emit-arity-indicator.rs#x86_64: [missing] -> ignore (ignored when the LLVM version 19.1.1 is older than 21.0.0) (J10)
  • [codegen] tests/codegen/sanitizer/kcfi/add-kcfi-arity-flag.rs#x86_64: [missing] -> ignore (ignored when the LLVM version 19.1.1 is older than 21.0.0) (J10)

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

Job group index

  • J0: aarch64-apple, aarch64-gnu, i686-gnu-2, i686-gnu-nopt-2, 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
  • J1: x86_64-gnu-llvm-18-1, x86_64-gnu-llvm-18-2
  • J2: x86_64-gnu-llvm-18-3, x86_64-gnu-llvm-19-3
  • J3: x86_64-gnu-llvm-19-3
  • J4: aarch64-apple, 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-llvm-18-2, x86_64-gnu-llvm-19-2, x86_64-mingw-1, x86_64-msvc-1
  • J5: x86_64-gnu-llvm-18-3
  • J6: mingw-check
  • J7: aarch64-gnu, x86_64-gnu, x86_64-gnu-llvm-18-1, x86_64-gnu-llvm-19-1, x86_64-gnu-nopt, x86_64-gnu-stable
  • J8: aarch64-apple, aarch64-gnu, arm-android, armhf-gnu, dist-i586-gnu-i586-i686-musl, i686-gnu-1, i686-gnu-nopt-1, 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
  • J9: 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-1, x86_64-gnu, x86_64-gnu-nopt, x86_64-gnu-stable, x86_64-mingw-1, x86_64-msvc-1
  • J10: x86_64-gnu-llvm-19-1, x86_64-gnu-llvm-19-2

Job duration changes

  1. x86_64-apple-1: 7171.1s -> 8439.5s (17.7%)
  2. x86_64-gnu-aux: 5908.7s -> 6278.8s (6.3%)
  3. dist-loongarch64-musl: 5330.5s -> 5581.2s (4.7%)
  4. dist-x86_64-musl: 7049.6s -> 7371.8s (4.6%)
  5. dist-aarch64-linux: 7477.6s -> 7778.6s (4.0%)
  6. aarch64-gnu: 6374.5s -> 6623.1s (3.9%)
  7. dist-aarch64-apple: 4311.8s -> 4478.4s (3.9%)
  8. x86_64-mingw-2: 6976.9s -> 7233.3s (3.7%)
  9. aarch64-gnu-debug: 4043.5s -> 4169.8s (3.1%)
  10. x86_64-msvc-2: 6836.3s -> 7049.0s (3.1%)
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

Finished benchmarking commit (0e9c3e5): comparison URL.

Overall result: ❌ regressions - 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.4% [0.4%, 0.4%] 1
Regressions ❌
(secondary)
0.4% [0.4%, 0.4%] 3
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 0.4% [0.4%, 0.4%] 1

Max RSS (memory usage)

Results (primary 3.3%, secondary -0.7%)

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.3% [1.9%, 4.7%] 2
Regressions ❌
(secondary)
1.3% [1.3%, 1.3%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-1.4% [-1.4%, -1.3%] 3
All ❌✅ (primary) 3.3% [1.9%, 4.7%] 2

Cycles

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

Binary size

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

Bootstrap: 778.037s -> 776.909s (-0.14%)
Artifact size: 365.98 MiB -> 365.93 MiB (-0.01%)

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 merged-by-bors This PR was explicitly merged by bors. O-hermit Operating System: Hermit O-SGX Target: SGX O-unix Operating system: Unix-like O-wasi Operating system: Wasi, Webassembly System Interface PG-exploit-mitigations Project group: Exploit mitigations 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.

6 participants