Skip to content

Do not strip binaries in bootstrap everytime if they are unchanged - #145452

Merged
bors merged 1 commit into
rust-lang:masterfrom
Kobzol:bootstrap-strip
Aug 19, 2025
Merged

Do not strip binaries in bootstrap everytime if they are unchanged#145452
bors merged 1 commit into
rust-lang:masterfrom
Kobzol:bootstrap-strip

Conversation

@Kobzol

Copy link
Copy Markdown
Member

I was profiling bootstrap to figure out why a no-op build takes upward of two seconds on my machine. I found that half of that is Cargo (which is mostly unavoidable) and the rest (~900ms) is running strip. We don't need to restrip already stripped binaries all the time.

r? @jieyouxu

@rustbotrustbot added 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 Aug 15, 2025

@jieyouxujieyouxu left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks

@jieyouxu

Copy link
Copy Markdown
Member

@bors r+ rollup=never

@bors

bors commented Aug 15, 2025

Copy link
Copy Markdown
Collaborator

📌 Commit ef3bb6f has been approved by jieyouxu

It is now in the queue for this repository.

@borsbors 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 Aug 15, 2025
@Kobzol

Copy link
Copy Markdown
MemberAuthor

I don't think this needs to be rollup=never, especially given the current state of the queue. Let's do a perf. run to test toolchain size.

@bors try @rust-timer queue

@bors rollup

@rust-timer

This comment has been minimized.

rust-borsBot added a commit that referenced this pull request Aug 17, 2025
Do not strip binaries in bootstrap everytime if they are unchanged
@rust-bors

This comment has been minimized.

@rustbotrustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Aug 17, 2025
@rust-bors

rust-borsBot commented Aug 17, 2025

Copy link
Copy Markdown
Contributor

☀️ Try build successful (CI)
Build commit: 37f832c (37f832c40c91a51413aa54aa0154ac9ed6eb7244, parent: 425a9c0a0e365c0b8c6cfd00c2ded83a73bed9a0)

@rust-timer

This comment has been minimized.

@rust-timer

Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (37f832c): comparison URL.

Overall result: ✅ improvements - no action needed

Benchmarking this pull request means it may be perf-sensitive – we'll automatically label it not fit for rolling up. You can override this, but we strongly advise not to, due to possible changes in compiler perf.

@bors rollup=never
@rustbot label: -S-waiting-on-perf -perf-regression

Instruction count

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

meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
-0.1%[-0.1%, -0.1%]1
All ❌✅ (primary)--0

Max RSS (memory usage)

Results (secondary 1.9%)

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

meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
5.0%[4.8%, 5.2%]2
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
-4.4%[-4.4%, -4.4%]1
All ❌✅ (primary)--0

Cycles

Results (secondary -11.0%)

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

meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
5.4%[5.4%, 5.4%]1
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
-14.3%[-19.4%, -2.4%]5
All ❌✅ (primary)--0

Binary size

Results (secondary 0.0%)

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

meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
0.0%[0.0%, 0.0%]1
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)--0

Bootstrap: 470.373s -> 469.381s (-0.21%)
Artifact size: 377.75 MiB -> 377.66 MiB (-0.02%)

@rustbotrustbot removed the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Aug 17, 2025
@jieyouxu

Copy link
Copy Markdown
Member

@bors rollup

