Skip to content

merge functionality of io::Sink into io::Empty - #98154

Merged
bors merged 1 commit into
rust-lang:masterfrom
vidhanio:master
Jul 30, 2023
Merged

merge functionality of io::Sink into io::Empty#98154
bors merged 1 commit into
rust-lang:masterfrom
vidhanio:master

Conversation

@vidhanio

@vidhaniovidhanio commented Jun 16, 2022

Copy link
Copy Markdown
Contributor

Many times, there is a need for a simple dummy io::Reader + io::Writer, but currently the only options are io::Empty and io::Sink respectively. Having both of their functionality together requires writing your own boilerplate for something that makes sense to have in the standard library. This PR adds the functionality of io::Sink to io::Empty, making io::Empty be able to perform the tasks of both of the previous structs. (This idea was first mentioned in #24235)

Note: I also updated some doc comments in io::utils in this pull request to fix inconsistencies between io::Sink and io::Empty.

API Change Proposal: rust-lang/libs-team#49

@rustbotrustbot added the T-libs Relevant to the library team, which will review and decide on the PR/issue. label Jun 16, 2022
@rust-highfive

Copy link
Copy Markdown
Contributor

Hey! It looks like you've submitted a new PR for the library teams!

If this PR contains changes to any rust-lang/rust public library APIs then please comment with @rustbot label +T-libs-api -T-libs to tag it appropriately. If this PR contains changes to any unstable APIs please edit the PR description to add a link to the relevant API Change Proposal or create one if you haven't already. If you're unsure where your change falls no worries, just leave it as is and the reviewer will take a look and make a decision to forward on if necessary.

Examples of T-libs-api changes:

  • Stabilizing library features
  • Introducing insta-stable changes such as new implementations of existing stable traits on existing stable types
  • Introducing new or changing existing unstable library APIs (excluding permanently unstable features / features without a tracking issue)
  • Changing public documentation in ways that create new stability guarantees
  • Changing observable runtime behavior of library APIs

@rust-highfive

Copy link
Copy Markdown
Contributor

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @joshtriplett (or someone else) soon.

Please see the contribution instructions for more information.

@rust-highfiverust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jun 16, 2022
@vidhanio

Copy link
Copy Markdown
ContributorAuthor

@rustbot label +T-libs-api -T-libs

@rustbotrustbot added T-libs-api [DEPRECATED; DO NOT USE] and removed T-libs Relevant to the library team, which will review and decide on the PR/issue. labels Jun 16, 2022
@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@jyn514jyn514 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

you added a new submodule src/rust that doesn't look intentional.

Comment threadlibrary/std/src/io/util.rs Outdated
Comment threadlibrary/std/src/io/util.rs Outdated
Comment threadlibrary/std/src/io/util.rs Outdated
Comment threadlibrary/std/src/io/util.rs Outdated
Comment threadlibrary/std/src/io/util.rs Outdated
Comment threadlibrary/std/src/io/util/tests.rs Outdated
Comment threadlibrary/std/src/lib.rs Outdated
@rustbot

Copy link
Copy Markdown
Collaborator

Hey! It looks like you've submitted a new PR for the library teams!

If this PR contains changes to any rust-lang/rust public library APIs then
please comment with @rustbot label +T-libs-api -T-libs to tag it
appropriately. If this PR contains changes to any unstable APIs please edit
the PR description to add a link to the relevant API Change
Proposal

or create one
if you haven't already. If you're unsure where your change falls no worries,
just leave it as is and the reviewer will take a look and make a decision to
forward on if necessary.

Examples of T-libs-api changes:

  • Stabilizing library features
  • Introducing insta-stable changes such as new implementations of existing
    stable traits on existing stable types
  • Introducing new or changing existing unstable library APIs (excluding
    permanently unstable features / features without a tracking issue)
  • Changing public documentation in ways that create new stability guarantees
  • Changing observable runtime behavior of library APIs

@vidhanio

Copy link
Copy Markdown
ContributorAuthor

you added a new submodule src/rust that doesn't look intentional.

Fixed, oops. :)

Comment threadlibrary/std/src/io/util.rs Outdated
@rust-log-analyzer

This comment has been minimized.

@joshtriplett

joshtriplett commented Jul 6, 2022

Copy link
Copy Markdown
Member

I'm curious, do we want a new type here, or could we just add this functionality to io::Empty?

