Rust 1.52.0 已正式发布,及其新特性详述

2022-09-01 15:40:18 浏览数 (1)

2021 年 5 月 6 日,Rust 发布团队官宣 Rust 发布 1.52.0 稳定版:Announcing Rust 1.52.0。

以下为官方公告原文——

Rust 团队很高兴地宣布,Rust 语言有了新版本:1.52.0。Rust 是一门编程语言,它使每个人都能够构建安全、高效的软件。

如果你已通过 rustup 安装了 Rust 的早期版本,那么更新到 Rust 1.52.0 相当容易:

代码语言:javascript复制
rustup update stable

如果您还未安装过 Rust,可以从 Rust 官网页面获取 rustup,并可以在 GitHub 站点查阅 Rust 1.52.0 的详细发行说明。

Rust 1.52.0 稳定版的新特性

Rust 1.52.0 稳定版中,最重要的变化不是语法或标准库,而是对 Clippy 工具支持的增强。

先前的版本中,先运行 cargo check,然后再运行 cargo clippy 时,实际上并未运行 Clippycargo 在构建缓存时,没有区分两者。然而,在 1.52 中,这一点已经被修复。这意味着用户将获得预期的行为,不再因为运行这两个命令的顺序而受到影响。

其中语法、编译器、库的新特性,由笔者整理自 Rust 发布团队的内部论坛帖子 Rust 1.52.0 稳定版预发布测试中,关键新特性一瞥。

语法

  • 增加代码分析(lint)unsafe_op_in_unsafe_fn,用于检查 unsafe fn 中的不安全(unsafe)代码,是否被包裹在 unsafe 代码块中。此代码分析(lint)特性默认开启,未来的版本中,可能会成为警告或错误。
  • Rust 1.52.0 开始,可以将数组的可变引用,强制转换为包含相同元素类型的指针。

编译器

  • 升级默认的 LLVM 为 LLVM 12。

对以下目标提供 3* 层架构支持:

  • s390x-unknown-linux-musl
  • riscv32gc-unknown-linux-muslriscv64gc-unknown-linux-musl
  • powerpc-unknown-openbsd

  • OsString 实现了 ExtendFromIterator
  • cmp::Reverse 增加 #[repr(transparent)] 属性表示
  • Arc<impl Error> 实现 error::Error
  • 所有整数除法和余数运算,现在都为 const

已稳定 APIs

下列方法已经稳定。

  • Arguments::as_str
  • char::MAX
  • char::REPLACEMENT_CHARACTER
  • char::UNICODE_VERSION
  • char::decode_utf16
  • char::from_digit
  • char::from_u32_unchecked
  • char::from_u32
  • slice::partition_point
  • str::rsplit_once
  • str::split_once

上个版本中,稳定的如下 APIs,现在为 const

  • char::len_utf8
  • char::len_utf16
  • char::to_ascii_uppercase
  • char::to_ascii_lowercase
  • char::eq_ignore_ascii_case
  • u8::to_ascii_uppercase
  • u8::to_ascii_lowercase
  • u8::eq_ignore_ascii_case

其他更新

Rust 1.52.0 版本中,还有些其它更新。请查阅如下页面:Rust、Cargo、Clippy。

Rust 1.52.0 的贡献者

很多人共同协作,才创造了 Rust 1.52.0。没有你们,我们不可能成功。谢谢您们!

谢谢您的阅读,欢迎交流。

0 人点赞