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

相关推荐
姜学迁14 小时前
Rust-枚举
开发语言·后端·rust
凌云行者14 小时前
rust的迭代器方法——collect
开发语言·rust
QMCY_jason21 小时前
Ubuntu 安装RUST
linux·ubuntu·rust
碳苯1 天前
【rCore OS 开源操作系统】Rust 枚举与模式匹配
开发语言·人工智能·后端·rust·操作系统·os
zaim11 天前
计算机的错误计算(一百一十四)
java·c++·python·rust·go·c·多项式
凌云行者2 天前
使用rust写一个Web服务器——单线程版本
服务器·前端·rust
cyz1410012 天前
vue3+vite@4+ts+elementplus创建项目详解
开发语言·后端·rust
超人不怕冷2 天前
[rust]多线程通信之通道
rust
逢生博客2 天前
Rust 语言开发 ESP32C3 并在 Wokwi 电子模拟器上运行(esp-hal 非标准库、LCD1602、I2C)
开发语言·后端·嵌入式硬件·rust
Maer092 天前
WSL (Linux)配置 Rust 开发调试环境
linux·运维·rust