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

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

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

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
ContributorAuthor

@rustbot blocked

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

@rustbotrustbot added the S-blocked Status: Blocked on something else such as an RFC or other implementation work. label Jul 14, 2026
@JonathanBrouwer

Copy link
Copy Markdown
Member

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rustbotrustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Jul 14, 2026
rust-borsBot pushed a commit that referenced this pull request Jul 14, 2026
@rust-bors

This comment has been minimized.

@rust-bors

rust-borsBot 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.

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

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

meanrangecount
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%)

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

Copy link
Copy Markdown
Member

(The regressions are noise)

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

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.

@rustbotrustbot 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-borsBot 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-borsrust-borsBot 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-borsBot 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-borsBot merged commit fa73a93 into rust-lang:mainJul 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.
@rustbotrustbot 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.
github-actionsBot pushed a commit to rust-lang/rustc-dev-guide that referenced this pull request Jul 20, 2026
…arfonthey
Move `std::io::read_to_string` to `alloc::io`
ACP: rust-lang/libs-team#755
Tracking issue: rust-lang/rust#154046
Split From: rust-lang/rust#156527
~~Blocked On: rust-lang/rust#158544
## Description
Moves `std::io::read_to_string` to `alloc::io`. This is a trivial move. Blocked on rust-lang/rust#158544.
---
## Notes
* No AI tooling of any kind was used during the creation of this PR.
* Please see rust-lang/rust#154046 (comment) for a review order and broader context for this PR.
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-libsRelevant to the library team, which will review and decide on the PR/issue.T-rustdoc-frontendRelevant 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

@bushrat011899@rustbot@clarfonthey@JonathanBrouwer@rust-timer@Mark-Simulacrum
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
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

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

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

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
ContributorAuthor

@rustbot blocked

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

@rustbotrustbot added the S-blocked Status: Blocked on something else such as an RFC or other implementation work. label Jul 14, 2026
@JonathanBrouwer

Copy link
Copy Markdown
Member

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rustbotrustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Jul 14, 2026
rust-borsBot pushed a commit that referenced this pull request Jul 14, 2026
@rust-bors

This comment has been minimized.

@rust-bors

rust-borsBot 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.

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

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

meanrangecount
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%)

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

Copy link
Copy Markdown
Member

(The regressions are noise)

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

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.

@rustbotrustbot 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-borsBot 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-borsrust-borsBot 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-borsBot 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-borsBot merged commit fa73a93 into rust-lang:mainJul 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.
@rustbotrustbot 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.
github-actionsBot pushed a commit to rust-lang/rustc-dev-guide that referenced this pull request Jul 20, 2026
…arfonthey
Move `std::io::read_to_string` to `alloc::io`
ACP: rust-lang/libs-team#755
Tracking issue: rust-lang/rust#154046
Split From: rust-lang/rust#156527
~~Blocked On: rust-lang/rust#158544
## Description
Moves `std::io::read_to_string` to `alloc::io`. This is a trivial move. Blocked on rust-lang/rust#158544.
---
## Notes
* No AI tooling of any kind was used during the creation of this PR.
* Please see rust-lang/rust#154046 (comment) for a review order and broader context for this PR.
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-libsRelevant to the library team, which will review and decide on the PR/issue.T-rustdoc-frontendRelevant 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

@bushrat011899@rustbot@clarfonthey@JonathanBrouwer@rust-timer@Mark-Simulacrum
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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

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

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

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
ContributorAuthor

@rustbot blocked

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

@rustbotrustbot added the S-blocked Status: Blocked on something else such as an RFC or other implementation work. label Jul 14, 2026
@JonathanBrouwer

Copy link
Copy Markdown
Member

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rustbotrustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Jul 14, 2026
rust-borsBot pushed a commit that referenced this pull request Jul 14, 2026
@rust-bors

This comment has been minimized.

@rust-bors

rust-borsBot 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.

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

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

meanrangecount
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%)

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

Copy link
Copy Markdown
Member

(The regressions are noise)

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

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.

@rustbotrustbot 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-borsBot 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-borsrust-borsBot 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-borsBot 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-borsBot merged commit fa73a93 into rust-lang:mainJul 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.
@rustbotrustbot 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.
github-actionsBot pushed a commit to rust-lang/rustc-dev-guide that referenced this pull request Jul 20, 2026
…arfonthey
Move `std::io::read_to_string` to `alloc::io`
ACP: rust-lang/libs-team#755
Tracking issue: rust-lang/rust#154046
Split From: rust-lang/rust#156527
~~Blocked On: rust-lang/rust#158544
## Description
Moves `std::io::read_to_string` to `alloc::io`. This is a trivial move. Blocked on rust-lang/rust#158544.
---
## Notes
* No AI tooling of any kind was used during the creation of this PR.
* Please see rust-lang/rust#154046 (comment) for a review order and broader context for this PR.
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-libsRelevant to the library team, which will review and decide on the PR/issue.T-rustdoc-frontendRelevant 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

