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
时,实际上并未运行 Clippy
:cargo
在构建缓存时,没有区分两者。然而,在 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-musl
和riscv64gc-unknown-linux-musl
powerpc-unknown-openbsd
库
OsString
实现了Extend
和FromIterator
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。没有你们,我们不可能成功。谢谢您们!
谢谢您的阅读,欢迎交流。