Rust 团队很高兴地宣布 Rust 的新版本 1.27.1。Rust 是一种系统编程语言,专注于安全性、速度和并发性。
如果你之前通过 rustup 安装了 Rust,获取 Rust 1.27.1 非常简单,只需执行
$ rustup update stable
如果你还没有安装,可以从我们网站的相应页面获取 rustup,并查看 GitHub 上的1.27.1 的详细发行说明。
1.27.1 稳定版包含什么
此补丁版本修复了借用检查器在验证 match 表达式时的一个错误。此错误是在 1.26.0 版本中引入的,随match ergonomics 的稳定化一同发布。我们不确定这个具体问题是否确实表明借用检查器存在不健全性,但怀疑存在这种可能性,因此决定发布一个点版本。下面的代码示例在此补丁之前会导致编译器内部发生 panic。
1.27.1 版本将拒绝上述代码并给出此错误消息
error[E0507]: cannot move out of borrowed content
--> src/main.rs:4:30
|
4 | .take_while(|(_, &t)| false)
| ^-
| ||
| |hint: to prevent move, use `ref t` or `ref mut t`
| cannot move out of borrowed content
error: aborting due to previous error
除了 match ergonomics 修复外,还在 rustdoc(Rust 项目的标准文档生成器)中发现了一个安全漏洞。该漏洞通过此版本包含的第二个补丁解决,方法是移除 rustdoc 插件的默认搜索路径。此功能将在 Rust 1.28.0 中完全移除。此插件基础设施早于 Rust 1.0,从未在稳定版上可用,并且在 nightly 版上也已不可用数月。预计在下一个版本中会听到更多关于移除的消息:当前的补丁移除了默认搜索路径(改为要求用户明确指定),而下一个版本将完全移除此功能。