Rust资讯: 新版本 1.77.0 发布

原文 Rust 团队很高兴宣布 Rust 新版本 1.77.0 的发布。Rust 是一种赋能每个人构建可靠和高效软件的编程语言。

如果你通过 rustup 安装了 Rust 的早期版本,你可以通过以下命令获得 1.77.0:

sql 复制代码
  rustup update stable 

如果你还没有安装,你可以从我们网站上的适当页面获取 rustup,并查看 1.77.0 的详细发布说明

如果你想通过测试未来的发布版本来帮助我们,你可以考虑本地更新到使用 beta 频道(rustup default beta)或夜间频道(rustup default nightly)。请报告你可能遇到的任何错误!

1.77.0 稳定版中的内容

这个版本相对较小,但如同往常一样,即使是渐进的改进也会导致更大的整体改善。这篇文章突出了一些改变,其他的可能还满足了更多特定需求。

C 字符串字面量

Rust 现在支持 C 字符串字面量(c"abc"),它们扩展为内存中类型为 &'static CStr 的以空字节结尾的字符串。这使得编写与需要以空字节结尾的字符串为参数的外部语言接口互操作的代码变得更加容易,所有相关的错误检查(例如,内部无空字节)都在编译时执行。

在 async fn 中支持递归

由于编译器限制,异步函数以前无法调用自身。在 1.77 中,这一限制被取消,只要使用某种形式的间接手段避免函数状态的无限大小,就允许递归调用。

这意味着像这样的代码现在可以工作了:

rust 复制代码
async fn fib(n: u32) -> u32 {
   match n {
       0 | 1 => 1,
       _ => Box::pin(fib(n-1)).await + Box::pin(fib(n-2)).await
   }
}

offset_of!

1.77.0 稳定化了offset_of! 宏,用于访问结构体字段的字节偏移量,这提供了对结构体中相关公共字段的字节偏移量的访问。当不需要类型的现有实例即需要字段的偏移量时,这个宏最有用。在稳定版上实现这样的宏已经是可能的,但不使用类型的实例的实现会需要棘手的不安全代码,这很容易意外引入未定义行为。

现在,用户可以使用 offset_of!(StructName, field) 访问公共字段的偏移量。这会展开为一个 usize 表达式,表示从结构体开始的字节偏移量。

默认在发布配置中启用 strip

Cargo 配置中不启用输出的 debuginfo(例如,debug = 0)将默认启用 strip = "debuginfo"。

这主要是因为(预编译的)标准库附带了 debuginfo,这意味着即使本地编译没有明确请求 debuginfo,静态链接的结果也会包含标准库的 debuginfo。

希望启用 debuginfo 的用户可以在相关的 Cargo 配置文件中使用 debug 标志明确启用它。

稳定化的 API

其他变化

查看 RustCargoClippy 中的所有更改。

1.77.0 的贡献者

许多人齐心协力创建了 Rust 1.77.0。 没有你们所有人,我们不可能做到这一点。 谢谢

相关推荐
该用户已不存在16 小时前
Mojo vs Python vs Rust: 2025年搞AI,该学哪个?
后端·python·rust
大卫小东(Sheldon)18 小时前
写了一个BBP算法的实现库,欢迎讨论
数学·rust
echoarts1 天前
Rayon Rust中的数据并行库入门教程
开发语言·其他·算法·rust
ftpeak1 天前
从零开始使用 axum-server 构建 HTTP/HTTPS 服务
网络·http·https·rust·web·web app
咸甜适中1 天前
rust语言 (1.88) 学习笔记:客户端和服务器端同在一个项目中
笔记·学习·rust
咸甜适中2 天前
rust语言 (1.88) egui (0.32.2) 学习笔记(逐行注释)(二十八)使用图片控件显示图片
笔记·学习·rust·egui
huli33202 天前
pingora_web:首款基于 Cloudflare Pingora 的企业级 Rust Web 框架
rust
Pomelo_刘金2 天前
如何优雅地抽离 Rust 子工程:以 rumqttd 为例
rust
几颗流星2 天前
Rust 常用语法速记 - 错误处理
后端·rust
向上的车轮2 天前
如何用 Rust 重写 SQLite 数据库(二):是否有市场空间?
数据库·rust·sqlite