I think having both Null and Empty might potentially be a bit confusing (especially for people who don't have platform-specific familiarity with /dev/null to make the name seem familiar).

I don't think there's a strong need for a type that only implements Read and not Write, and while io::Sink doesn't make sense as a name for a source, I think io::Empty might make sense as a sink.

@vidhanio

Copy link
Copy Markdown
ContributorAuthor

i think that that is a good idea. would it be a good idea to at some point later in time to mark io::Sink as deprecated and to move uses of it to io::Empty?

@vidhanio

vidhanio commented Jul 6, 2022

Copy link
Copy Markdown
ContributorAuthor

I think having both Null and Empty might potentially be a bit confusing (especially for people who don't have platform-specific familiarity with /dev/null to make the name seem familiar).

an alternative to this could be to later deprecate both Empty and Sink and suggest switching to a (better named) Null (if there are any better suggestions).

it seems that there is support for io::Empty being the final name, i can go ahead and start working on that. should i keep pushing to this pr or create a new one?

@jyn514

Copy link
Copy Markdown
Member

Please use the existing PR so we have the review context.

@vidhaniovidhanio changed the title add io::Null: a combination of io::Sink and io::Emptymerge functionality of io::Sink into io::EmptyJul 7, 2022
@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@vidhanio

vidhanio commented Jul 7, 2022

Copy link
Copy Markdown
ContributorAuthor

could someone please leave guidance on what to do? #[unstable] on just impls is useless, but i need an attribute. should i make it #[stable]?

@rust-log-analyzer

This comment has been minimized.

@vidhanio

vidhanio commented Jul 7, 2022

Copy link
Copy Markdown
ContributorAuthor

i've just noticed this change potentially may be breaking; if users have both io::Write and io::Read in scope, io::empty().by_ref() is ambiguous, as Write::by_ref and Read::by_ref both exist (see log above).

@jyn514

Copy link
Copy Markdown
Member

The standard library doesn't consider new trait implementations breaking: https://std-dev-guide.rust-lang.org/code-considerations/breaking-changes/new-trait-impls.html

@vidhanio

Copy link
Copy Markdown
ContributorAuthor

@bors try

@vidhanio

Copy link
Copy Markdown
ContributorAuthor

done @pitaj!

@pitaj

pitaj commented May 5, 2023

Copy link
Copy Markdown
Contributor

@vidhanio looks like you still have a merge commit, that should be squashed in as well.

@vidhanio

vidhanio commented May 5, 2023

Copy link
Copy Markdown
ContributorAuthor

oops, yeah i just realized there was a merge conflict. fixed @pitaj! :)

@workingjubilee

Copy link
Copy Markdown
Member

@bors r+

@bors

bors commented Jul 30, 2023

Copy link
Copy Markdown
Collaborator

📌 Commit 79a22f4 has been approved by workingjubilee

It is now in the queue for this repository.

@borsbors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jul 30, 2023
@SUPERCILEX

Copy link
Copy Markdown
Contributor

The since field in the stable impls should probably be updated.

Dylan-DPC added a commit to Dylan-DPC/rust that referenced this pull request Jul 30, 2023
merge functionality of `io::Sink` into `io::Empty`
Many times, there is a need for a simple dummy `io::Read`er + `io::Write`r, but currently the only options are `io::Empty` and `io::Sink` respectively. Having both of their functionality together requires writing your own boilerplate for something that makes sense to have in the standard library. This PR adds the functionality of `io::Sink` to `io::Empty`, making `io::Empty` be able to perform the tasks of both of the previous structs. (This idea was first mentioned in rust-lang#24235)
Note: I also updated some doc comments in `io::utils` in this pull request to fix inconsistencies between `io::Sink` and `io::Empty`.
API Change Proposal: rust-lang/libs-team#49
@Dylan-DPCDylan-DPC mentioned this pull request Jul 30, 2023
bors added a commit to rust-lang-ci/rust that referenced this pull request Jul 30, 2023
…iaskrgr
Rollup of 6 pull requests
Successful merges:
- rust-lang#98154 (merge functionality of `io::Sink` into `io::Empty`)
- rust-lang#102198 (`const`-stablilize `NonNull::as_ref`)
- rust-lang#114074 (inline format!() args from rustc_middle up to and including rustc_codegen_llvm (3))
- rust-lang#114246 (Weaken unnameable_types lint)
- rust-lang#114256 (Fix invalid suggestion for mismatched types in closure arguments)
- rust-lang#114258 (Simplify `Span::can_be_used_for_suggestions` a little tiny bit)
r? `@ghost`
`@rustbot` modify labels: rollup
@bors
bors merged commit 27e3a74 into rust-lang:masterJul 30, 2023
@rustbotrustbot added this to the 1.73.0 milestone Jul 30, 2023
workingjubilee added a commit to workingjubilee/rustc that referenced this pull request Jul 31, 2023
Fix empty_write since rust version attribute
Fixup of rust-lang#98154 for the rust version.
r? `@workingjubilee`
workingjubilee added a commit to workingjubilee/rustc that referenced this pull request Jul 31, 2023
Fix empty_write since rust version attribute
Fixup of rust-lang#98154 for the rust version.
r? ``@workingjubilee``
wip-sync pushed a commit to NetBSD/pkgsrc-wip that referenced this pull request Oct 6, 2023
Language
--------
- [Uplift `clippy::fn_null_check` lint as `useless_ptr_null_checks`.]
(rust-lang/rust#111717)
- [Make `noop_method_call` warn by default.]
(rust-lang/rust#111916)
- [Support interpolated block for `try` and `async` in macros.]
(rust-lang/rust#112953)
- [Make `unconditional_recursion` lint detect recursive drops.]
(rust-lang/rust#113902)
- [Future compatibility warning for some impls being incorrectly
considered not overlapping.]
(rust-lang/rust#114023)
- [The `invalid_reference_casting` lint is now **deny-by-default**
(instead of allow-by-default)]
(rust-lang/rust#112431)
Compiler
--------
- [Write version information in a `.comment` section like GCC/Clang.]
(rust-lang/rust#97550)
- [Add documentation on v0 symbol mangling.]
(rust-lang/rust#97571)
- [Stabilize `extern "thiscall"` and `"thiscall-unwind"` ABIs.]
(rust-lang/rust#114562)
- [Only check outlives goals on impl compared to trait.]
(rust-lang/rust#109356)
- [Infer type in irrefutable slice patterns with fixed length as array.]
(rust-lang/rust#113199)
- [Discard default auto trait impls if explicit ones exist.]
(rust-lang/rust#113312)
- Add several new tier 3 targets:
- [`aarch64-unknown-teeos`]
(rust-lang/rust#113480)
- [`csky-unknown-linux-gnuabiv2`]
(rust-lang/rust#113658)
- [`riscv64-linux-android`]
(rust-lang/rust#112858)
- [`riscv64gc-unknown-hermit`]
(rust-lang/rust#114004)
- [`x86_64-unikraft-linux-musl`]
(rust-lang/rust#113411)
- [`x86_64-unknown-linux-ohos`]
(rust-lang/rust#113061)
- [Add `wasm32-wasi-preview1-threads` as a tier 2 target.]
(rust-lang/rust#112922)
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
Libraries
---------
- [Add `Read`, `Write` and `Seek` impls for `Arc<File>`.]
(rust-lang/rust#94748)
- [Merge functionality of `io::Sink` into `io::Empty`.]
(rust-lang/rust#98154)
- [Implement `RefUnwindSafe` for `Backtrace`]
(rust-lang/rust#100455)
- [Make `ExitStatus` implement `Default`]
(rust-lang/rust#106425)
- [`impl SliceIndex<str> for (Bound<usize>, Bound<usize>)`]
(rust-lang/rust#111081)
- [Change default panic handler message format.]
(rust-lang/rust#112849)
- [Cleaner `assert_eq!` & `assert_ne!` panic messages.]
(rust-lang/rust#111071)
- [Correct the (deprecated) Android `stat` struct definitions.]
(rust-lang/rust#113130)
Stabilized APIs
---------------
- [Unsigned `{integer}::div_ceil`]
(https://doc.rust-lang.org/stable/std/primitive.u32.html#method.div_ceil)
- [Unsigned `{integer}::next_multiple_of`]
(https://doc.rust-lang.org/stable/std/primitive.u32.html#method.next_multiple_of)
- [Unsigned `{integer}::checked_next_multiple_of`]
(https://doc.rust-lang.org/stable/std/primitive.u32.html#method.checked_next_multiple_of)
- [`std::ffi::FromBytesUntilNulError`]
(https://doc.rust-lang.org/stable/std/ffi/struct.FromBytesUntilNulError.html)
- [`std::os::unix::fs::chown`]
(https://doc.rust-lang.org/stable/std/os/unix/fs/fn.chown.html)
- [`std::os::unix::fs::fchown`]
(https://doc.rust-lang.org/stable/std/os/unix/fs/fn.fchown.html)
- [`std::os::unix::fs::lfchown`]
(https://doc.rust-lang.org/stable/std/os/unix/fs/fn.lchown.html)
- [`LocalKey::<Cell<T>>::get`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.get)
- [`LocalKey::<Cell<T>>::set`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.set)
- [`LocalKey::<Cell<T>>::take`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.take)
- [`LocalKey::<Cell<T>>::replace`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.replace)
- [`LocalKey::<RefCell<T>>::with_borrow`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.with_borrow)
- [`LocalKey::<RefCell<T>>::with_borrow_mut`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.with_borrow_mut)
- [`LocalKey::<RefCell<T>>::set`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.set-1)
- [`LocalKey::<RefCell<T>>::take`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.take-1)
- [`LocalKey::<RefCell<T>>::replace`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.replace-1)
These APIs are now stable in const contexts:
- [`rc::Weak::new`]
(https://doc.rust-lang.org/stable/alloc/rc/struct.Weak.html#method.new)
- [`sync::Weak::new`]
(https://doc.rust-lang.org/stable/alloc/sync/struct.Weak.html#method.new)
- [`NonNull::as_ref`]
(https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.as_ref)
Cargo
-----
- [Encode URL params correctly for `SourceId` in `Cargo.lock`.]
(rust-lang/cargo#12280)
- [Bail out an error when using `cargo::` in custom build script.]
(rust-lang/cargo#12332)
Compatibility Notes
-------------------
- [Update the minimum external LLVM to 15.]
(rust-lang/rust#114148)
- [Check for non-defining uses of return position `impl Trait`.]
(rust-lang/rust#112842)
Internal Changes
----------------
These changes do not affect any public interfaces of Rust, but they represent
significant improvements to the performance or internals of rustc and related
tools.
- [Remove LLVM pointee types, supporting only opaque pointers.]
(rust-lang/rust#105545)
- [Port PGO/LTO/BOLT optimized build pipeline to Rust.]
(rust-lang/rust#112235)
- [Replace in-tree `rustc_apfloat` with the new version of the crate.]
(rust-lang/rust#113843)
- [Update to LLVM 17.]
(rust-lang/rust#114048)
- [Add `internal_features` lint for internal unstable features.]
(rust-lang/rust#108955)
- [Mention style for new syntax in tracking issue template.]
(rust-lang/rust#113586)
thomcc pushed a commit to pgcentralfoundation/postgrestd that referenced this pull request Oct 17, 2023
Fix empty_write since rust version attribute
Fixup of rust-lang/rust#98154 for the rust version.
r? ``@workingjubilee``
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Nov 16, 2023
Pkgsrc changes:
* Adjust patches and cargo checksums to new versions.
* For an external LLVM, set dependency of llvm >= 15, in accordance
with the upstream changes.
* Add a patch with a backport from LLVM 17.0.3 fixing codegen for
PPC, ref. rust-lang/rust#116845
Upstream changes:
Version 1.73.0 (2023-10-05)
==========================
Language
--------
- [Uplift `clippy::fn_null_check` lint as `useless_ptr_null_checks`.]
(rust-lang/rust#111717)
- [Make `noop_method_call` warn by default.]
(rust-lang/rust#111916)
- [Support interpolated block for `try` and `async` in macros.]
(rust-lang/rust#112953)
- [Make `unconditional_recursion` lint detect recursive drops.]
(rust-lang/rust#113902)
- [Future compatibility warning for some impls being incorrectly
considered not overlapping.]
(rust-lang/rust#114023)
- [The `invalid_reference_casting` lint is now **deny-by-default**
(instead of allow-by-default)]
(rust-lang/rust#112431
Compiler
--------
- [Write version information in a `.comment` section like GCC/Clang.]
(rust-lang/rust#97550)
- [Add documentation on v0 symbol mangling.]
(rust-lang/rust#97571)
- [Stabilize `extern "thiscall"` and `"thiscall-unwind"` ABIs.]
(rust-lang/rust#114562)
- [Only check outlives goals on impl compared to trait.]
(rust-lang/rust#109356)
- [Infer type in irrefutable slice patterns with fixed length as array.]
(rust-lang/rust#113199)
- [Discard default auto trait impls if explicit ones exist.]
(rust-lang/rust#113312)
- Add several new tier 3 targets:
- [`aarch64-unknown-teeos`]
(rust-lang/rust#113480)
- [`csky-unknown-linux-gnuabiv2`]
(rust-lang/rust#113658)
- [`riscv64-linux-android`]
(rust-lang/rust#112858)
- [`riscv64gc-unknown-hermit`]
(rust-lang/rust#114004)
- [`x86_64-unikraft-linux-musl`]
(rust-lang/rust#113411)
- [`x86_64-unknown-linux-ohos`]
(rust-lang/rust#113061)
- [Add `wasm32-wasi-preview1-threads` as a tier 2 target.]
(rust-lang/rust#112922)
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
Libraries
---------
- [Add `Read`, `Write` and `Seek` impls for `Arc<File>`.]
(rust-lang/rust#94748)
- [Merge functionality of `io::Sink` into `io::Empty`.]
(rust-lang/rust#98154)
- [Implement `RefUnwindSafe` for `Backtrace`]
(rust-lang/rust#100455)
- [Make `ExitStatus` implement `Default`]
(rust-lang/rust#106425)
- [`impl SliceIndex<str> for (Bound<usize>, Bound<usize>)`]
(rust-lang/rust#111081)
- [Change default panic handler message format.]
(rust-lang/rust#112849)
- [Cleaner `assert_eq!` & `assert_ne!` panic messages.]
(rust-lang/rust#111071)
- [Correct the (deprecated) Android `stat` struct definitions.]
(rust-lang/rust#113130)
Stabilized APIs
---------------
- [Unsigned `{integer}::div_ceil`]
(https://doc.rust-lang.org/stable/std/primitiv e.u32.html#method.div_ceil)
- [Unsigned `{integer}::next_multiple_of`]
(https://doc.rust-lang.org/stable/std/primitive.u32.html#method.next_multiple_of)
- [Unsigned `{integer}::checked_next_multiple_of`]
(https://doc.rust-lang.org/stable/std/primitive.u32.html#method.checked_next_multiple_of)
- [`std::ffi::FromBytesUntilNulError`]
(https://doc.rust-lang.org/stable/std/ffi/struct.FromBytesUntilNulError.html)
- [`std::os::unix::fs::chown`]
(https://doc.rust-lang.org/stable/std/os/unix/fs/fn.chown.html)
- [`std::os::unix::fs::fchown`]
(https://doc.rust-lang.org/stable/std/os/unix/fs/fn.fchown.html)
- [`std::os::unix::fs::lfchown`]
(https://doc.rust-lang.org/stable/std/os/unix/fs/fn.lchown.html)
- [`LocalKey::<Cell<T>>::get`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.get)
- [`LocalKey::<Cell<T>>::set`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.set)
- [`LocalKey::<Cell<T>>::take`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.take)
- [`LocalKey::<Cell<T>>::replace`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.replace)
- [`LocalKey::<RefCell<T>>::with_borrow`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.with_borrow)
- [`LocalKey::<RefCell<T>>::with_borrow_mut`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.with_borrow_mut)
- [`LocalKey::<RefCell<T>>::set`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.set-1)
- [`LocalKey::<RefCell<T>>::take`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.take-1)
- [`LocalKey::<RefCell<T>>::replace`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.replace-1)
These APIs are now stable in const contexts:
- [`rc::Weak::new`]
(https://doc.rust-lang.org/stable/alloc/rc/struct.Weak.html#method.new)
- [`sync::Weak::new`]
(https://doc.rust-lang.org/stable/alloc/sync/struct.Weak.html#method.new)
- [`NonNull::as_ref`]
(https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.as_ref)
Cargo
-----
- [Encode URL params correctly for `SourceId` in `Cargo.lock`.]
(rust-lang/cargo#12280)
- [Bail out an error when using `cargo::` in custom build script.]
(rust-lang/cargo#12332)
Misc
----
Compatibility Notes
-------------------
- [Update the minimum external LLVM to 15.]
(rust-lang/rust#114148)
- [Check for non-defining uses of return position `impl Trait`.]
(rust-lang/rust#112842)
Internal Changes
----------------
These changes do not affect any public interfaces of Rust, but they
represent significant improvements to the performance or internals
of rustc and related tools.
- [Remove LLVM pointee types, supporting only opaque pointers.]
(rust-lang/rust#105545)
- [Port PGO/LTO/BOLT optimized build pipeline to Rust.]
(rust-lang/rust#112235)
- [Replace in-tree `rustc_apfloat` with the new version of the crate.]
(rust-lang/rust#113843)
- [Update to LLVM 17.]
(rust-lang/rust#114048)
- [Add `internal_features` lint for internal unstable features.]
(rust-lang/rust#108955)
- [Mention style for new syntax in tracking issue template.]
(rust-lang/rust#113586)
msk pushed a commit to msk/pkgsrc that referenced this pull request May 11, 2026
Pkgsrc changes:
* Adjust patches and cargo checksums to new versions.
* For an external LLVM, set dependency of llvm >= 15, in accordance
with the upstream changes.
* Add a patch with a backport from LLVM 17.0.3 fixing codegen for
PPC, ref. rust-lang/rust#116845
Upstream changes:
Version 1.73.0 (2023-10-05)
==========================
Language
--------
- [Uplift `clippy::fn_null_check` lint as `useless_ptr_null_checks`.]
(rust-lang/rust#111717)
- [Make `noop_method_call` warn by default.]
(rust-lang/rust#111916)
- [Support interpolated block for `try` and `async` in macros.]
(rust-lang/rust#112953)
- [Make `unconditional_recursion` lint detect recursive drops.]
(rust-lang/rust#113902)
- [Future compatibility warning for some impls being incorrectly
considered not overlapping.]
(rust-lang/rust#114023)
- [The `invalid_reference_casting` lint is now **deny-by-default**
(instead of allow-by-default)]
(rust-lang/rust#112431
Compiler
--------
- [Write version information in a `.comment` section like GCC/Clang.]
(rust-lang/rust#97550)
- [Add documentation on v0 symbol mangling.]
(rust-lang/rust#97571)
- [Stabilize `extern "thiscall"` and `"thiscall-unwind"` ABIs.]
(rust-lang/rust#114562)
- [Only check outlives goals on impl compared to trait.]
(rust-lang/rust#109356)
- [Infer type in irrefutable slice patterns with fixed length as array.]
(rust-lang/rust#113199)
- [Discard default auto trait impls if explicit ones exist.]
(rust-lang/rust#113312)
- Add several new tier 3 targets:
- [`aarch64-unknown-teeos`]
(rust-lang/rust#113480)
- [`csky-unknown-linux-gnuabiv2`]
(rust-lang/rust#113658)
- [`riscv64-linux-android`]
(rust-lang/rust#112858)
- [`riscv64gc-unknown-hermit`]
(rust-lang/rust#114004)
- [`x86_64-unikraft-linux-musl`]
(rust-lang/rust#113411)
- [`x86_64-unknown-linux-ohos`]
(rust-lang/rust#113061)
- [Add `wasm32-wasi-preview1-threads` as a tier 2 target.]
(rust-lang/rust#112922)
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
Libraries
---------
- [Add `Read`, `Write` and `Seek` impls for `Arc<File>`.]
(rust-lang/rust#94748)
- [Merge functionality of `io::Sink` into `io::Empty`.]
(rust-lang/rust#98154)
- [Implement `RefUnwindSafe` for `Backtrace`]
(rust-lang/rust#100455)
- [Make `ExitStatus` implement `Default`]
(rust-lang/rust#106425)
- [`impl SliceIndex<str> for (Bound<usize>, Bound<usize>)`]
(rust-lang/rust#111081)
- [Change default panic handler message format.]
(rust-lang/rust#112849)
- [Cleaner `assert_eq!` & `assert_ne!` panic messages.]
(rust-lang/rust#111071)
- [Correct the (deprecated) Android `stat` struct definitions.]
(rust-lang/rust#113130)
Stabilized APIs
---------------
- [Unsigned `{integer}::div_ceil`]
(https://doc.rust-lang.org/stable/std/primitiv e.u32.html#method.div_ceil)
- [Unsigned `{integer}::next_multiple_of`]
(https://doc.rust-lang.org/stable/std/primitive.u32.html#method.next_multiple_of)
- [Unsigned `{integer}::checked_next_multiple_of`]
(https://doc.rust-lang.org/stable/std/primitive.u32.html#method.checked_next_multiple_of)
- [`std::ffi::FromBytesUntilNulError`]
(https://doc.rust-lang.org/stable/std/ffi/struct.FromBytesUntilNulError.html)
- [`std::os::unix::fs::chown`]
(https://doc.rust-lang.org/stable/std/os/unix/fs/fn.chown.html)
- [`std::os::unix::fs::fchown`]
(https://doc.rust-lang.org/stable/std/os/unix/fs/fn.fchown.html)
- [`std::os::unix::fs::lfchown`]
(https://doc.rust-lang.org/stable/std/os/unix/fs/fn.lchown.html)
- [`LocalKey::<Cell<T>>::get`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.get)
- [`LocalKey::<Cell<T>>::set`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.set)
- [`LocalKey::<Cell<T>>::take`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.take)
- [`LocalKey::<Cell<T>>::replace`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.replace)
- [`LocalKey::<RefCell<T>>::with_borrow`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.with_borrow)
- [`LocalKey::<RefCell<T>>::with_borrow_mut`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.with_borrow_mut)
- [`LocalKey::<RefCell<T>>::set`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.set-1)
- [`LocalKey::<RefCell<T>>::take`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.take-1)
- [`LocalKey::<RefCell<T>>::replace`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.replace-1)
These APIs are now stable in const contexts:
- [`rc::Weak::new`]
(https://doc.rust-lang.org/stable/alloc/rc/struct.Weak.html#method.new)
- [`sync::Weak::new`]
(https://doc.rust-lang.org/stable/alloc/sync/struct.Weak.html#method.new)
- [`NonNull::as_ref`]
(https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.as_ref)
Cargo
-----
- [Encode URL params correctly for `SourceId` in `Cargo.lock`.]
(rust-lang/cargo#12280)
- [Bail out an error when using `cargo::` in custom build script.]
(rust-lang/cargo#12332)
Misc
----
Compatibility Notes
-------------------
- [Update the minimum external LLVM to 15.]
(rust-lang/rust#114148)
- [Check for non-defining uses of return position `impl Trait`.]
(rust-lang/rust#112842)
Internal Changes
----------------
These changes do not affect any public interfaces of Rust, but they
represent significant improvements to the performance or internals
of rustc and related tools.
- [Remove LLVM pointee types, supporting only opaque pointers.]
(rust-lang/rust#105545)
- [Port PGO/LTO/BOLT optimized build pipeline to Rust.]
(rust-lang/rust#112235)
- [Replace in-tree `rustc_apfloat` with the new version of the crate.]
(rust-lang/rust#113843)
- [Update to LLVM 17.]
(rust-lang/rust#114048)
- [Add `internal_features` lint for internal unstable features.]
(rust-lang/rust#108955)
- [Mention style for new syntax in tracking issue template.]
(rust-lang/rust#113586)
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request May 13, 2026
Pkgsrc changes:
* Adjust patches and cargo checksums to new versions.
* For an external LLVM, set dependency of llvm >= 15, in accordance
with the upstream changes.
* Add a patch with a backport from LLVM 17.0.3 fixing codegen for
PPC, ref. rust-lang/rust#116845
Upstream changes:
Version 1.73.0 (2023-10-05)
==========================
Language
--------
- [Uplift `clippy::fn_null_check` lint as `useless_ptr_null_checks`.]
(rust-lang/rust#111717)
- [Make `noop_method_call` warn by default.]
(rust-lang/rust#111916)
- [Support interpolated block for `try` and `async` in macros.]
(rust-lang/rust#112953)
- [Make `unconditional_recursion` lint detect recursive drops.]
(rust-lang/rust#113902)
- [Future compatibility warning for some impls being incorrectly
considered not overlapping.]
(rust-lang/rust#114023)
- [The `invalid_reference_casting` lint is now **deny-by-default**
(instead of allow-by-default)]
(rust-lang/rust#112431
Compiler
--------
- [Write version information in a `.comment` section like GCC/Clang.]
(rust-lang/rust#97550)
- [Add documentation on v0 symbol mangling.]
(rust-lang/rust#97571)
- [Stabilize `extern "thiscall"` and `"thiscall-unwind"` ABIs.]
(rust-lang/rust#114562)
- [Only check outlives goals on impl compared to trait.]
(rust-lang/rust#109356)
- [Infer type in irrefutable slice patterns with fixed length as array.]
(rust-lang/rust#113199)
- [Discard default auto trait impls if explicit ones exist.]
(rust-lang/rust#113312)
- Add several new tier 3 targets:
- [`aarch64-unknown-teeos`]
(rust-lang/rust#113480)
- [`csky-unknown-linux-gnuabiv2`]
(rust-lang/rust#113658)
- [`riscv64-linux-android`]
(rust-lang/rust#112858)
- [`riscv64gc-unknown-hermit`]
(rust-lang/rust#114004)
- [`x86_64-unikraft-linux-musl`]
(rust-lang/rust#113411)
- [`x86_64-unknown-linux-ohos`]
(rust-lang/rust#113061)
- [Add `wasm32-wasi-preview1-threads` as a tier 2 target.]
(rust-lang/rust#112922)
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
Libraries
---------
- [Add `Read`, `Write` and `Seek` impls for `Arc<File>`.]
(rust-lang/rust#94748)
- [Merge functionality of `io::Sink` into `io::Empty`.]
(rust-lang/rust#98154)
- [Implement `RefUnwindSafe` for `Backtrace`]
(rust-lang/rust#100455)
- [Make `ExitStatus` implement `Default`]
(rust-lang/rust#106425)
- [`impl SliceIndex<str> for (Bound<usize>, Bound<usize>)`]
(rust-lang/rust#111081)
- [Change default panic handler message format.]
(rust-lang/rust#112849)
- [Cleaner `assert_eq!` & `assert_ne!` panic messages.]
(rust-lang/rust#111071)
- [Correct the (deprecated) Android `stat` struct definitions.]
(rust-lang/rust#113130)
Stabilized APIs
---------------
- [Unsigned `{integer}::div_ceil`]
(https://doc.rust-lang.org/stable/std/primitiv e.u32.html#method.div_ceil)
- [Unsigned `{integer}::next_multiple_of`]
(https://doc.rust-lang.org/stable/std/primitive.u32.html#method.next_multiple_of)
- [Unsigned `{integer}::checked_next_multiple_of`]
(https://doc.rust-lang.org/stable/std/primitive.u32.html#method.checked_next_multiple_of)
- [`std::ffi::FromBytesUntilNulError`]
(https://doc.rust-lang.org/stable/std/ffi/struct.FromBytesUntilNulError.html)
- [`std::os::unix::fs::chown`]
(https://doc.rust-lang.org/stable/std/os/unix/fs/fn.chown.html)
- [`std::os::unix::fs::fchown`]
(https://doc.rust-lang.org/stable/std/os/unix/fs/fn.fchown.html)
- [`std::os::unix::fs::lfchown`]
(https://doc.rust-lang.org/stable/std/os/unix/fs/fn.lchown.html)
- [`LocalKey::<Cell<T>>::get`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.get)
- [`LocalKey::<Cell<T>>::set`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.set)
- [`LocalKey::<Cell<T>>::take`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.take)
- [`LocalKey::<Cell<T>>::replace`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.replace)
- [`LocalKey::<RefCell<T>>::with_borrow`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.with_borrow)
- [`LocalKey::<RefCell<T>>::with_borrow_mut`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.with_borrow_mut)
- [`LocalKey::<RefCell<T>>::set`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.set-1)
- [`LocalKey::<RefCell<T>>::take`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.take-1)
- [`LocalKey::<RefCell<T>>::replace`]
(https://doc.rust-lang.org/stable/std/thread/struct.LocalKey.html#method.replace-1)
These APIs are now stable in const contexts:
- [`rc::Weak::new`]
(https://doc.rust-lang.org/stable/alloc/rc/struct.Weak.html#method.new)
- [`sync::Weak::new`]
(https://doc.rust-lang.org/stable/alloc/sync/struct.Weak.html#method.new)
- [`NonNull::as_ref`]
(https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.as_ref)
Cargo
-----
- [Encode URL params correctly for `SourceId` in `Cargo.lock`.]
(rust-lang/cargo#12280)
- [Bail out an error when using `cargo::` in custom build script.]
(rust-lang/cargo#12332)
Misc
----
Compatibility Notes
-------------------
- [Update the minimum external LLVM to 15.]
(rust-lang/rust#114148)
- [Check for non-defining uses of return position `impl Trait`.]
(rust-lang/rust#112842)
Internal Changes
----------------
These changes do not affect any public interfaces of Rust, but they
represent significant improvements to the performance or internals
of rustc and related tools.
- [Remove LLVM pointee types, supporting only opaque pointers.]
(rust-lang/rust#105545)
- [Port PGO/LTO/BOLT optimized build pipeline to Rust.]
(rust-lang/rust#112235)
- [Replace in-tree `rustc_apfloat` with the new version of the crate.]
(rust-lang/rust#113843)
- [Update to LLVM 17.]
(rust-lang/rust#114048)
- [Add `internal_features` lint for internal unstable features.]
(rust-lang/rust#108955)
- [Mention style for new syntax in tracking issue template.]
(rust-lang/rust#113586)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

disposition-mergeThis issue / PR is in PFCP or FCP with a disposition to merge it.finished-final-comment-periodThe final comment period is finished for this PR / Issue.needs-fcpThis change is insta-stable, or significant enough to need a team FCP to proceed.S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-libs-api[DEPRECATED; DO NOT USE]

Projects

None yet

Development

Successfully merging this pull request may close these issues.

15 participants

@vidhanio@rust-highfive@rust-log-analyzer@rustbot@joshtriplett@jyn514@bors@craterbot@rfcbot@SUPERCILEX@pitaj@workingjubilee@BurntSushi@Mark-Simulacrum@apiraino