Rust 团队很高兴地宣布 Rust 的新版本 1.76.0。Rust 是一门赋予每个人构建可靠且高效软件能力的编程语言。
如果你之前通过 rustup 安装了 Rust,可以通过以下命令获取 1.76.0:
$ rustup update stable
如果你还没有安装它,可以从我们网站上的相应页面获取 rustup,并查看 1.76.0 的详细发布说明。
如果你想通过测试未来的版本来帮助我们,可以考虑本地更新到 beta 通道 (rustup default beta) 或 nightly 通道 (rustup default nightly)。请报告你遇到的任何 bug!
1.76.0 stable 版本有什么新内容
这个版本改动相对较小,但一如既往,即使是渐进式的改进也能汇集成更完善的整体。本文重点介绍了一些改动,其他改动可能满足更小众的需求。
ABI 兼容性更新
函数指针文档中新增的ABI 兼容性部分描述了函数签名 ABI 兼容的含义。其中很大一部分是参数类型和返回类型的兼容性,以及目前在 Rust 中被认为兼容的列表。在大多数情况下,这份文档并没有增加新的保证,只是描述了现有的兼容状态。
新增的一点是,现在保证 char 和 u32 是 ABI 兼容的。它们始终具有相同的尺寸和对齐方式,但现在即使在函数调用 ABI 中也被视为等效,这与上述文档一致。
从引用获取类型名称
出于调试目的,any::type_name::<T>() 自 Rust 1.38 起就已可用,用于返回类型 T 的字符串描述,但这需要一个显式的类型参数。指定这种类型并不总是容易的,特别是对于像闭包这样的无名类型或不透明返回类型。新的 any::type_name_of_val(&T) 提供了一种从对任何类型的引用获取描述性名称的方法。
这目前打印出
The sum of the `core::array::iter::IntoIter<i32, 3>` is 6.
稳定的 API
Arc::unwrap_or_cloneRc::unwrap_or_cloneResult::inspectResult::inspect_errOption::inspecttype_name_of_valstd::hash::{DefaultHasher, RandomState}这些之前只能通过std::collections::hash_map访问。ptr::{from_ref, from_mut}ptr::addr_eq
其他改动
1.76.0 的贡献者
许多人共同努力创建了 Rust 1.76.0。没有你们大家,我们无法完成这项工作。感谢!