Rust 团队日前发布了 Rust 的新版本 ------ 1.75.0 正式版,Rust 是一种强大的编程语言,使开发者能够构建可靠、高效的软件。这个新版本带来了几个重要的功能和改进。
关于 1.75.0 有关新特性可查看:blog.rust-lang.org/2023/12/28/...
如果已经安装了以前版本的 Rust,可以通过以下命令升级到 1.75.0 版本:
$ rustup update stable
如果还没有安装,可以从网站上的相应页面获取
rustup
,并查看1.75.0 的详细发行说明。 也可以在 GitHub 上查看1.75.0 的发行日志(github.com/rust-lang/r...%25E3%2580%2582 "https://github.com/rust-lang/rust/releases/tag/1.75.0)%E3%80%82")如果想使用测试未来版本,可以考虑在本地进行更新以使用** beta 版本** (
rustup default beta
) 或 nightly 版本 (rustup default nightly
),这两个版本不太稳定,使用过程中可能遇到错误,如果遇到任何错误,可以发送报告,
1.75.0 稳定版中有什么
支持在trait
中使用async fn
和 return-position impl Trait
Rust 团队之前宣布过将支持在 traits 中使用 async fn
和 -> impl Trait
,这项重大更新终于在Rust 1.75 正式版中稳定下来。不过,这个初始版本带有一些使用限制,这些限制在公告帖子(blog.rust-lang.org/2023/12/21/...) 中有详细描述。这些限制预计将在未来的版本中解除。
在
trait
中使用async fn
和return-position impl Trait
这一特性增加了 Rust 的灵活性和表达能力,使得在trait
中定义异步方法和返回具体类型的函数变得更加方便。这项更新对于异步编程非常有用,让开发者能够更好地组织和复用代码。虽然初始版本有一些限制,但这一功能的引入进一步提升了 Rust 作为现代编程语言的优势,使得异步编程更加简洁和灵活。
指针字节偏移 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 现在在常量上下文中已经稳定:
Ipv6Addr::to_ipv4_mapped
MaybeUninit::assume_init_read
MaybeUninit::zeroed
mem::discriminant
mem::zeroed
其他变化
了解更多有关Rust、Cargo和Clippy中所有变化的详细信息,请参阅完整的发布说明 (github.com/rust-lang/r...)
(可查看1.75.0更新的详细列表)
致敬贡献者
许多人齐心协力创建了 Rust 1.75.0。谢谢所有人!(thanks.rust-lang.org/rust/1.75.0)
(注:从光贡献者就有328人来看,本版本变化还是蛮大的)
官方资料
关于1.75.0 升级的更多信息,可以查阅:
- 1.75.0 官方博客:blog.rust-lang.org/2023/12/28/...
- 1.75.0 版本标记:github.com/rust-lang/r...
- 1.75.0 变更日志:releases.rs/docs/1.75.0
- 1.75.0 感谢列表:thanks.rust-lang.org/rust/1.75.0
- 1.75.0 之前公告:blog.rust-lang.org/2023/12/21/...