Rust 1.73.0 发布


Rust 1.73.0 稳定版已正式发布,主要带来以下变化:

Cleaner panic messages

默认紧急处理程序生成的输出已更改为将 panic 消息放在单独一行,而不是用引号括起来。这可以使 panic 消息更易于阅读,如本示例所示:

fn main() {
let file = "ferris.txt";
panic!("oh no! {file:?} not found!");
}

Output before Rust 1.73:

thread 'main' panicked at 'oh no! "ferris.txt" not found!', src/main.rs:3:5

Output starting in Rust 1.73:

thread 'main' panicked at src/main.rs:3:5:
oh no! "ferris.txt" not found!

这在信息较长、包含嵌套引号或跨多行时尤其有用。

此外,assert_eqassert_ne产生的 panic 消息也已被修改,移动了自定义消息(第三个参数)并删除了一些不必要的标点符号,如下所示:

fn main() {
assert_eq!("🦀", "🐟", "ferris is not a fish");
}

Output before Rust 1.73:

thread 'main' panicked at 'assertion failed: `(left == right)`
 left: `"🦀"`,
right: `"🐟"`: ferris is not a fish', src/main.rs:2:5

Output starting in Rust 1.73:

thread 'main' panicked at src/main.rs:2:5:
assertion `left == right` failed: ferris is not a fish
 left: "🦀"
right: "🐟"

Thread local initialization

正如 RFC 3184 中所提议的,LocalKey<Cell<T>>LocalKey<RefCell<T>>现在可以直接使用get()set()take()replace()方法进行操作,而无需像一般LocalKey工作那样跳过with(|inner| ...)闭包。LocalKey<T>thread_local!statics 的类型。

新方法使 common code 更加简洁,并避免了为新线程在thread_local!中指定的默认值运行额外的初始化代码。

thread_local! {
static THINGS: Cell<Vec<i32>> = Cell::new(Vec::new());
}

fn f() {
// before:
THINGS.with(|i| i.set(vec![1, 2, 3]));
// now:
THINGS.set(vec![1, 2, 3]);

// ...

// before:
let v = THINGS.with(|i| i.take());
// now:
let v: Vec<i32> = THINGS.take();
}

Stabilized APIs

  • Unsigned {integer}::div_ceil
  • Unsigned {integer}::next_multiple_of
  • Unsigned {integer}::checked_next_multiple_of
  • std::ffi::FromBytesUntilNulError
  • std::os::unix::fs::chown
  • std::os::unix::fs::fchown
  • std::os::unix::fs::lchown
  • LocalKey::<Cell<T>>::get
  • LocalKey::<Cell<T>>::set
  • LocalKey::<Cell<T>>::take
  • LocalKey::<Cell<T>>::replace
  • LocalKey::<RefCell<T>>::with_borrow
  • LocalKey::<RefCell<T>>::with_borrow_mut
  • LocalKey::<RefCell<T>>::set
  • LocalKey::<RefCell<T>>::take
  • LocalKey::<RefCell<T>>::replace

这些 API 现在在 const contexts 中是稳定的:

  • rc::Weak::new
  • sync::Weak::new
  • NonNull::as_ref

 详情可查看官方公告。


相關推薦

2022-11-25

VScode 1.73.1 发布,这个小版本修复了 1.73.0 版本带来的若干问题: 错误/回归:重命名本地非导出变量会导致文件自动保存  设置编辑器“更多操作”菜单被莫名移除 Organize Imports 在 1.73.0 中被破坏  改进终端快速修

2023-07-18

近日,Rust开源社区发布1.71.0版本,实现对龙架构(LoongArch)指令集的原生支持。 龙架构操作系统发行版和开发者可基于上游社区源代码构建或直接下载Rust开源社区发布的龙架构二进制版本。Rust开发者将在龙架构平台上获得良

2023-11-18

