File _patchinfo of Package patchinfo.38888
<patchinfo incident="38888">
<packager>xiaoguang_wang</packager>
<rating>moderate</rating>
<category>recommended</category>
<summary>Recommended update for rust, rust1.87</summary>
<description>This update for rust, rust1.87 fixes the following issues:
Version 1.87.0 (2025-05-15)
==========================
Language
--------
- Stabilize asm_goto feature
- Allow parsing open beginning ranges (..EXPR) after unary operators !, -, and *.
- Don't require method impls for methods with Self: Sized bounds in impls for unsized types
- Stabilize feature(precise_capturing_in_traits) allowing use<...> bounds on return position impl Trait in traits
Compiler
--------
- x86: make SSE2 required for i686 targets and use it to pass SIMD types
Libraries
---------
- Stabilize the anonymous pipe API
- Add support for unbounded left/right shift operations
- Print pointer metadata in Debug impl of raw pointers
- Vec::with_capacity guarantees it allocates with the amount requested, even if Vec::capacity returns a different number.
- Most std::arch intrinsics which don't take pointer arguments can now be called from safe code if the caller has the appropriate target features already enabled
- Undeprecate env::home_dir
- Denote ControlFlow as #[must_use]
- Macros such as assert_eq! and vec! now support const {...} expressions
Stabilized APIs
- Vec::extract_if https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.extract_if
- vec::ExtractIf https://doc.rust-lang.org/stable/std/vec/struct.ExtractIf.html)
- LinkedList::extract_if https://doc.rust-lang.org/stable/std/collections/struct.LinkedList.html#method.extract_if
- linked_list::ExtractIf https://doc.rust-lang.org/stable/std/collections/linked_list/struct.ExtractIf.html
- <[T]>::split_off https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off
- <[T]>::split_off_mut https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_mut
- <[T]>::split_off_first https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_first
- <[T]>::split_off_first_mut https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_first_mut
- <[T]>::split_off_last https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_last
- <[T]>::split_off_last_mut https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_last_mut
- String::extend_from_within https://doc.rust-lang.org/stable/alloc/string/struct.String.html#method.extend_from_within
- os_str::Display https://doc.rust-lang.org/stable/std/ffi/os_str/struct.Display.html
- OsString::display https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.display
- OsStr::display https://doc.rust-lang.org/stable/std/ffi/struct.OsStr.html#method.display
- io::pipe https://doc.rust-lang.org/stable/std/io/fn.pipe.html
- io::PipeReader https://doc.rust-lang.org/stable/std/io/struct.PipeReader.html
- io::PipeWriter https://doc.rust-lang.org/stable/std/io/struct.PipeWriter.html
- impl From<PipeReader> for OwnedHandle https://doc.rust-lang.org/stable/std/os/windows/io/struct.OwnedHandle.html#impl-From%3CPipeReader%3E-for-OwnedHandle
- impl From<PipeWriter> for OwnedHandle https://doc.rust-lang.org/stable/std/os/windows/io/struct.OwnedHandle.html#impl-From%3CPipeWriter%3E-for-OwnedHandle
- impl From<PipeReader> for Stdio https://doc.rust-lang.org/stable/std/process/struct.Stdio.html
- impl From<PipeWriter> for Stdio https://doc.rust-lang.org/stable/std/process/struct.Stdio.html#impl-From%3CPipeWriter%3E-for-Stdio
- impl From<PipeReader> for OwnedFd https://doc.rust-lang.org/stable/std/os/fd/struct.OwnedFd.html#impl-From%3CPipeReader%3E-for-OwnedFd
- impl From<PipeWriter> for OwnedFd https://doc.rust-lang.org/stable/std/os/fd/struct.OwnedFd.html#impl-From%3CPipeWriter%3E-for-OwnedFd
- Box<MaybeUninit<T>>::write https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#method.write
- impl TryFrom<Vec<u8>> for String https://doc.rust-lang.org/stable/std/string/struct.String.html#impl-TryFrom%3CVec%3Cu8%3E%3E-for-String
- <*const T>::offset_from_unsigned https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from_unsigned
- <*const T>::byte_offset_from_unsigned https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.byte_offset_from_unsigned
- <*mut T>::offset_from_unsigned https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from_unsigned-1
- <*mut T>::byte_offset_from_unsigned https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.byte_offset_from_unsigned-1
- NonNull::offset_from_unsigned https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.offset_from_unsigned
- NonNull::byte_offset_from_unsigned https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.byte_offset_from_unsigned
- <uN>::cast_signed https://doc.rust-lang.org/stable/std/primitive.usize.html#method.cast_signed
- NonZero::<uN>::cast_signed https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.cast_signed-5).
- <iN>::cast_unsigned https://doc.rust-lang.org/stable/std/primitive.isize.html#method.cast_unsigned).
- NonZero::<iN>::cast_unsigned https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.cast_unsigned-5).
- <uN>::is_multiple_of https://doc.rust-lang.org/stable/std/primitive.usize.html#method.is_multiple_of
- <uN>::unbounded_shl https://doc.rust-lang.org/stable/std/primitive.usize.html#method.unbounded_shl
- <uN>::unbounded_shr https://doc.rust-lang.org/stable/std/primitive.usize.html#method.unbounded_shr
- <iN>::unbounded_shl https://doc.rust-lang.org/stable/std/primitive.isize.html#method.unbounded_shl
- <iN>::unbounded_shr https://doc.rust-lang.org/stable/std/primitive.isize.html#method.unbounded_shr
- <iN>::midpoint https://doc.rust-lang.org/stable/std/primitive.isize.html#method.midpoint
- <str>::from_utf8 https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8
- <str>::from_utf8_mut https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8_mut
- <str>::from_utf8_unchecked https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8_unchecked
- <str>::from_utf8_unchecked_mut https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8_unchecked_mut
These previously stable APIs are now stable in const contexts:
- core::str::from_utf8_mut https://doc.rust-lang.org/stable/std/str/fn.from_utf8_mut.html
- <[T]>::copy_from_slice https://doc.rust-lang.org/stable/std/primitive.slice.html#method.copy_from_slice
- SocketAddr::set_ip https://doc.rust-lang.org/stable/std/net/enum.SocketAddr.html#method.set_ip
- SocketAddr::set_port https://doc.rust-lang.org/stable/std/net/enum.SocketAddr.html#method.set_port
- SocketAddrV4::set_ip https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV4.html#method.set_ip
- SocketAddrV4::set_port https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV4.html#method.set_port
- SocketAddrV6::set_ip https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_ip
- SocketAddrV6::set_port https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_port
- SocketAddrV6::set_flowinfo https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_flowinfo
- SocketAddrV6::set_scope_id https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_scope_id
- char::is_digit https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_digit
- char::is_whitespace https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_whitespace)
- <[[T; N]]>::as_flattened https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_flattened
- <[[T; N]]>::as_flattened_mut https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_flattened_mut
- String::into_bytes https://doc.rust-lang.org/stable/std/string/struct.String.html#method.into_bytes
- String::as_str https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_str
- String::capacity https://doc.rust-lang.org/stable/std/string/struct.String.html#method.capacity
- String::as_bytes https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_bytes
- String::len https://doc.rust-lang.org/stable/std/string/struct.String.html#method.len
- String::is_empty https://doc.rust-lang.org/stable/std/string/struct.String.html#method.is_empty
- String::as_mut_str https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_mut_str
- String::as_mut_vec https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_mut_vec
- Vec::as_ptr https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_ptr
- Vec::as_slice https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_slice
- Vec::capacity https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.capacity
- Vec::len https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.len
- Vec::is_empty https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.is_empty
- Vec::as_mut_slice https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_mut_slice
- Vec::as_mut_ptr https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_mut_ptr
Cargo
-----
- Add terminal integration via ANSI OSC 9;4 sequences
- chore: bump openssl to v3
- feat(package): add --exclude-lockfile flag
Compatibility Notes
- Rust now raises an error for macro invocations inside the #![crate_name] attribute
- Unstable fields are now always considered to be inhabited
- Macro arguments of unary operators followed by open beginning ranges may now be matched differently
- Make Debug impl of raw pointers print metadata if present
- Warn against function pointers using unsupported ABI strings in dependencies
- Associated types on dyn types are no longer deduplicated
- Forbid attributes on .. inside of struct patterns (let Struct { #[attribute] .. }) =
- Make ptr_cast_add_auto_to_object lint into hard error
- Many std::arch intrinsics are now safe to call in some contexts, there may now be new unused_unsafe warnings in existing codebases.
- Limit width and precision formatting options to 16 bits on all targets
- Turn order dependent trait objects future incompat warning into a hard error
- Denote ControlFlow as #[must_use
- Windows: The standard library no longer links advapi32, except on win7. Code such as C libraries that were relying on this assumption may need to explicitly link advapi32.
- Proc macros can no longer observe expanded cfg(true) attributes.
- Start changing the internal representation of pasted tokens. Certain invalid declarative macros that were previously accepted in obscure circumstances are now correctly rejected by the compiler. Use of a tt fragment specifier can often fix these macros.
- Don't allow flattened format_args in const.
</description>
</patchinfo>