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