Recommended update for rust, rust1.81
| Announcement ID: | SUSE-RU-2024:3406-1 |
|---|---|
| Rating: | moderate |
| References: | |
| Affected Products: |
|
An update that contains one feature can now be installed.
Description:
This update for rust, rust1.81 fixes the following issues:
Changes in rust1.81:
- Resolve wasm32-wasi build issues
Version 1.81.0 (2024-09-05)
Language
- Abort on uncaught panics in
extern "C"functions. - Fix ambiguous cases of multiple
&in elided self lifetimes. - Stabilize
#[expect]for lints (RFC 2383), like#[allow]with a warning if the lint is not fulfilled. - Change method resolution to constrain hidden types instead of rejecting method candidates.
- Bump
elided_lifetimes_in_associated_constantto deny. offset_from: always allow pointers to point to the same address.- Allow constraining opaque types during subtyping in the trait system.
- Allow constraining opaque types during various unsizing casts.
- Deny keyword lifetimes pre-expansion.
Compiler
- Make casts of pointers to trait objects stricter.
- Check alias args for well-formedness even if they have escaping bound vars.
- Deprecate no-op codegen option
-Cinline-threshold=.... - Re-implement a type-size based limit.
- Properly account for alignment in
transmutesize checks. - Remove the
box_pointerslint. - Ensure the interpreter checks bool/char for validity when they are used in a cast.
- Improve coverage instrumentation for functions containing nested items.
- Target changes:
- Add Tier 3
no_stdXtensa targets:xtensa-esp32-none-elf,xtensa-esp32s2-none-elf,xtensa-esp32s3-none-elf - Add Tier 3
stdXtensa targets:xtensa-esp32-espidf,xtensa-esp32s2-espidf,xtensa-esp32s3-espidf - Add Tier 3 i686 Redox OS target:
i686-unknown-redox - Promote
arm64ec-pc-windows-msvcto Tier 2. - Promote
loongarch64-unknown-linux-muslto Tier 2 with host tools. - Enable full tools and profiler for LoongArch Linux targets.
- Unconditionally warn on usage of
wasm32-wasi. (see compatibility note below) - Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support.
Libraries
- Split core's
PanicInfoand std'sPanicInfo. (see compatibility note below) - Generalize
{Rc,Arc}::make_mut()to unsized types. - Replace sort implementations with stable
driftsortand unstableipnsort. Allslice::sort*andslice::select_nth*methods are expected to see significant performance improvements. See the research project https://github.com/Voultapher/sort-research-rs for more details. - Document behavior of
create_dir_allwith respect to empty paths. - Fix interleaved output in the default panic hook when multiple threads panic simultaneously.
Stabilized APIs
core::errorhttps://doc.rust-lang.org/stable/core/error/index.htmlhint::assert_uncheckedhttps://doc.rust-lang.org/stable/core/hint/fn.assert_unchecked.htmlfs::existshttps://doc.rust-lang.org/stable/std/fs/fn.exists.htmlAtomicBool::fetch_nothttps://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicBool.html#method.fetch_notDuration::abs_diffhttps://doc.rust-lang.org/stable/core/time/struct.Duration.html#method.abs_diffIoSlice::advancehttps://doc.rust-lang.org/stable/std/io/struct.IoSlice.html#method.advanceIoSlice::advance_sliceshttps://doc.rust-lang.org/stable/std/io/struct.IoSlice.html#method.advance_slicesIoSliceMut::advancehttps://doc.rust-lang.org/stable/std/io/struct.IoSliceMut.html#method.advanceIoSliceMut::advance_sliceshttps://doc.rust-lang.org/stable/std/io/struct.IoSliceMut.html#method.advance_slicesPanicHookInfohttps://doc.rust-lang.org/stable/std/panic/struct.PanicHookInfo.htmlPanicInfo::messagehttps://doc.rust-lang.org/stable/core/panic/struct.PanicInfo.html#method.messagePanicMessagehttps://doc.rust-lang.org/stable/core/panic/struct.PanicMessage.html
These APIs are now stable in const contexts:
char::from_u32_uncheckedhttps://doc.rust-lang.org/stable/core/char/fn.from_u32_unchecked.html (function)char::from_u32_uncheckedhttps://doc.rust-lang.org/stable/core/primitive.char.html#method.from_u32_unchecked (method)CStr::count_byteshttps://doc.rust-lang.org/stable/core/ffi/c_str/struct.CStr.html#method.count_bytesCStr::from_ptrhttps://doc.rust-lang.org/stable/core/ffi/c_str/struct.CStr.html#method.from_ptr
Cargo
- Generated
.cargo_vcs_info.jsonis always included, even when--allow-dirtyis passed. - Disallow
package.license-fileandpackage.readmepointing to non-existent files during packaging. - Disallow passing
--release/--debugflag along with the--profileflag. - Remove
lib.pluginkey support inCargo.toml. Rust plugin support has been deprecated for four years and was removed in 1.75.0.
Compatibility Notes
- Usage of the
wasm32-wasitarget will now issue a compiler warning and request users switch to thewasm32-wasip1target instead. Both targets are the same,wasm32-wasiis only being renamed, and this change to the WASI target https://blog.rust-lang.org/2024/04/09/updates-to-rusts-wasi-targets.html is being done to enable removingwasm32-wasiin January 2025. - We have renamed
std::panic::PanicInfotostd::panic::PanicHookInfo. The old name will continue to work as an alias, but will result in a deprecation warning starting in Rust 1.82.0.core::panic::PanicInfowill remain unchanged, however, as this is now a different type.
The reason is that these types have different roles: std::panic::PanicHookInfo is the argument to the panic hook https://doc.rust-lang.org/stable/std/panic/fn.set_hook.html in std context (where panics can have an arbitrary payload), while core::panic::PanicInfo is the argument to the #[panic_handler] https://doc.rust-lang.org/nomicon/panic-handler.html in no_std context (where panics always carry a formatted message). Separating these types allows us to add more useful methods to these types, such as std::panic::PanicHookInfo::payload_as_str() and core::panic::PanicInfo::message().
* The new sort implementations may panic if a type's implementation of Ord https://doc.rust-lang.org/std/cmp/trait.Ord.html (or the given comparison function) does not implement a total order https://en.wikipedia.org/wiki/Total_order as the trait requires. Ord's supertraits (PartialOrd, Eq, and PartialEq) must also be consistent. The previous implementations would not "notice" any problem, but the new implementations have a good chance of detecting inconsistencies, throwing a panic rather than returning knowingly unsorted data.
* In very rare cases, a change in the internal evaluation order of the trait solver may result in new fatal overflow errors.
Patch Instructions:
To install this SUSE update use the SUSE recommended
installation methods like YaST online_update or "zypper patch".
Alternatively you can run the command listed for your product:
-
openSUSE Leap 15.5
zypper in -t patch SUSE-2024-3406=1 openSUSE-SLE-15.5-2024-3406=1 -
openSUSE Leap 15.6
zypper in -t patch openSUSE-SLE-15.6-2024-3406=1 -
Development Tools Module 15-SP5
zypper in -t patch SUSE-SLE-Module-Development-Tools-15-SP5-2024-3406=1 -
Development Tools Module 15-SP6
zypper in -t patch SUSE-SLE-Module-Development-Tools-15-SP6-2024-3406=1
Package List:
-
openSUSE Leap 15.5 (aarch64 ppc64le s390x x86_64 i586)
- cargo1.81-1.81.0-150500.11.3.1
- rust-1.81.0-150500.27.21.1
- cargo-1.81.0-150500.27.21.1
- rust1.81-debuginfo-1.81.0-150500.11.3.1
- cargo1.81-debuginfo-1.81.0-150500.11.3.1
-
openSUSE Leap 15.5 (aarch64 ppc64le s390x x86_64 i586 nosrc)
- rust1.81-1.81.0-150500.11.3.1
-
openSUSE Leap 15.5 (noarch)
- rust1.81-src-1.81.0-150500.11.3.1
-
openSUSE Leap 15.5 (nosrc)
- rust1.81-test-1.81.0-150500.11.3.2
-
openSUSE Leap 15.6 (aarch64 ppc64le s390x x86_64)
- cargo1.81-1.81.0-150500.11.3.1
- rust-1.81.0-150500.27.21.1
- cargo-1.81.0-150500.27.21.1
- rust1.81-debuginfo-1.81.0-150500.11.3.1
- cargo1.81-debuginfo-1.81.0-150500.11.3.1
-
openSUSE Leap 15.6 (aarch64 ppc64le s390x x86_64 nosrc)
- rust1.81-1.81.0-150500.11.3.1
-
openSUSE Leap 15.6 (noarch)
- rust1.81-src-1.81.0-150500.11.3.1
-
Development Tools Module 15-SP5 (aarch64 ppc64le s390x x86_64)
- cargo1.81-1.81.0-150500.11.3.1
- rust-1.81.0-150500.27.21.1
- cargo-1.81.0-150500.27.21.1
- rust1.81-debuginfo-1.81.0-150500.11.3.1
- cargo1.81-debuginfo-1.81.0-150500.11.3.1
-
Development Tools Module 15-SP5 (aarch64 ppc64le s390x x86_64 nosrc)
- rust1.81-1.81.0-150500.11.3.1
-
Development Tools Module 15-SP5 (noarch)
- rust1.81-src-1.81.0-150500.11.3.1
-
Development Tools Module 15-SP6 (aarch64 ppc64le s390x x86_64)
- cargo1.81-1.81.0-150500.11.3.1
- rust-1.81.0-150500.27.21.1
- cargo-1.81.0-150500.27.21.1
- rust1.81-debuginfo-1.81.0-150500.11.3.1
- cargo1.81-debuginfo-1.81.0-150500.11.3.1
-
Development Tools Module 15-SP6 (aarch64 ppc64le s390x x86_64 nosrc)
- rust1.81-1.81.0-150500.11.3.1
-
Development Tools Module 15-SP6 (noarch)
- rust1.81-src-1.81.0-150500.11.3.1