jhpratt added a commit to jhpratt/rust that referenced this pull request Aug 17, 2025
Do not strip binaries in bootstrap everytime if they are unchanged
I was profiling bootstrap to figure out why a no-op build takes upward of two seconds on my machine. I found that half of that is Cargo (which is mostly unavoidable) and the rest (~900ms) is running strip. We don't need to restrip already stripped binaries all the time.
r? `@jieyouxu`
@jhprattjhpratt mentioned this pull request Aug 17, 2025
Zalathar added a commit to Zalathar/rust that referenced this pull request Aug 18, 2025
Do not strip binaries in bootstrap everytime if they are unchanged
I was profiling bootstrap to figure out why a no-op build takes upward of two seconds on my machine. I found that half of that is Cargo (which is mostly unavoidable) and the rest (~900ms) is running strip. We don't need to restrip already stripped binaries all the time.
r? ``@jieyouxu``
@ZalatharZalathar mentioned this pull request Aug 18, 2025
bors added a commit that referenced this pull request Aug 18, 2025
Rollup of 19 pull requests
Successful merges:
- #140956 (`impl PartialEq<{str,String}> for {Path,PathBuf}`)
- #141744 (Stabilize `ip_from`)
- #144804 (Don't warn on never to any `as` casts as unreachable)
- #144983 (Rehome 37 `tests/ui/issues/` tests to other subdirectories under `tests/ui/`)
- #145025 (run spellcheck as a tidy extra check in ci)
- #145041 (rework GAT borrowck limitation error)
- #145243 (take attr style into account in diagnostics)
- #145359 (Fix bug where `rustdoc-js` tester would not pick the right `search.js` file if there is more than one)
- #145429 (Couple of codegen_fn_attrs improvements)
- #145452 (Do not strip binaries in bootstrap everytime if they are unchanged)
- #145486 (Fix `unicode_data.rs` mention message)
- #145489 (library: Migrate from `cfg_if` to `cfg_select`)
- #145493 (remove `should_render` in `PrintAttribute` derive)
- #145500 (Port must_use to the new target checking)
- #145505 (Simplify span caches)
- #145511 (Rust build fails on OpenBSD after using file_lock feature)
- #145516 (Weekly `cargo update`)
- #145533 (Reorder `lto` options from most to least optimizing)
- #145550 (Avoid using `()` in `derive(From)` output.)
r? `@ghost`
`@rustbot` modify labels: rollup
Zalathar added a commit to Zalathar/rust that referenced this pull request Aug 18, 2025
Do not strip binaries in bootstrap everytime if they are unchanged
I was profiling bootstrap to figure out why a no-op build takes upward of two seconds on my machine. I found that half of that is Cargo (which is mostly unavoidable) and the rest (~900ms) is running strip. We don't need to restrip already stripped binaries all the time.
r? ```@jieyouxu```
@ZalatharZalathar mentioned this pull request Aug 18, 2025
jhpratt added a commit to jhpratt/rust that referenced this pull request Aug 18, 2025
Do not strip binaries in bootstrap everytime if they are unchanged
I was profiling bootstrap to figure out why a no-op build takes upward of two seconds on my machine. I found that half of that is Cargo (which is mostly unavoidable) and the rest (~900ms) is running strip. We don't need to restrip already stripped binaries all the time.
r? `@jieyouxu`
jhpratt added a commit to jhpratt/rust that referenced this pull request Aug 18, 2025
Do not strip binaries in bootstrap everytime if they are unchanged
I was profiling bootstrap to figure out why a no-op build takes upward of two seconds on my machine. I found that half of that is Cargo (which is mostly unavoidable) and the rest (~900ms) is running strip. We don't need to restrip already stripped binaries all the time.
r? ``@jieyouxu``
@jhprattjhpratt mentioned this pull request Aug 18, 2025
bors added a commit that referenced this pull request Aug 19, 2025
Rollup of 33 pull requests
Successful merges:
- #139345 (Extend `QueryStability` to handle `IntoIterator` implementations)
- #140740 (Add `-Zindirect-branch-cs-prefix`)
- #142079 (nll-relate: improve hr opaque types support)
- #142938 (implement std::fs::set_permissions_nofollow on unix)
- #144767 (Correct some grammar in integer documentation)
- #144906 (Require approval from t-infra instead of t-release on tier bumps)
- #144983 (Rehome 37 `tests/ui/issues/` tests to other subdirectories under `tests/ui/`)
- #145025 (run spellcheck as a tidy extra check in ci)
- #145166 (suggest using `pub(crate)` for E0364)
- #145255 (dec2flt: Provide more valid inputs examples)
- #145306 (Add tracing to various miscellaneous functions)
- #145336 (Hide docs for `core::unicode`)
- #145429 (Couple of codegen_fn_attrs improvements)
- #145452 (Do not strip binaries in bootstrap everytime if they are unchanged)
- #145464 (Stabilize `const_pathbuf_osstring_new` feature)
- #145474 (Properly recover from parenthesized use-bounds (precise capturing lists) plus small cleanups)
- #145486 (Fix `unicode_data.rs` mention message)
- #145493 (remove `should_render` in `PrintAttribute` derive)
- #145505 (Simplify span caches)
- #145510 (Visit and print async_fut local for async drop.)
- #145511 (Rust build fails on OpenBSD after using file_lock feature)
- #145532 (resolve: debug for block module)
- #145533 (Reorder `lto` options from most to least optimizing)
- #145537 (Do not consider a `T: !Sized` candidate to satisfy a `T: !MetaSized` obligation.)
- #145538 (bufreader::Buffer::backshift: don't move the uninit bytes)
- #145542 (triagebot: Don't warn no-mentions on subtree updates)
- #145549 (Update rust maintainers in openharmony.md)
- #145550 (Avoid using `()` in `derive(From)` output.)
- #145556 (Allow stability attributes on extern crates)
- #145560 (Remove unused `PartialOrd`/`Ord` from bootstrap)
- #145568 (ignore frontmatters in `TokenStream::new`)
- #145571 (remove myself from some adhoc-groups and pings)
- #145576 (Add change tracker entry for `--timings`)
r? `@ghost`
`@rustbot` modify labels: rollup
@jieyouxujieyouxu mentioned this pull request Aug 19, 2025
bors added a commit that referenced this pull request Aug 19, 2025
Rollup of 15 pull requests
Successful merges:
- #145338 (actually provide the correct args to coroutine witnesses)
- #145429 (Couple of codegen_fn_attrs improvements)
- #145452 (Do not strip binaries in bootstrap everytime if they are unchanged)
- #145464 (Stabilize `const_pathbuf_osstring_new` feature)
- #145474 (Properly recover from parenthesized use-bounds (precise capturing lists) plus small cleanups)
- #145486 (Fix `unicode_data.rs` mention message)
- #145490 (Trace some basic I/O operations in bootstrap)
- #145493 (remove `should_render` in `PrintAttribute` derive)
- #145500 (Port must_use to the new target checking)
- #145505 (Simplify span caches)
- #145510 (Visit and print async_fut local for async drop.)
- #145511 (Rust build fails on OpenBSD after using file_lock feature)
- #145532 (resolve: debug for block module)
- #145533 (Reorder `lto` options from most to least optimizing)
- #145537 (Do not consider a `T: !Sized` candidate to satisfy a `T: !MetaSized` obligation.)
r? `@ghost`
`@rustbot` modify labels: rollup
@bors
bors merged commit b1a7bac into rust-lang:masterAug 19, 2025
11 checks passed
@rustbotrustbot added this to the 1.91.0 milestone Aug 19, 2025
rust-timer added a commit that referenced this pull request Aug 19, 2025
Rollup merge of #145452 - Kobzol:bootstrap-strip, r=jieyouxu
Do not strip binaries in bootstrap everytime if they are unchanged
I was profiling bootstrap to figure out why a no-op build takes upward of two seconds on my machine. I found that half of that is Cargo (which is mostly unavoidable) and the rest (~900ms) is running strip. We don't need to restrip already stripped binaries all the time.
r? `@jieyouxu`
github-actionsBot pushed a commit to rust-lang/miri that referenced this pull request Aug 20, 2025
Rollup of 15 pull requests
Successful merges:
- rust-lang/rust#145338 (actually provide the correct args to coroutine witnesses)
- rust-lang/rust#145429 (Couple of codegen_fn_attrs improvements)
- rust-lang/rust#145452 (Do not strip binaries in bootstrap everytime if they are unchanged)
- rust-lang/rust#145464 (Stabilize `const_pathbuf_osstring_new` feature)
- rust-lang/rust#145474 (Properly recover from parenthesized use-bounds (precise capturing lists) plus small cleanups)
- rust-lang/rust#145486 (Fix `unicode_data.rs` mention message)
- rust-lang/rust#145490 (Trace some basic I/O operations in bootstrap)
- rust-lang/rust#145493 (remove `should_render` in `PrintAttribute` derive)
- rust-lang/rust#145500 (Port must_use to the new target checking)
- rust-lang/rust#145505 (Simplify span caches)
- rust-lang/rust#145510 (Visit and print async_fut local for async drop.)
- rust-lang/rust#145511 (Rust build fails on OpenBSD after using file_lock feature)
- rust-lang/rust#145532 (resolve: debug for block module)
- rust-lang/rust#145533 (Reorder `lto` options from most to least optimizing)
- rust-lang/rust#145537 (Do not consider a `T: !Sized` candidate to satisfy a `T: !MetaSized` obligation.)
r? `@ghost`
`@rustbot` modify labels: rollup
@Kobzol
Kobzol deleted the bootstrap-strip branch August 20, 2025 06:16
github-actionsBot pushed a commit to model-checking/verify-rust-std that referenced this pull request Aug 20, 2025
Rollup of 15 pull requests
Successful merges:
- rust-lang#145338 (actually provide the correct args to coroutine witnesses)
- rust-lang#145429 (Couple of codegen_fn_attrs improvements)
- rust-lang#145452 (Do not strip binaries in bootstrap everytime if they are unchanged)
- rust-lang#145464 (Stabilize `const_pathbuf_osstring_new` feature)
- rust-lang#145474 (Properly recover from parenthesized use-bounds (precise capturing lists) plus small cleanups)
- rust-lang#145486 (Fix `unicode_data.rs` mention message)
- rust-lang#145490 (Trace some basic I/O operations in bootstrap)
- rust-lang#145493 (remove `should_render` in `PrintAttribute` derive)
- rust-lang#145500 (Port must_use to the new target checking)
- rust-lang#145505 (Simplify span caches)
- rust-lang#145510 (Visit and print async_fut local for async drop.)
- rust-lang#145511 (Rust build fails on OpenBSD after using file_lock feature)
- rust-lang#145532 (resolve: debug for block module)
- rust-lang#145533 (Reorder `lto` options from most to least optimizing)
- rust-lang#145537 (Do not consider a `T: !Sized` candidate to satisfy a `T: !MetaSized` obligation.)
r? `@ghost`
`@rustbot` modify labels: rollup
github-actionsBot pushed a commit to rust-lang/rustc-dev-guide that referenced this pull request Aug 25, 2025
Rollup of 15 pull requests
Successful merges:
- rust-lang/rust#145338 (actually provide the correct args to coroutine witnesses)
- rust-lang/rust#145429 (Couple of codegen_fn_attrs improvements)
- rust-lang/rust#145452 (Do not strip binaries in bootstrap everytime if they are unchanged)
- rust-lang/rust#145464 (Stabilize `const_pathbuf_osstring_new` feature)
- rust-lang/rust#145474 (Properly recover from parenthesized use-bounds (precise capturing lists) plus small cleanups)
- rust-lang/rust#145486 (Fix `unicode_data.rs` mention message)
- rust-lang/rust#145490 (Trace some basic I/O operations in bootstrap)
- rust-lang/rust#145493 (remove `should_render` in `PrintAttribute` derive)
- rust-lang/rust#145500 (Port must_use to the new target checking)
- rust-lang/rust#145505 (Simplify span caches)
- rust-lang/rust#145510 (Visit and print async_fut local for async drop.)
- rust-lang/rust#145511 (Rust build fails on OpenBSD after using file_lock feature)
- rust-lang/rust#145532 (resolve: debug for block module)
- rust-lang/rust#145533 (Reorder `lto` options from most to least optimizing)
- rust-lang/rust#145537 (Do not consider a `T: !Sized` candidate to satisfy a `T: !MetaSized` obligation.)
r? `@ghost`
`@rustbot` modify labels: rollup
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-bootstrapRelevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@Kobzol@jieyouxu@bors@rust-timer@rustbot