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
)。请 报告 您遇到的任何错误!
1.75.0 稳定版中的新功能
async fn
和 trait 中的返回值位置 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_add
pointer::byte_offset
pointer::byte_offset_from
pointer::byte_sub
pointer::wrapping_byte_add
pointer::wrapping_byte_offset
pointer::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_ptr
FileTimes
FileTimesExt
File::set_modified
File::set_times
IpAddr::to_canonical
Ipv6Addr::to_canonical
Option::as_slice
Option::as_mut_slice
pointer::byte_add
pointer::byte_offset
pointer::byte_offset_from
pointer::byte_sub
pointer::wrapping_byte_add
pointer::wrapping_byte_offset
pointer::wrapping_byte_sub
这些 API 现在在 const 上下文中稳定
Ipv6Addr::to_ipv4_mapped
MaybeUninit::assume_init_read
MaybeUninit::zeroed
mem::discriminant
mem::zeroed
其他更改
查看 Rust、Cargo 和 Clippy 中的所有更改。
1.75.0 的贡献者
许多人共同创建了 Rust 1.75.0。没有你们,我们无法做到。 感谢!