Rust 1.93.0 稳定版发布
Rust 1.93.0 稳定版已正式发布,主要带来以下变化:
将捆绑的 musl 更新至 1.2.5 版本
各类*-linux-musltargets 现均搭载 musl 1.2.5 版本。这主要影响到捆绑了 musl 1.2.3 的静态 musl 构建版本,例如x86_64、aarch64和powerpc64le。此次更新包含多项修复和改进,并引入一项影响 Rust 生态系统的破坏性变更。
对于 Rust 生态系统而言,此次更新的主要动机是大幅改进 musl 的 DNS 解析器,该改进在 1.2.4 版本中首次推出,并在 1.2.5 版本中修复了一些错误。当使用musl targets 进行静态链接时,这将显著提升可移植 Linux 二进制文件的网络操作可靠性,尤其在处理大型 DNS 记录和递归域名服务器时效果显著。
然而,1.2.4 版本也带来了一个破坏性变更:移除了 Rust libc crate 使用的几个旧版兼容性符号。该问题的修复程序已在 2023 年 6 月发布的 libc 0.2.146 版本中提供(距今已有两年半时间),项目团队认为修复程序已得到充分普及,因此准备在 Rust targets 中进行相应的更改。
详情可参阅之前的公告。
允许全局分配器使用线程局部存储
Rust 1.93 调整了标准库的内部结构,允许用 Rust 编写的全局分配器使用 std 库,并且 std::thread::current通过使用系统分配器来避免重入问题。
Rust 1.93 调整了标准库的内部实现,使用 Rust 编写的全局分配器能够通过使用系统分配器来避免重入性问题,从而安全地使用 std's thread_local! 和 std::thread::current。
详情参阅文档。
cfg attributes on asm! lines
asm!( // or global_asm! or naked_asm!
"nop",
#[cfg(target_feature = "sse2")]
"nop",
// ...
#[cfg(target_feature = "sse2")]
a = const 123, // only used on sse2
);
Stabilized APIs
<[MaybeUninit<T>]>::assume_init_drop<[MaybeUninit<T>]>::assume_init_ref<[MaybeUninit<T>]>::assume_init_mut<[MaybeUninit<T>]>::write_copy_of_slice<[MaybeUninit<T>]>::write_clone_of_sliceString::into_raw_partsVec::into_raw_parts<iN>::unchecked_neg<iN>::unchecked_shl<iN>::unchecked_shr<uN>::unchecked_shl<uN>::unchecked_shr<[T]>::as_array<[T]>::as_mut_array<*const [T]>::as_array<*mut [T]>::as_mut_arrayVecDeque::pop_front_ifVecDeque::pop_back_ifDuration::from_nanos_u128char::MAX_LEN_UTF8char::MAX_LEN_UTF16std::fmt::from_fnstd::fmt::FromFn
为您推荐相关文章:
同类文章推荐: