Rust 资讯:Rust 1.76.0 正式发布,ABI 兼容性更新

Rust 团队发布了 Rust 的新版本 ------ 1.76.0 正式版,Rust 是一种强大的编程语言,使开发者能够构建可靠、高效的软件。

关于 1.76.0 有关新特性可查看:blog.rust-lang.org/2024/02/08/...

如果已经安装了以前版本的 Rust,可以通过以下命令升级到 1.76.0 版本:

$ rustup update stable

如果还没有安装,可以从网站上的相应页面获取rustup(www.rust-lang.org/install.htm...) , 并查看1.76.0 的详细发行说明(doc.rust-lang.org/nightly/rel...) 。 也可以在 GitHub 上查看1.76.0 的发行日志(github.com/rust-lang/r...) 。

如果想使用测试未来版本,可以考虑在本地进行更新以使用 beta 版本 ( rustup default beta) 或 nightly 版本 ( rustup default nightly),这两个版本不太稳定,使用过程中可能遇到错误,如果遇到任何错误,可以发送报告(github.com/rust-lang/r...)

1.76.0 稳定版中有什么

这个版本是小版本更新,主要带来一些渐进性的改进,来带来整体性提升,本文主要介绍其中几个功能和改进:

ABI 兼容性更新

函数指针文档中新的 ABI 兼容性部分描述了函数签名与 ABI 兼容的含义,并包括一份当前 Rust 中参数和返回值类型符合 ABI 兼容的列表。在大多数情况下,本文档不会添加任何新的保证,仅描述现有的兼容性状态。

当前做了新的补充,保证了 charu32 是 ABI 兼容的。它们始终具有相同的大小和对齐方式,即使在函数调用 ABI,也被认为是完全等效的。

通过引用获取类型名称描述

出于调试目的,自 Rust 1.38 起,any::type_name::<T>() 可用于获取类型 T 的字符串描述,但这需要显式写明类型。而写清楚类型并不总是那么容易,特别是对于像闭包这样的不可命名类型或不透明的返回类型。新的 any::type_name_of_val(&T) 允许使用任何对象的引用,来获取对应类型的描述性名称。

rust 复制代码
fn get_iter() -> impl Iterator<Item = i32> {
    [1, 2, 3].into_iter()
}

fn main() {
    let iter = get_iter();
    let iter_name = std::any::type_name_of_val(&iter);
    let sum: i32 = iter.sum();
    println!("The sum of the `{iter_name}` is {sum}.");
}

上述代码将会打印出

rust 复制代码
The sum of the `core::array::iter::IntoIter<i32, 3>` is 6.

稳定的 API 列表

其他变化

了解更多有关Rust、Cargo 和 Clippy 中所有变化的详细信息,请参阅完整的发布说明:releases.rs/docs/1.76.0 ,更新的详细列表可查看:github.com/rust-lang/r...

致敬1.76.0 的贡献者

许多人齐心协力创建了 Rust 1.76.0。谢谢所有人!(thanks.rust-lang.org/rust/1.76.0) (注:从光贡献者就有385人来看,本版本变化还是蛮大的)

官方资料

关于1.76.0 升级的更多信息,可以查阅:

相关推荐
花褪残红青杏小5 小时前
Rust图像处理第15节-鱼眼广角畸变:非线性几何变换
rust·webassembly·图形学
doiito19 小时前
Gliding Horse 时间感知系统:让 AI Agent 真正“感知“时间流逝
ai·rust·架构设计·系统设计·ai agent
Rockbean20 小时前
10分钟Solana-性能web3-4.3 跨合约调用
rust·web3·智能合约
程序员爱钓鱼1 天前
第一个 Rust 程序 Hello World
后端·rust
花褪残红青杏小1 天前
Rust图像处理第14节-图片缩放与斜切畸变:齐次坐标 + 共享仿射变换
rust·webassembly·图形学
梦帮科技1 天前
GRAVIS v4.0:基于Web的极速套利架构设计与实时数据流实现
前端·人工智能·rust·自动化·区块链·智能合约·数字货币
花褪残红青杏小2 天前
Rust图像处理第13节-任意角度旋转:旋转矩阵 + 双线性插值 + 自动补白边
rust·webassembly·图形学
小杍随笔2 天前
【Rust + Argon2id 生产级密码管理模块设计与实现】
网络·后端·算法·rust
梦帮科技2 天前
GRAVIS v5.5:向硬核桌面端进化与云端多节点容灾部署实践
windows·架构·rust·自动化·区块链·智能合约·数字货币
梦醒沉醉2 天前
2、Rust程序设计语言——常见编程概念
rust