Rust 团队很高兴宣布推出新版本 Rust 1.75.0。Rust 是一门赋能所有人构建可靠且高效软件的编程语言。
如果您之前通过 rustup 安装了 Rust,可以使用以下命令获取 1.75.0:
$ rustup update stable
如果您尚未安装,可以从我们网站的相应页面获取 rustup,并查阅1.75.0 的详细发布说明。
如果您想通过测试未来的版本来帮助我们,可以考虑将本地更新到使用 beta 通道 (rustup default beta) 或 nightly 通道 (rustup default nightly)。如果您遇到任何 bug,请随时报告!
1.75.0 stable 版本包含内容
Trait 中的 async fn 和 返回位置的 impl Trait
正如上周宣布的那样,Rust 1.75 支持在 trait 中使用 async fn 和 -> impl Trait。然而,此初始版本附带一些限制,这些限制在公告文章中有所描述。
预计这些限制将在未来的版本中解除。
指针字节偏移 API
原始指针 (*const T 和 *mut T) 过去主要支持以 T 为单位的操作。例如,<*const T>::add(1) 会在指针地址上增加 size_of::<T>() 个字节。在某些情况下,使用字节偏移量更方便,这些新的 API 避免了要求调用者首先转换为 *const u8/*mut u8。
pointer::byte_addpointer::byte_offsetpointer::byte_offset_frompointer::byte_subpointer::wrapping_byte_addpointer::wrapping_byte_offsetpointer::wrapping_byte_sub
rustc 的代码布局优化
Rust 编译器持续变得更快,此版本通过对我们的二进制发布版本应用 BOLT,在我们的基准测试中带来了平均 2% 的真实时间改进。该工具优化了包含大部分 rustc 代码的 librustc_driver.so 库的布局,从而更好地利用缓存。
我们现在还使用 -Ccodegen-units=1 构建 rustc,这为 LLVM 中的优化提供了更多机会。此优化在我们的基准测试中带来了额外的平均 1.5% 的真实时间提升。
在此版本中,这些优化仅限于 x86_64-unknown-linux-gnu 编译器,但我们希望随着时间推移将其扩展到包含更多平台。
稳定的 API
Atomic*::from_ptrFileTimesFileTimesExtFile::set_modifiedFile::set_timesIpAddr::to_canonicalIpv6Addr::to_canonicalOption::as_sliceOption::as_mut_slicepointer::byte_addpointer::byte_offsetpointer::byte_offset_frompointer::byte_subpointer::wrapping_byte_addpointer::wrapping_byte_offsetpointer::wrapping_byte_sub
以下 API 现在在 const 上下文中稳定:
Ipv6Addr::to_ipv4_mappedMaybeUninit::assume_init_readMaybeUninit::zeroedmem::discriminantmem::zeroed
其他变更
查看 Rust、Cargo 和 Clippy 中所有更改的内容。
1.75.0 的贡献者
许多人齐心协力促成了 Rust 1.75.0 的发布。没有你们所有人,这是不可能实现的。谢谢!