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。 没有你们所有人,我们不可能做到这一点。 谢谢

相关推荐
lanfordxb11 小时前
从 Markdown 到图片卡片:MarkCard Studio 的功能设计与官网实现记录
rust·软件工程·ai工具
yiqiefeimeng12 小时前
Rust还是Go?编程语言的未来之争
rust·go·编程语言·技术社区·未来之争
大卫小东(Sheldon)20 小时前
小鹤音形词典 新版发布了 - 离线的小鹤双拼\音形编码查询软件,支持AI多轮对话
ai·rust·xiaohe-yinxing
程序员爱钓鱼1 天前
Rust Move 详解:所有权移动与变量失效
后端·面试·rust
Ivanqhz1 天前
php7 闭包实现
开发语言·后端·rust·php
晴天162 天前
Rust 快速入门 (从 JavaScript 开发者视角)-Day09
开发语言·javascript·rust
梦醒沉醉2 天前
13、Rust程序设计语言——认识Cargo和Crates.io
rust
大鱼>2 天前
从零实现Rust异步运行时:Future/Waker/Reactor三部曲
开发语言·网络·rust
程序员爱钓鱼2 天前
Rust 所有权 Ownership 详解:理解内存安全的核心机制
前端·后端·rust
k4m7v2pz2 天前
把 Bevy 0.14 游戏移植到 R36S 掌机:一场与“无窗口系统“的搏斗
linux·rust·bevy·r36s·rk3326·开源掌机