-
Notifications
You must be signed in to change notification settings - Fork 12.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Don't drain-on-drop in DrainFilter impls of various collections. #104455
Conversation
r? @m-ou-se (rustbot has picked a reviewer for you, use r? to override) |
Hey! It looks like you've submitted a new PR for the library teams! If this PR contains changes to any Examples of
|
For discussion: @m-ou-se proposed to additionally renaming One proposed name would be |
This comment has been minimized.
This comment has been minimized.
9a8434f
to
d487330
Compare
@@ -967,6 +967,10 @@ impl<T> LinkedList<T> { | |||
/// If the closure returns false, the element will remain in the list and will not be yielded | |||
/// by the iterator. | |||
/// | |||
/// If the returned `DrainFilter` is not exhausted, e.g. because it is dropped without iterating | |||
/// or the iteration short-circuits, then the remaining elements will be retained. | |||
/// Use `drain_filter().for_each(drop)` if you do not need the returned iterator. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LinkedList doesn't have a retain method, so unlike the other collections I can't recommend that as alternative.
☔ The latest upstream changes (presumably #106209) made this pull request unmergeable. Please resolve the merge conflicts. |
Removing T-compiler (changes under @rustbot label -T-compiler |
@rustbot label -S-waiting-on-review +S-waiting-on-ACP |
d487330
to
db2907e
Compare
Some changes occurred to MIR optimizations cc @rust-lang/wg-mir-opt |
This comment has been minimized.
This comment has been minimized.
10b1aca
to
70b8a7e
Compare
This comment has been minimized.
This comment has been minimized.
Finished benchmarking commit (6ee4265): comparison URL. Overall result: ✅ improvements - no action needed@rustbot label: -perf-regression Instruction countThis is a highly reliable metric that was used to determine the overall result at the top of this comment.
Max RSS (memory usage)ResultsThis is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
CyclesResultsThis is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
Binary sizeResultsThis is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
Bootstrap: 649.711s -> 647.883s (-0.28%) |
/// A flag that indicates a panic has occurred in the filter test predicate. | ||
/// This is used as a hint in the drop implementation to prevent consumption | ||
/// of the remainder of the `ExtractIf`. Any unprocessed items will be | ||
/// backshifted in the `vec`, but no further items will be dropped or | ||
/// tested by the filter predicate. | ||
pub(super) panic_flag: bool, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is not actually true though, is it? I don't see any mentions of panic_flag
except = true
and = false
in next
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good catch. With the Drop impl gone this is no longer needed. I'll do a followup.
sync w/ upstream References: * rust-lang/rust#104455 * rust-lang/rust#70530 Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
…hnTitor remove unused field Followup to rust-lang#104455. The field is no longer needed since ExtractIf (previously DrainFilter) doesn't keep draining in its drop impl.
Version 1.72.0 (2023-08-24) ========================== Language -------- - [Replace const eval limit by a lint and add an exponential backoff warning](rust-lang/rust#103877) - [expand: Change how `#![cfg(FALSE)]` behaves on crate root](rust-lang/rust#110141) - [Stabilize inline asm for LoongArch64](rust-lang/rust#111235) - [Uplift `clippy::undropped_manually_drops` lint](rust-lang/rust#111530) - [Uplift `clippy::invalid_utf8_in_unchecked` lint](rust-lang/rust#111543) - [Uplift `clippy::cast_ref_to_mut` lint](rust-lang/rust#111567) - [Uplift `clippy::cmp_nan` lint](rust-lang/rust#111818) - [resolve: Remove artificial import ambiguity errors](rust-lang/rust#112086) - [Don't require associated types with Self: Sized bounds in `dyn Trait` objects](rust-lang/rust#112319) Compiler -------- - [Remember names of `cfg`-ed out items to mention them in diagnostics](rust-lang/rust#109005) - [Support for native WASM exceptions](rust-lang/rust#111322) - [Add support for NetBSD/aarch64-be (big-endian arm64).](rust-lang/rust#111326) - [Write to stdout if `-` is given as output file](rust-lang/rust#111626) - [Force all native libraries to be statically linked when linking a static binary](rust-lang/rust#111698) - [Add Tier 3 support for `loongarch64-unknown-none*`](rust-lang/rust#112310) - [Prevent `.eh_frame` from being emitted for `-C panic=abort`](rust-lang/rust#112403) - [Support 128-bit enum variant in debuginfo codegen](rust-lang/rust#112474) - [compiler: update solaris/illumos to enable tsan support.](rust-lang/rust#112039) Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. Libraries --------- - [Document memory orderings of `thread::{park, unpark}`](rust-lang/rust#99587) - [io: soften ‘at most one write attempt’ requirement in io::Write::write](rust-lang/rust#107200) - [Specify behavior of HashSet::insert](rust-lang/rust#107619) - [Relax implicit `T: Sized` bounds on `BufReader<T>`, `BufWriter<T>` and `LineWriter<T>`](rust-lang/rust#111074) - [Update runtime guarantee for `select_nth_unstable`](rust-lang/rust#111974) - [Return `Ok` on kill if process has already exited](rust-lang/rust#112594) - [Implement PartialOrd for `Vec`s over different allocators](rust-lang/rust#112632) - [Use 128 bits for TypeId hash](rust-lang/rust#109953) - [Don't drain-on-drop in DrainFilter impls of various collections.](rust-lang/rust#104455) - [Make `{Arc,Rc,Weak}::ptr_eq` ignore pointer metadata](rust-lang/rust#106450) Rustdoc ------- - [Allow whitespace as path separator like double colon](rust-lang/rust#108537) - [Add search result item types after their name](rust-lang/rust#110688) - [Search for slices and arrays by type with `[]`](rust-lang/rust#111958) - [Clean up type unification and "unboxing"](rust-lang/rust#112233) Stabilized APIs --------------- - [`impl<T: Send> Sync for mpsc::Sender<T>`](https://doc.rust-lang.org/nightly/std/sync/mpsc/struct.Sender.html#impl-Sync-for-Sender%3CT%3E) - [`impl TryFrom<&OsStr> for &str`](https://doc.rust-lang.org/nightly/std/primitive.str.html#impl-TryFrom%3C%26'a+OsStr%3E-for-%26'a+str) - [`String::leak`](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#method.leak) These APIs are now stable in const contexts: - [`CStr::from_bytes_with_nul`](https://doc.rust-lang.org/nightly/std/ffi/struct.CStr.html#method.from_bytes_with_nul) - [`CStr::to_bytes`](https://doc.rust-lang.org/nightly/std/ffi/struct.CStr.html#method.from_bytes_with_nul) - [`CStr::to_bytes_with_nul`](https://doc.rust-lang.org/nightly/std/ffi/struct.CStr.html#method.from_bytes_with_nul) - [`CStr::to_str`](https://doc.rust-lang.org/nightly/std/ffi/struct.CStr.html#method.from_bytes_with_nul) Cargo ----- - Enable `-Zdoctest-in-workspace` by default. When running each documentation test, the working directory is set to the root directory of the package the test belongs to. [docs](https://doc.rust-lang.org/nightly/cargo/commands/cargo-test.html#working-directory-of-tests) [openwrt#12221](rust-lang/cargo#12221) [openwrt#12288](rust-lang/cargo#12288) - Add support of the "default" keyword to reset previously set `build.jobs` parallelism back to the default. [openwrt#12222](rust-lang/cargo#12222) Compatibility Notes ------------------- - [Alter `Display` for `Ipv6Addr` for IPv4-compatible addresses](rust-lang/rust#112606) - Cargo changed feature name validation check to a hard error. The warning was added in Rust 1.49. These extended characters aren't allowed on crates.io, so this should only impact users of other registries, or people who don't publish to a registry. [openwrt#12291](rust-lang/cargo#12291) Refreshed patches. Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Version 1.72.0 (2023-08-24) ========================== Language -------- - [Replace const eval limit by a lint and add an exponential backoff warning](rust-lang/rust#103877) - [expand: Change how `#![cfg(FALSE)]` behaves on crate root](rust-lang/rust#110141) - [Stabilize inline asm for LoongArch64](rust-lang/rust#111235) - [Uplift `clippy::undropped_manually_drops` lint](rust-lang/rust#111530) - [Uplift `clippy::invalid_utf8_in_unchecked` lint](rust-lang/rust#111543) - [Uplift `clippy::cast_ref_to_mut` lint](rust-lang/rust#111567) - [Uplift `clippy::cmp_nan` lint](rust-lang/rust#111818) - [resolve: Remove artificial import ambiguity errors](rust-lang/rust#112086) - [Don't require associated types with Self: Sized bounds in `dyn Trait` objects](rust-lang/rust#112319) Compiler -------- - [Remember names of `cfg`-ed out items to mention them in diagnostics](rust-lang/rust#109005) - [Support for native WASM exceptions](rust-lang/rust#111322) - [Add support for NetBSD/aarch64-be (big-endian arm64).](rust-lang/rust#111326) - [Write to stdout if `-` is given as output file](rust-lang/rust#111626) - [Force all native libraries to be statically linked when linking a static binary](rust-lang/rust#111698) - [Add Tier 3 support for `loongarch64-unknown-none*`](rust-lang/rust#112310) - [Prevent `.eh_frame` from being emitted for `-C panic=abort`](rust-lang/rust#112403) - [Support 128-bit enum variant in debuginfo codegen](rust-lang/rust#112474) - [compiler: update solaris/illumos to enable tsan support.](rust-lang/rust#112039) Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. Libraries --------- - [Document memory orderings of `thread::{park, unpark}`](rust-lang/rust#99587) - [io: soften ‘at most one write attempt’ requirement in io::Write::write](rust-lang/rust#107200) - [Specify behavior of HashSet::insert](rust-lang/rust#107619) - [Relax implicit `T: Sized` bounds on `BufReader<T>`, `BufWriter<T>` and `LineWriter<T>`](rust-lang/rust#111074) - [Update runtime guarantee for `select_nth_unstable`](rust-lang/rust#111974) - [Return `Ok` on kill if process has already exited](rust-lang/rust#112594) - [Implement PartialOrd for `Vec`s over different allocators](rust-lang/rust#112632) - [Use 128 bits for TypeId hash](rust-lang/rust#109953) - [Don't drain-on-drop in DrainFilter impls of various collections.](rust-lang/rust#104455) - [Make `{Arc,Rc,Weak}::ptr_eq` ignore pointer metadata](rust-lang/rust#106450) Rustdoc ------- - [Allow whitespace as path separator like double colon](rust-lang/rust#108537) - [Add search result item types after their name](rust-lang/rust#110688) - [Search for slices and arrays by type with `[]`](rust-lang/rust#111958) - [Clean up type unification and "unboxing"](rust-lang/rust#112233) Stabilized APIs --------------- - [`impl<T: Send> Sync for mpsc::Sender<T>`](https://doc.rust-lang.org/nightly/std/sync/mpsc/struct.Sender.html#impl-Sync-for-Sender%3CT%3E) - [`impl TryFrom<&OsStr> for &str`](https://doc.rust-lang.org/nightly/std/primitive.str.html#impl-TryFrom%3C%26'a+OsStr%3E-for-%26'a+str) - [`String::leak`](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#method.leak) These APIs are now stable in const contexts: - [`CStr::from_bytes_with_nul`](https://doc.rust-lang.org/nightly/std/ffi/struct.CStr.html#method.from_bytes_with_nul) - [`CStr::to_bytes`](https://doc.rust-lang.org/nightly/std/ffi/struct.CStr.html#method.from_bytes_with_nul) - [`CStr::to_bytes_with_nul`](https://doc.rust-lang.org/nightly/std/ffi/struct.CStr.html#method.from_bytes_with_nul) - [`CStr::to_str`](https://doc.rust-lang.org/nightly/std/ffi/struct.CStr.html#method.from_bytes_with_nul) Cargo ----- - Enable `-Zdoctest-in-workspace` by default. When running each documentation test, the working directory is set to the root directory of the package the test belongs to. [docs](https://doc.rust-lang.org/nightly/cargo/commands/cargo-test.html#working-directory-of-tests) [openwrt#12221](rust-lang/cargo#12221) [openwrt#12288](rust-lang/cargo#12288) - Add support of the "default" keyword to reset previously set `build.jobs` parallelism back to the default. [openwrt#12222](rust-lang/cargo#12222) Compatibility Notes ------------------- - [Alter `Display` for `Ipv6Addr` for IPv4-compatible addresses](rust-lang/rust#112606) - Cargo changed feature name validation check to a hard error. The warning was added in Rust 1.49. These extended characters aren't allowed on crates.io, so this should only impact users of other registries, or people who don't publish to a registry. [openwrt#12291](rust-lang/cargo#12291) Refreshed patches. Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Hi @the8472, I was upgrading Rust version in our project and I found that upgrade from 1.71.0 to 1.72.0 causes differences in our determinism checks. In short, we have a complicated heuristic algorithm with a lot of inputs and we have a way to check if it gives exactly the same results (if we do not expect changes). In 1.72.0 Changelog I could not see anything that would affect our code, but for some reason our determinism checks failed. I've analysed our code and I found where the behaviour has changed.
In Rust 1.72.0 this It is not really much of a problem for us, as I now know understand the difference, I can just upgrade Rust version in our project. |
That's probably due to the hashbrown update. You could try comparing the behavior by dropping hashbrown 0.13.1 and 0.14's types into your type alias instead of the std type. |
Ok, I've used |
Version 1.72.0 (2023-08-24) ========================== Language -------- - [Replace const eval limit by a lint and add an exponential backoff warning](rust-lang/rust#103877) - [expand: Change how `#![cfg(FALSE)]` behaves on crate root](rust-lang/rust#110141) - [Stabilize inline asm for LoongArch64](rust-lang/rust#111235) - [Uplift `clippy::undropped_manually_drops` lint](rust-lang/rust#111530) - [Uplift `clippy::invalid_utf8_in_unchecked` lint](rust-lang/rust#111543) - [Uplift `clippy::cast_ref_to_mut` lint](rust-lang/rust#111567) - [Uplift `clippy::cmp_nan` lint](rust-lang/rust#111818) - [resolve: Remove artificial import ambiguity errors](rust-lang/rust#112086) - [Don't require associated types with Self: Sized bounds in `dyn Trait` objects](rust-lang/rust#112319) Compiler -------- - [Remember names of `cfg`-ed out items to mention them in diagnostics](rust-lang/rust#109005) - [Support for native WASM exceptions](rust-lang/rust#111322) - [Add support for NetBSD/aarch64-be (big-endian arm64).](rust-lang/rust#111326) - [Write to stdout if `-` is given as output file](rust-lang/rust#111626) - [Force all native libraries to be statically linked when linking a static binary](rust-lang/rust#111698) - [Add Tier 3 support for `loongarch64-unknown-none*`](rust-lang/rust#112310) - [Prevent `.eh_frame` from being emitted for `-C panic=abort`](rust-lang/rust#112403) - [Support 128-bit enum variant in debuginfo codegen](rust-lang/rust#112474) - [compiler: update solaris/illumos to enable tsan support.](rust-lang/rust#112039) Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. Libraries --------- - [Document memory orderings of `thread::{park, unpark}`](rust-lang/rust#99587) - [io: soften ‘at most one write attempt’ requirement in io::Write::write](rust-lang/rust#107200) - [Specify behavior of HashSet::insert](rust-lang/rust#107619) - [Relax implicit `T: Sized` bounds on `BufReader<T>`, `BufWriter<T>` and `LineWriter<T>`](rust-lang/rust#111074) - [Update runtime guarantee for `select_nth_unstable`](rust-lang/rust#111974) - [Return `Ok` on kill if process has already exited](rust-lang/rust#112594) - [Implement PartialOrd for `Vec`s over different allocators](rust-lang/rust#112632) - [Use 128 bits for TypeId hash](rust-lang/rust#109953) - [Don't drain-on-drop in DrainFilter impls of various collections.](rust-lang/rust#104455) - [Make `{Arc,Rc,Weak}::ptr_eq` ignore pointer metadata](rust-lang/rust#106450) Rustdoc ------- - [Allow whitespace as path separator like double colon](rust-lang/rust#108537) - [Add search result item types after their name](rust-lang/rust#110688) - [Search for slices and arrays by type with `[]`](rust-lang/rust#111958) - [Clean up type unification and "unboxing"](rust-lang/rust#112233) Stabilized APIs --------------- - [`impl<T: Send> Sync for mpsc::Sender<T>`](https://doc.rust-lang.org/nightly/std/sync/mpsc/struct.Sender.html#impl-Sync-for-Sender%3CT%3E) - [`impl TryFrom<&OsStr> for &str`](https://doc.rust-lang.org/nightly/std/primitive.str.html#impl-TryFrom%3C%26'a+OsStr%3E-for-%26'a+str) - [`String::leak`](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#method.leak) These APIs are now stable in const contexts: - [`CStr::from_bytes_with_nul`](https://doc.rust-lang.org/nightly/std/ffi/struct.CStr.html#method.from_bytes_with_nul) - [`CStr::to_bytes`](https://doc.rust-lang.org/nightly/std/ffi/struct.CStr.html#method.from_bytes_with_nul) - [`CStr::to_bytes_with_nul`](https://doc.rust-lang.org/nightly/std/ffi/struct.CStr.html#method.from_bytes_with_nul) - [`CStr::to_str`](https://doc.rust-lang.org/nightly/std/ffi/struct.CStr.html#method.from_bytes_with_nul) Cargo ----- - Enable `-Zdoctest-in-workspace` by default. When running each documentation test, the working directory is set to the root directory of the package the test belongs to. [docs](https://doc.rust-lang.org/nightly/cargo/commands/cargo-test.html#working-directory-of-tests) [openwrt#12221](rust-lang/cargo#12221) [openwrt#12288](rust-lang/cargo#12288) - Add support of the "default" keyword to reset previously set `build.jobs` parallelism back to the default. [openwrt#12222](rust-lang/cargo#12222) Compatibility Notes ------------------- - [Alter `Display` for `Ipv6Addr` for IPv4-compatible addresses](rust-lang/rust#112606) - Cargo changed feature name validation check to a hard error. The warning was added in Rust 1.49. These extended characters aren't allowed on crates.io, so this should only impact users of other registries, or people who don't publish to a registry. [openwrt#12291](rust-lang/cargo#12291) Refreshed patches. Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org> (cherry picked from commit 846ee0b) Signed-off-by: Jeffery To <jeffery.to@gmail.com>
Version 1.72.0 (2023-08-24) ========================== Language -------- - [Replace const eval limit by a lint and add an exponential backoff warning](rust-lang/rust#103877) - [expand: Change how `#![cfg(FALSE)]` behaves on crate root](rust-lang/rust#110141) - [Stabilize inline asm for LoongArch64](rust-lang/rust#111235) - [Uplift `clippy::undropped_manually_drops` lint](rust-lang/rust#111530) - [Uplift `clippy::invalid_utf8_in_unchecked` lint](rust-lang/rust#111543) - [Uplift `clippy::cast_ref_to_mut` lint](rust-lang/rust#111567) - [Uplift `clippy::cmp_nan` lint](rust-lang/rust#111818) - [resolve: Remove artificial import ambiguity errors](rust-lang/rust#112086) - [Don't require associated types with Self: Sized bounds in `dyn Trait` objects](rust-lang/rust#112319) Compiler -------- - [Remember names of `cfg`-ed out items to mention them in diagnostics](rust-lang/rust#109005) - [Support for native WASM exceptions](rust-lang/rust#111322) - [Add support for NetBSD/aarch64-be (big-endian arm64).](rust-lang/rust#111326) - [Write to stdout if `-` is given as output file](rust-lang/rust#111626) - [Force all native libraries to be statically linked when linking a static binary](rust-lang/rust#111698) - [Add Tier 3 support for `loongarch64-unknown-none*`](rust-lang/rust#112310) - [Prevent `.eh_frame` from being emitted for `-C panic=abort`](rust-lang/rust#112403) - [Support 128-bit enum variant in debuginfo codegen](rust-lang/rust#112474) - [compiler: update solaris/illumos to enable tsan support.](rust-lang/rust#112039) Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. Libraries --------- - [Document memory orderings of `thread::{park, unpark}`](rust-lang/rust#99587) - [io: soften ‘at most one write attempt’ requirement in io::Write::write](rust-lang/rust#107200) - [Specify behavior of HashSet::insert](rust-lang/rust#107619) - [Relax implicit `T: Sized` bounds on `BufReader<T>`, `BufWriter<T>` and `LineWriter<T>`](rust-lang/rust#111074) - [Update runtime guarantee for `select_nth_unstable`](rust-lang/rust#111974) - [Return `Ok` on kill if process has already exited](rust-lang/rust#112594) - [Implement PartialOrd for `Vec`s over different allocators](rust-lang/rust#112632) - [Use 128 bits for TypeId hash](rust-lang/rust#109953) - [Don't drain-on-drop in DrainFilter impls of various collections.](rust-lang/rust#104455) - [Make `{Arc,Rc,Weak}::ptr_eq` ignore pointer metadata](rust-lang/rust#106450) Rustdoc ------- - [Allow whitespace as path separator like double colon](rust-lang/rust#108537) - [Add search result item types after their name](rust-lang/rust#110688) - [Search for slices and arrays by type with `[]`](rust-lang/rust#111958) - [Clean up type unification and "unboxing"](rust-lang/rust#112233) Stabilized APIs --------------- - [`impl<T: Send> Sync for mpsc::Sender<T>`](https://doc.rust-lang.org/nightly/std/sync/mpsc/struct.Sender.html#impl-Sync-for-Sender%3CT%3E) - [`impl TryFrom<&OsStr> for &str`](https://doc.rust-lang.org/nightly/std/primitive.str.html#impl-TryFrom%3C%26'a+OsStr%3E-for-%26'a+str) - [`String::leak`](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#method.leak) These APIs are now stable in const contexts: - [`CStr::from_bytes_with_nul`](https://doc.rust-lang.org/nightly/std/ffi/struct.CStr.html#method.from_bytes_with_nul) - [`CStr::to_bytes`](https://doc.rust-lang.org/nightly/std/ffi/struct.CStr.html#method.from_bytes_with_nul) - [`CStr::to_bytes_with_nul`](https://doc.rust-lang.org/nightly/std/ffi/struct.CStr.html#method.from_bytes_with_nul) - [`CStr::to_str`](https://doc.rust-lang.org/nightly/std/ffi/struct.CStr.html#method.from_bytes_with_nul) Cargo ----- - Enable `-Zdoctest-in-workspace` by default. When running each documentation test, the working directory is set to the root directory of the package the test belongs to. [docs](https://doc.rust-lang.org/nightly/cargo/commands/cargo-test.html#working-directory-of-tests) [#12221](rust-lang/cargo#12221) [#12288](rust-lang/cargo#12288) - Add support of the "default" keyword to reset previously set `build.jobs` parallelism back to the default. [#12222](rust-lang/cargo#12222) Compatibility Notes ------------------- - [Alter `Display` for `Ipv6Addr` for IPv4-compatible addresses](rust-lang/rust#112606) - Cargo changed feature name validation check to a hard error. The warning was added in Rust 1.49. These extended characters aren't allowed on crates.io, so this should only impact users of other registries, or people who don't publish to a registry. [#12291](rust-lang/cargo#12291) Refreshed patches. Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org> (cherry picked from commit 846ee0b) Signed-off-by: Jeffery To <jeffery.to@gmail.com>
Pkgsrc changes: * Adjust patches and cargo checksums to new versions. Upstream changes: Version 1.72.0 (2023-08-24) ========================== Language -------- - [Replace const eval limit by a lint and add an exponential backoff warning] (rust-lang/rust#103877) - [expand: Change how `#![cfg(FALSE)]` behaves on crate root] (rust-lang/rust#110141) - [Stabilize inline asm for LoongArch64] (rust-lang/rust#111235) - [Uplift `clippy::undropped_manually_drops` lint] (rust-lang/rust#111530) - [Uplift `clippy::invalid_utf8_in_unchecked` lint] (rust-lang/rust#111543) - [Uplift `clippy::cast_ref_to_mut` lint] (rust-lang/rust#111567) - [Uplift `clippy::cmp_nan` lint] (rust-lang/rust#111818) - [resolve: Remove artificial import ambiguity errors] (rust-lang/rust#112086) - [Don't require associated types with Self: Sized bounds in `dyn Trait` objects] (rust-lang/rust#112319) Compiler -------- - [Remember names of `cfg`-ed out items to mention them in diagnostics] (rust-lang/rust#109005) - [Support for native WASM exceptions] (rust-lang/rust#111322) - [Add support for NetBSD/aarch64-be (big-endian arm64).] (rust-lang/rust#111326) - [Write to stdout if `-` is given as output file] (rust-lang/rust#111626) - [Force all native libraries to be statically linked when linking a static binary] (rust-lang/rust#111698) - [Add Tier 3 support for `loongarch64-unknown-none*`] (rust-lang/rust#112310) - [Prevent `.eh_frame` from being emitted for `-C panic=abort`] (rust-lang/rust#112403) - [Support 128-bit enum variant in debuginfo codegen] (rust-lang/rust#112474) - [compiler: update solaris/illumos to enable tsan support.] (rust-lang/rust#112039) Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. Libraries --------- - [Document memory orderings of `thread::{park, unpark}`] (rust-lang/rust#99587) - [io: soften â<80><98>at most one write attemptâ<80><99> requirement in io::Write::write] (rust-lang/rust#107200) - [Specify behavior of HashSet::insert] (rust-lang/rust#107619) - [Relax implicit `T: Sized` bounds on `BufReader<T>`, `BufWriter<T>` and `LineWriter<T>`] (rust-lang/rust#111074) - [Update runtime guarantee for `select_nth_unstable`] (rust-lang/rust#111974) - [Return `Ok` on kill if process has already exited] (rust-lang/rust#112594) - [Implement PartialOrd for `Vec`s over different allocators] (rust-lang/rust#112632) - [Use 128 bits for TypeId hash] (rust-lang/rust#109953) - [Don't drain-on-drop in DrainFilter impls of various collections.] (rust-lang/rust#104455) - [Make `{Arc,Rc,Weak}::ptr_eq` ignore pointer metadata] (rust-lang/rust#106450) Rustdoc ------- - [Allow whitespace as path separator like double colon] (rust-lang/rust#108537) - [Add search result item types after their name] (rust-lang/rust#110688) - [Search for slices and arrays by type with `[]`] (rust-lang/rust#111958) - [Clean up type unification and "unboxing"] (rust-lang/rust#112233) Stabilized APIs --------------- - [`impl<T: Send> Sync for mpsc::Sender<T>`] (https://doc.rust-lang.org/nightly/std/sync/mpsc/struct.Sender.html#impl-Sync-for-Sender%3CT%3E) - [`impl TryFrom<&OsStr> for &str`] (https://doc.rust-lang.org/nightly/std/primitive.str.html#impl-TryFrom%3C%26'a+OsStr%3E-for-%26'a+str) - [`String::leak`] (https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#method.leak) These APIs are now stable in const contexts: - [`CStr::from_bytes_with_nul`] (https://doc.rust-lang.org/nightly/std/ffi/struct.CStr.html#method.from_bytes_with_nul) - [`CStr::to_bytes`] (https://doc.rust-lang.org/nightly/std/ffi/struct.CStr.html#method.from_bytes_with_nul) - [`CStr::to_bytes_with_nul`] (https://doc.rust-lang.org/nightly/std/ffi/struct.CStr.html#method.from_bytes_with_nul) - [`CStr::to_str`] (https://doc.rust-lang.org/nightly/std/ffi/struct.CStr.html#method.from_bytes_with_nul) Cargo ----- - Enable `-Zdoctest-in-workspace` by default. When running each documentation test, the working directory is set to the root directory of the package the test belongs to. [docs](https://doc.rust-lang.org/nightly/cargo/commands/cargo-test.html#working-directory-of-tests) [#12221](rust-lang/cargo#12221) [#12288](rust-lang/cargo#12288) - Add support of the "default" keyword to reset previously set `build.jobs` parallelism back to the default. [#12222](rust-lang/cargo#12222) Compatibility Notes ------------------- - [Alter `Display` for `Ipv6Addr` for IPv4-compatible addresses] (rust-lang/rust#112606) - Cargo changed feature name validation check to a hard error. The warning was added in Rust 1.49. These extended characters aren't allowed on crates.io, so this should only impact users of other registries, or people who don't publish to a registry. [#12291](rust-lang/cargo#12291)
Version 1.72.0 (2023-08-24) ========================== Language -------- - [Replace const eval limit by a lint and add an exponential backoff warning](rust-lang/rust#103877) - [expand: Change how `#![cfg(FALSE)]` behaves on crate root](rust-lang/rust#110141) - [Stabilize inline asm for LoongArch64](rust-lang/rust#111235) - [Uplift `clippy::undropped_manually_drops` lint](rust-lang/rust#111530) - [Uplift `clippy::invalid_utf8_in_unchecked` lint](rust-lang/rust#111543) - [Uplift `clippy::cast_ref_to_mut` lint](rust-lang/rust#111567) - [Uplift `clippy::cmp_nan` lint](rust-lang/rust#111818) - [resolve: Remove artificial import ambiguity errors](rust-lang/rust#112086) - [Don't require associated types with Self: Sized bounds in `dyn Trait` objects](rust-lang/rust#112319) Compiler -------- - [Remember names of `cfg`-ed out items to mention them in diagnostics](rust-lang/rust#109005) - [Support for native WASM exceptions](rust-lang/rust#111322) - [Add support for NetBSD/aarch64-be (big-endian arm64).](rust-lang/rust#111326) - [Write to stdout if `-` is given as output file](rust-lang/rust#111626) - [Force all native libraries to be statically linked when linking a static binary](rust-lang/rust#111698) - [Add Tier 3 support for `loongarch64-unknown-none*`](rust-lang/rust#112310) - [Prevent `.eh_frame` from being emitted for `-C panic=abort`](rust-lang/rust#112403) - [Support 128-bit enum variant in debuginfo codegen](rust-lang/rust#112474) - [compiler: update solaris/illumos to enable tsan support.](rust-lang/rust#112039) Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. Libraries --------- - [Document memory orderings of `thread::{park, unpark}`](rust-lang/rust#99587) - [io: soften ‘at most one write attempt’ requirement in io::Write::write](rust-lang/rust#107200) - [Specify behavior of HashSet::insert](rust-lang/rust#107619) - [Relax implicit `T: Sized` bounds on `BufReader<T>`, `BufWriter<T>` and `LineWriter<T>`](rust-lang/rust#111074) - [Update runtime guarantee for `select_nth_unstable`](rust-lang/rust#111974) - [Return `Ok` on kill if process has already exited](rust-lang/rust#112594) - [Implement PartialOrd for `Vec`s over different allocators](rust-lang/rust#112632) - [Use 128 bits for TypeId hash](rust-lang/rust#109953) - [Don't drain-on-drop in DrainFilter impls of various collections.](rust-lang/rust#104455) - [Make `{Arc,Rc,Weak}::ptr_eq` ignore pointer metadata](rust-lang/rust#106450) Rustdoc ------- - [Allow whitespace as path separator like double colon](rust-lang/rust#108537) - [Add search result item types after their name](rust-lang/rust#110688) - [Search for slices and arrays by type with `[]`](rust-lang/rust#111958) - [Clean up type unification and "unboxing"](rust-lang/rust#112233) Stabilized APIs --------------- - [`impl<T: Send> Sync for mpsc::Sender<T>`](https://doc.rust-lang.org/nightly/std/sync/mpsc/struct.Sender.html#impl-Sync-for-Sender%3CT%3E) - [`impl TryFrom<&OsStr> for &str`](https://doc.rust-lang.org/nightly/std/primitive.str.html#impl-TryFrom%3C%26'a+OsStr%3E-for-%26'a+str) - [`String::leak`](https://doc.rust-lang.org/nightly/alloc/string/struct.String.html#method.leak) These APIs are now stable in const contexts: - [`CStr::from_bytes_with_nul`](https://doc.rust-lang.org/nightly/std/ffi/struct.CStr.html#method.from_bytes_with_nul) - [`CStr::to_bytes`](https://doc.rust-lang.org/nightly/std/ffi/struct.CStr.html#method.from_bytes_with_nul) - [`CStr::to_bytes_with_nul`](https://doc.rust-lang.org/nightly/std/ffi/struct.CStr.html#method.from_bytes_with_nul) - [`CStr::to_str`](https://doc.rust-lang.org/nightly/std/ffi/struct.CStr.html#method.from_bytes_with_nul) Cargo ----- - Enable `-Zdoctest-in-workspace` by default. When running each documentation test, the working directory is set to the root directory of the package the test belongs to. [docs](https://doc.rust-lang.org/nightly/cargo/commands/cargo-test.html#working-directory-of-tests) [openwrt#12221](rust-lang/cargo#12221) [openwrt#12288](rust-lang/cargo#12288) - Add support of the "default" keyword to reset previously set `build.jobs` parallelism back to the default. [openwrt#12222](rust-lang/cargo#12222) Compatibility Notes ------------------- - [Alter `Display` for `Ipv6Addr` for IPv4-compatible addresses](rust-lang/rust#112606) - Cargo changed feature name validation check to a hard error. The warning was added in Rust 1.49. These extended characters aren't allowed on crates.io, so this should only impact users of other registries, or people who don't publish to a registry. [openwrt#12291](rust-lang/cargo#12291) Refreshed patches. Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Fixes nightly compilation problems where the "hash_drain_filter" feature got renamed to "hash_extract_if". See rust-lang/rust#104455 for more info.
In rust-lang/rust#104455, `drain_filter` has been renamed to `extract_if`.
See rust-lang/rust/pull/104455 Signed-off-by: Neil Shen <overvenus@gmail.com>
sync w/ upstream References: * rust-lang/rust#104455 * rust-lang/rust#70530 Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
This removes drain-on-drop behavior from various unstable DrainFilter impls (not yet for HashSet/Map) because that behavior is problematic (because it can lead to panic-in-drop when user closures panic) and may become forbidden if this draft RFC passes.
closes #101122
ACP
affected tracking issues
Related hashbrown update: rust-lang/hashbrown#374