手记

Rust 1.93.0 稳定版正式发布

Rust 1.93.0 稳定版现已正式发布,本次更新主要包含以下改进:

捆绑的 musl 版本升级至 1.2.5

所有*-linux-musl目标平台现已统一搭载 musl1.2.5 版本。这一变动主要影响原先捆绑 musl 1.2.3 的静态构建版本,例如x86_64aarch64powerpc64le架构。新版本整合了多项错误修复与功能增强,同时引入了一项对 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_slice
  • String::into_raw_parts
  • Vec::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_if
    • Duration::from_nanos_u128
    • char::MAX_LEN_UTF8
    • char::MAX_LEN_UTF16
    • std::fmt::from_fn
    • std::fmt::FromFn
0人推荐
随时随地看视频
慕课网APP