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&lt;...&gt; 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
- &lt;[T]&gt;::split_off https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off
- &lt;[T]&gt;::split_off_mut https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_mut
- &lt;[T]&gt;::split_off_first https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_first
- &lt;[T]&gt;::split_off_first_mut https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_first_mut
- &lt;[T]&gt;::split_off_last https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_last
- &lt;[T]&gt;::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&lt;PipeReader&gt; for OwnedHandle https://doc.rust-lang.org/stable/std/os/windows/io/struct.OwnedHandle.html#impl-From%3CPipeReader%3E-for-OwnedHandle
- impl From&lt;PipeWriter&gt; for OwnedHandle https://doc.rust-lang.org/stable/std/os/windows/io/struct.OwnedHandle.html#impl-From%3CPipeWriter%3E-for-OwnedHandle
- impl From&lt;PipeReader&gt; for Stdio https://doc.rust-lang.org/stable/std/process/struct.Stdio.html
- impl From&lt;PipeWriter&gt; for Stdio https://doc.rust-lang.org/stable/std/process/struct.Stdio.html#impl-From%3CPipeWriter%3E-for-Stdio
- impl From&lt;PipeReader&gt; for OwnedFd https://doc.rust-lang.org/stable/std/os/fd/struct.OwnedFd.html#impl-From%3CPipeReader%3E-for-OwnedFd
- impl From&lt;PipeWriter&gt; for OwnedFd https://doc.rust-lang.org/stable/std/os/fd/struct.OwnedFd.html#impl-From%3CPipeWriter%3E-for-OwnedFd
- Box&lt;MaybeUninit&lt;T&gt;&gt;::write https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#method.write
- impl TryFrom&lt;Vec&lt;u8&gt;&gt; for String https://doc.rust-lang.org/stable/std/string/struct.String.html#impl-TryFrom%3CVec%3Cu8%3E%3E-for-String
- &lt;*const T&gt;::offset_from_unsigned https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from_unsigned
- &lt;*const T&gt;::byte_offset_from_unsigned https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.byte_offset_from_unsigned
- &lt;*mut T&gt;::offset_from_unsigned https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from_unsigned-1
- &lt;*mut T&gt;::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
- &lt;uN&gt;::cast_signed https://doc.rust-lang.org/stable/std/primitive.usize.html#method.cast_signed
- NonZero::&lt;uN&gt;::cast_signed https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.cast_signed-5).
- &lt;iN&gt;::cast_unsigned https://doc.rust-lang.org/stable/std/primitive.isize.html#method.cast_unsigned).
- NonZero::&lt;iN&gt;::cast_unsigned https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.cast_unsigned-5).
- &lt;uN&gt;::is_multiple_of https://doc.rust-lang.org/stable/std/primitive.usize.html#method.is_multiple_of
- &lt;uN&gt;::unbounded_shl https://doc.rust-lang.org/stable/std/primitive.usize.html#method.unbounded_shl
- &lt;uN&gt;::unbounded_shr https://doc.rust-lang.org/stable/std/primitive.usize.html#method.unbounded_shr
- &lt;iN&gt;::unbounded_shl https://doc.rust-lang.org/stable/std/primitive.isize.html#method.unbounded_shl
- &lt;iN&gt;::unbounded_shr https://doc.rust-lang.org/stable/std/primitive.isize.html#method.unbounded_shr
- &lt;iN&gt;::midpoint https://doc.rust-lang.org/stable/std/primitive.isize.html#method.midpoint
- &lt;str&gt;::from_utf8 https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8
- &lt;str&gt;::from_utf8_mut https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8_mut
- &lt;str&gt;::from_utf8_unchecked https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8_unchecked
- &lt;str&gt;::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
- &lt;[T]&gt;::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)
- &lt;[[T; N]]&gt;::as_flattened https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_flattened
- &lt;[[T; N]]&gt;::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>
openSUSE Build Service is sponsored by