Rust团队很高兴地宣布Rust的新版本1.75.0的发布。Rust是一种赋能每个人构建可靠和高效软件的编程语言。
如果你已经通过rustup安装了Rust的旧版本,你可以使用以下命令获取1.75.0版本:
sql
rustup update stable
如果你还没有安装rustup,你可以从我们网站上的相应页面获取rustup,并查看1.75.0的详细发布说明。
如果你想帮助我们测试未来的版本,你可能会考虑本地更新到beta频道(rustup default beta
)或夜间频道(rustup default nightly
)。请报告你可能遇到的任何bug!
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的创建。没有你们所有人的帮助,我们无法完成它。谢谢!