@bushrat011899@rustbot@clarfonthey@JonathanBrouwer@rust-timer@Mark-Simulacrum
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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

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

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

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
ContributorAuthor

@rustbot blocked

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

@rustbotrustbot added the S-blocked Status: Blocked on something else such as an RFC or other implementation work. label Jul 14, 2026
@JonathanBrouwer

Copy link
Copy Markdown
Member

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rustbotrustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Jul 14, 2026
rust-borsBot pushed a commit that referenced this pull request Jul 14, 2026
@rust-bors

This comment has been minimized.

@rust-bors

rust-borsBot 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.

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

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

meanrangecount
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%)

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

Copy link
Copy Markdown
Member

(The regressions are noise)

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

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.

@rustbotrustbot 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-borsBot 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-borsrust-borsBot 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-borsBot 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-borsBot merged commit fa73a93 into rust-lang:mainJul 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.
@rustbotrustbot 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.
github-actionsBot pushed a commit to rust-lang/rustc-dev-guide that referenced this pull request Jul 20, 2026
…arfonthey
Move `std::io::read_to_string` to `alloc::io`
ACP: rust-lang/libs-team#755
Tracking issue: rust-lang/rust#154046
Split From: rust-lang/rust#156527
~~Blocked On: rust-lang/rust#158544
## Description
Moves `std::io::read_to_string` to `alloc::io`. This is a trivial move. Blocked on rust-lang/rust#158544.
---
## Notes
* No AI tooling of any kind was used during the creation of this PR.
* Please see rust-lang/rust#154046 (comment) for a review order and broader context for this PR.
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-libsRelevant to the library team, which will review and decide on the PR/issue.T-rustdoc-frontendRelevant 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

@bushrat011899@rustbot@clarfonthey@JonathanBrouwer@rust-timer@Mark-Simulacrum
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
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

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

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

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
ContributorAuthor

@rustbot blocked

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

@rustbotrustbot added the S-blocked Status: Blocked on something else such as an RFC or other implementation work. label Jul 14, 2026
@JonathanBrouwer

Copy link
Copy Markdown
Member

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rustbotrustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Jul 14, 2026
rust-borsBot pushed a commit that referenced this pull request Jul 14, 2026
@rust-bors

This comment has been minimized.

@rust-bors

rust-borsBot 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.

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

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

meanrangecount
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%)

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

Copy link
Copy Markdown
Member

(The regressions are noise)

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

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.

@rustbotrustbot 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-borsBot 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-borsrust-borsBot 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-borsBot 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-borsBot merged commit fa73a93 into rust-lang:mainJul 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.
@rustbotrustbot 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.
github-actionsBot pushed a commit to rust-lang/rustc-dev-guide that referenced this pull request Jul 20, 2026
…arfonthey
Move `std::io::read_to_string` to `alloc::io`
ACP: rust-lang/libs-team#755
Tracking issue: rust-lang/rust#154046
Split From: rust-lang/rust#156527
~~Blocked On: rust-lang/rust#158544
## Description
Moves `std::io::read_to_string` to `alloc::io`. This is a trivial move. Blocked on rust-lang/rust#158544.
---
## Notes
* No AI tooling of any kind was used during the creation of this PR.
* Please see rust-lang/rust#154046 (comment) for a review order and broader context for this PR.
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-libsRelevant to the library team, which will review and decide on the PR/issue.T-rustdoc-frontendRelevant 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

@bushrat011899@rustbot@clarfonthey@JonathanBrouwer@rust-timer@Mark-Simulacrum
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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

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

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

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
ContributorAuthor

@rustbot blocked

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

@rustbotrustbot added the S-blocked Status: Blocked on something else such as an RFC or other implementation work. label Jul 14, 2026
@JonathanBrouwer

Copy link
Copy Markdown
Member

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rustbotrustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Jul 14, 2026
rust-borsBot pushed a commit that referenced this pull request Jul 14, 2026
@rust-bors

This comment has been minimized.

@rust-bors

rust-borsBot 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.

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

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

meanrangecount
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%)

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

Copy link
Copy Markdown
Member

(The regressions are noise)

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

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.

