Rust 1.93.0 稳定版现已正式发布,本次更新主要包含以下改进:
捆绑的 musl 版本升级至 1.2.5
所有*-linux-musl目标平台现已统一搭载 musl1.2.5 版本。这一变动主要影响原先捆绑 musl 1.2.3 的静态构建版本,例如x86_64、aarch64及powerpc64le架构。新版本整合了多项错误修复与功能增强,同时引入了一项对 Rust 生态具有影响的突破性变更。
对 Rust 生态而言,本次升级的核心价值在于显著优化了 musl 的 DNS 解析能力——该特性于 1.2.4 版本首度引入,并在 1.2.5 版本中修复了若干缺陷。当开发者采用musl目标进行静态链接时,可有效提升可移植 Linux 二进制文件的网络操作稳定性,尤其在处理大规模 DNS 记录或递归域名服务器时改善尤为明显。
需要注意的是,musl 1.2.4 版本同时带来了一项兼容性变更:移除了 Rust libc crate 所依赖的若干旧版符号。针对该问题的修复方案已于 2023 年 6 月发布的 libc 0.2.146 版本中提供(距今已逾两年半)。Rust 团队评估认为该修复已得到广泛普及,故决定同步更新编译目标中的 musl 版本。
更多技术细节可参阅先前发布的更新说明。
全局分配器现支持线程局部存储
Rust 1.93 重构了标准库的内部实现,现在允许使用 Rust 编写的全局分配器调用 std 库功能。同时,std::thread::current 函数通过切换至系统分配器有效规避了重入问题。
Rust 1.93 对标准库的内部实现进行了优化,使得使用 Rust 编写的全局分配器能够借助系统分配器来规避重入性问题,从而安全地调用 thread_local!宏和 std::thread::current 函数。
asm! 行中的 cfg 属性
asm!( // 或 global_asm! 或 naked_asm!
"nop",
#[cfg(target_feature = "sse2")]
"nop",
// ...
#[cfg(target_feature = "sse2")]
a = const 123, // 仅在 sse2 特性下使用
);
已稳定的 API
已稳定的 API
<[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_array-
VecDeque::pop_front_if VecDeque::pop_back_ifDuration::from_nanos_u128char::MAX_LEN_UTF8char::MAX_LEN_UTF16std::fmt::from_fnstd::fmt::FromFn
随时随地看视频