Skip to content

Move std::io::Read to alloc::io#158544

Merged
rust-bors[bot] merged 5 commits into
rust-lang:mainfrom
bushrat011899:core_io_read
Jul 18, 2026
Merged

Move std::io::Read to alloc::io#158544
rust-bors[bot] merged 5 commits into
rust-lang:mainfrom
bushrat011899:core_io_read

Conversation

@bushrat011899

@bushrat011899 bushrat011899 commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

View all comments

ACP: rust-lang/libs-team#755
Tracking issue: #154046
Split From: #156527
Blocked On: #158541

Description

Moves std::io::Read to alloc::io. This is mostly a direct cut and paste, but with a large diff due to how many implementations need to be moved into alloc. Blocked on #158541.

There is some new code written for some of the Read implementations to account for the no_global_oom_handling configuration, since Vec::extend_from_slice and String::push_str are unavailable. I've highlighted all of these such instances with review comments for clarity.


Notes

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. 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. labels Jun 29, 2026
@rustbot

rustbot commented Jun 29, 2026

Copy link
Copy Markdown
Collaborator

r? @Mark-Simulacrum

rustbot has assigned @Mark-Simulacrum.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

Why was this reviewer chosen?

The reviewer was selected based on:

  • Owners of files modified in this PR: @ChrisDenton, libs
  • @ChrisDenton, libs expanded to 13 candidates
  • Random selection from 6 candidates

@bushrat011899

Copy link
Copy Markdown
Contributor Author

@rustbot blocked

@rustbot rustbot added S-blocked Status: Blocked on something else such as an RFC or other implementation work. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jun 29, 2026
@rust-bors

This comment has been minimized.

@rustbot

This comment has been minimized.

@rustbot

This comment has been minimized.

@rust-bors

This comment has been minimized.

@rustbot

This comment has been minimized.

@rust-bors

This comment has been minimized.

@rustbot

This comment has been minimized.

@rust-bors

This comment has been minimized.

bushrat011899

This comment was marked as outdated.

@rustbot

This comment has been minimized.

@rustbot

This comment has been minimized.

@clarfonthey

Copy link
Copy Markdown
Contributor

I haven't fully reviewed this, but I'm going to mark this as blocked on figuring out the write regressions first. Since these all depend on each other, we probably want to figure out what to do there before continuing.

@rustbot blocked

@rustbot rustbot added S-blocked Status: Blocked on something else such as an RFC or other implementation work. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jul 14, 2026
@JonathanBrouwer

Copy link
Copy Markdown
Contributor

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Jul 14, 2026
rust-bors Bot pushed a commit that referenced this pull request Jul 14, 2026
Move `std::io::Read` to `alloc::io`
@rust-bors

This comment has been minimized.

@rust-bors

rust-bors Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

☀️ Try build successful (CI)
Build commit: 234ef2c (234ef2c008a7112fbea2e9e8553bcb4c11f7e135)
Base parent: da80ed0 (da80ed0708a09dc096c184345d6eb42cbcd50a1e)

@rust-timer

This comment has been minimized.

@rust-timer

Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (234ef2c): comparison URL.

Overall result: ❌ regressions - no action needed

Benchmarking means the PR may be perf-sensitive. Consider adding rollup=never if this change is not fit for rolling up.

@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.

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

Max RSS (memory usage)

Results (primary 1.0%, secondary -4.8%)

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

mean range count
Regressions ❌
(primary)
4.5% [4.5%, 4.5%] 1
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-2.5% [-2.5%, -2.5%] 1
Improvements ✅
(secondary)
-4.8% [-7.4%, -2.1%] 2
All ❌✅ (primary) 1.0% [-2.5%, 4.5%] 2

Cycles

Results (secondary -1.2%)

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

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
2.9% [2.5%, 3.4%] 2
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-3.3% [-4.0%, -2.1%] 4
All ❌✅ (primary) - - 0

Binary size

This perf run didn't have relevant results for this metric.

Bootstrap: 491.202s -> 490.122s (-0.22%)
Artifact size: 389.32 MiB -> 389.39 MiB (0.02%)

@rustbot rustbot removed the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Jul 14, 2026
@JonathanBrouwer

Copy link
Copy Markdown
Contributor

(The regressions are noise)

@bushrat011899

Copy link
Copy Markdown
Contributor Author