过通常的批准流程(例如语言 FCP)才能出现在规范的已发布(非草案)版本中。 语言和规范团队应努力拥有至少一名共同成员(例如 Felix)充当联络人,以帮助确保我们对次要变更与重大变更的理解保持同步。 目标 规范

2023-08-12

Rust通用代码生成器莲花尝鲜版七发布最新视频,赢得高冷的Rust公主的垂青 Rust通用代码生成器莲花尝鲜版七已发布最新介绍视频,详细解释了sqlx从0.3.5升级到0.7.1和消除90%的编译警告的具体情况。并且详细解释了Rust代码生成物

2023-06-22

调解团队成员)、@Mark-Simulacrum(基金会核心项目主管,发布团队负责人)、@rylev(基金会核心项目主管)、@technetos(调解团队成员)和@yaahc(基金会合作项目主管)共同撰写。 而 Rust 项目的大部分发展和维护工作(例如编译

2023-08-02

rust-foundation-report-security-initiative-progress Rust 基金会发布了首份安全计划报告,详细介绍了最近的 Rust 安全重点领域、里程碑和即将推出的计划。Rust 基金会的安全计划于 2022 年 9 月创建,旨在支持和推进 Rust 编程语言生态系统内

2021-11-24

Rust 审核团队 (Moderation Team) 昨日发布公告称,他们已集体辞职且即刻生效。团队成员 Andrew Gallant 表示此举是为了抗议 Rust 核心团队 (Core Team) 不对除自己以外的任何人负责。 Andrew Gallant 在公告中写道,由于核心团队在组织

2023-04-27

第一个官方 GCC 13 版本即将发布,但 GCC 的 Rust 前端项目 gccrs 却不会如期出现在此版本中。 去年 12 月,Gccrs 被批准合并到 GCC 主线,所有 gccrs 代码也都被合并到了 GCC 13 上游代码库中。但时至今日,编译器仍未就支持 Rust 做好

2023-04-29

,微软 Azure 首席技术官 Mark Russinovich 还曾在社交平台上发布动态呼吁,开发人员应该更多的使用 Rust 而不是 C/C++ 来启动新项目。 另一方面,虽然用 Rust 重写 Windows 不会很快发生,但微软对 Rust 的支持或使开源社区受益。开

2022-09-18

将目标合并到上游的最低分类级别。但 Tier-3 目标在 Rust 发布渠道中缺乏官方编译器构建,缺乏 Rust持续集成 (CI) 保证,并迫使用户使用 nightly/unstable 的编译器构建。 David 希望将 Rust UEFI target 提升到 Tier 2,这样他们就可以

2024-04-04

的 Rust 代码正准备升级到 Rust 1.78,该版本将在一个月后发布为稳定版。 虽然Rust 1.78要到5月初才会发布,不过由米格尔-奥赫达(Miguel Ojeda)领导的Rust Linux内核开发人员已经在为下一次升级做准备了。 随着向 Rust 1.78 的转变,

2023-03-26

Rust 团队于近日发布了 Rust 1.68.1 新版本,1.68.1 是一个错误修复版本,主要更新内容如下: Rust 1.68.1 稳定版主要包含对 Rust 的 CI 构建 Windows MSVC 编译器方式的改变,不再为 Rust 代码启用 LTO。 目前认为这对 ThinLTO 的广泛使用没

2023-06-06

动程序。 据介绍,长期内核开发者 Fujita Tomonori 在周日发布了这组补丁,包括提供网络设备驱动程序的 Rust 抽象和    初始的 Rust 虚拟驱动程序,以帮助审查早期代码。到目前为止,网络子系统中 Rust 的实际硬件

2023-05-27

谷歌宣布并发布了一些汇总的 Rust crates 内部审计结果,以继续履行对开源 Rust 社区的承诺。一直以来,谷歌都在积极拥抱 Rust,在许多开源项目中进行了应用。以及持续投资 Rust 社区:包括帮助建立了 Rust 基金会,员工积极贡献