@rustbotrustbot 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-borsBot 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-borsrust-borsBot 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-borsBot 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-borsBot merged commit fa73a93 into rust-lang:mainJul 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.
@rustbotrustbot 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.
github-actionsBot pushed a commit to rust-lang/rustc-dev-guide that referenced this pull request Jul 20, 2026
…arfonthey
Move `std::io::read_to_string` to `alloc::io`
ACP: rust-lang/libs-team#755
Tracking issue: rust-lang/rust#154046
Split From: rust-lang/rust#156527
~~Blocked On: rust-lang/rust#158544
## Description
Moves `std::io::read_to_string` to `alloc::io`. This is a trivial move. Blocked on rust-lang/rust#158544.
---
## Notes
* No AI tooling of any kind was used during the creation of this PR.
* Please see rust-lang/rust#154046 (comment) for a review order and broader context for this PR.
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-libsRelevant to the library team, which will review and decide on the PR/issue.T-rustdoc-frontendRelevant 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

@bushrat011899@rustbot@clarfonthey@JonathanBrouwer@rust-timer@Mark-Simulacrum
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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

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

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

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
ContributorAuthor

@rustbot blocked

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

@rustbotrustbot added the S-blocked Status: Blocked on something else such as an RFC or other implementation work. label Jul 14, 2026
@JonathanBrouwer

Copy link
Copy Markdown
Member

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rustbotrustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Jul 14, 2026
rust-borsBot pushed a commit that referenced this pull request Jul 14, 2026
@rust-bors

This comment has been minimized.

@rust-bors

rust-borsBot 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.

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

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

meanrangecount
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%)

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

Copy link
Copy Markdown
Member

(The regressions are noise)

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

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.

@rustbotrustbot 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-borsBot 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-borsrust-borsBot 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-borsBot 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-borsBot merged commit fa73a93 into rust-lang:mainJul 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.
@rustbotrustbot 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.
github-actionsBot pushed a commit to rust-lang/rustc-dev-guide that referenced this pull request Jul 20, 2026
…arfonthey
Move `std::io::read_to_string` to `alloc::io`
ACP: rust-lang/libs-team#755
Tracking issue: rust-lang/rust#154046
Split From: rust-lang/rust#156527
~~Blocked On: rust-lang/rust#158544
## Description
Moves `std::io::read_to_string` to `alloc::io`. This is a trivial move. Blocked on rust-lang/rust#158544.
---
## Notes
* No AI tooling of any kind was used during the creation of this PR.
* Please see rust-lang/rust#154046 (comment) for a review order and broader context for this PR.
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-libsRelevant to the library team, which will review and decide on the PR/issue.T-rustdoc-frontendRelevant 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

@bushrat011899@rustbot@clarfonthey@JonathanBrouwer@rust-timer@Mark-Simulacrum
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
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

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

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

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
ContributorAuthor

@rustbot blocked

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

@rustbotrustbot added the S-blocked Status: Blocked on something else such as an RFC or other implementation work. label Jul 14, 2026
@JonathanBrouwer

Copy link
Copy Markdown
Member

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rustbotrustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Jul 14, 2026
rust-borsBot pushed a commit that referenced this pull request Jul 14, 2026
@rust-bors

This comment has been minimized.

@rust-bors

rust-borsBot 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.

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

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

meanrangecount
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%)

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

Copy link
Copy Markdown
Member

(The regressions are noise)

@bushrat011899

Copy link
Copy Markdown
ContributorAuthor

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.

@rustbotrustbot 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-borsBot 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-borsrust-borsBot 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-borsBot 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-borsBot merged commit fa73a93 into rust-lang:mainJul 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.
@rustbotrustbot 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.
github-actionsBot pushed a commit to rust-lang/rustc-dev-guide that referenced this pull request Jul 20, 2026
…arfonthey
Move `std::io::read_to_string` to `alloc::io`
ACP: rust-lang/libs-team#755
Tracking issue: rust-lang/rust#154046
Split From: rust-lang/rust#156527
~~Blocked On: rust-lang/rust#158544
## Description
Moves `std::io::read_to_string` to `alloc::io`. This is a trivial move. Blocked on rust-lang/rust#158544.
---
## Notes
* No AI tooling of any kind was used during the creation of this PR.
* Please see rust-lang/rust#154046 (comment) for a review order and broader context for this PR.
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-libsRelevant to the library team, which will review and decide on the PR/issue.T-rustdoc-frontendRelevant 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

@bushrat011899@rustbot@clarfonthey@JonathanBrouwer@rust-timer@Mark-Simulacrum