I'm surprised this had no real regressions. Pleasantly surprised, but still. I'll draft up a PR adding #[inline] to all the functions that were in std but are now accessed from core/alloc.

@clarfonthey

Copy link
Copy Markdown
Contributor

Yeah, my best guess is that the regressions might be hiding in the code in alloc that depends on code in core, which is why the previous PR regressed and this one didn't.

@clarfonthey

Copy link
Copy Markdown
Contributor

@rustbot review

Since the perf wasn't just a few inline attributes, we're going to just go ahead and we can figure it out later if necessary.

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-blocked Status: Blocked on something else such as an RFC or other implementation work. labels Jul 17, 2026
@clarfonthey

Copy link
Copy Markdown
Contributor

@bors r+ rollup=iffy

Since this modifies a nontrivial amount of std::io code and might conflict with other I/O changes, just to keep in mind.

@rust-bors

rust-bors Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

📌 Commit d1bdecc has been approved by clarfonthey

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 Jul 17, 2026
rust-bors Bot pushed a commit that referenced this pull request Jul 17, 2026
…uwer

Rollup of 5 pull requests

Successful merges:

 - #158544 (Move `std::io::Read` to `alloc::io`)
 - #158668 (`DeeplyNormalize` and `normalize_with_depth_to` take `Unnormalized<T>` as input)
 - #157514 ([tiny] Use multipart suggestion for finding ident when literal was expected in attr)
 - #158748 (improve diagnostic suggestion when matching struct variants with tuple)
 - #159463 (triagebot: tweak wording for miri changes message)

Failed merges:

 - #158916 (Emit all borrowck errors at the end of borrowck)
@rust-bors
rust-bors Bot merged commit fa73a93 into rust-lang:main Jul 18, 2026
14 checks passed
rust-timer added a commit that referenced this pull request Jul 18, 2026
Rollup merge of #158544 - bushrat011899:core_io_read, r=clarfonthey

Move `std::io::Read` to `alloc::io`

ACP: rust-lang/libs-team#755
Tracking issue: #154046
Split From: #156527
~~Blocked On: #158541

## Description

Moves `std::io::Read` to `alloc::io`. This is mostly a direct cut and paste, but with a large diff due to how many implementations need to be moved into `alloc`. Blocked on #158541.

There is some new code written for some of the `Read` implementations to account for the `no_global_oom_handling` configuration, since `Vec::extend_from_slice` and `String::push_str` are unavailable. I've highlighted all of these such instances with review comments for clarity.

---

## Notes

* No AI tooling of any kind was used during the creation of this PR.
* Please see #154046 (comment) for a review order and broader context for this PR.
@rustbot rustbot added this to the 1.99.0 milestone Jul 18, 2026
JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Jul 18, 2026
…ing, r=clarfonthey

Move `std::io::read_to_string` to `alloc::io`

ACP: rust-lang/libs-team#755
Tracking issue: rust-lang#154046
Split From: rust-lang#156527
~~Blocked On: rust-lang#158544

## Description

Moves `std::io::read_to_string` to `alloc::io`. This is a trivial move. Blocked on rust-lang#158544.

---

## Notes

* No AI tooling of any kind was used during the creation of this PR.
* Please see rust-lang#154046 (comment) for a review order and broader context for this PR.
JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Jul 18, 2026
…ing, r=clarfonthey

Move `std::io::read_to_string` to `alloc::io`

ACP: rust-lang/libs-team#755
Tracking issue: rust-lang#154046
Split From: rust-lang#156527
~~Blocked On: rust-lang#158544

## Description

Moves `std::io::read_to_string` to `alloc::io`. This is a trivial move. Blocked on rust-lang#158544.

---

## Notes

* No AI tooling of any kind was used during the creation of this PR.
* Please see rust-lang#154046 (comment) for a review order and broader context for this PR.
JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Jul 18, 2026
…ing, r=clarfonthey

Move `std::io::read_to_string` to `alloc::io`

ACP: rust-lang/libs-team#755
Tracking issue: rust-lang#154046
Split From: rust-lang#156527
~~Blocked On: rust-lang#158544

## Description

Moves `std::io::read_to_string` to `alloc::io`. This is a trivial move. Blocked on rust-lang#158544.

---

## Notes

* No AI tooling of any kind was used during the creation of this PR.
* Please see rust-lang#154046 (comment) for a review order and broader context for this PR.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-libs Relevant to the library 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.

6 participants