发布 Rust 1.27.2

2018 年 7 月 20 日 · Rust 核心团队

Rust 团队很高兴发布 Rust 的新版本 1.27.2。Rust 是一种专注于安全性、速度和并发性的系统编程语言。

如果您之前已经通过 rustup 安装了 Rust,那么获取 Rust 1.27.2 非常简单,只需运行

$ rustup update stable

如果您还没有安装,可以从我们网站上的相应页面获取 rustup,并在 GitHub 上查看1.27.2 的详细发布说明

1.27.2 稳定版中的内容

此补丁版本修复了借用检查器验证 match 表达式中的一个 bug。此 bug 是在 1.27.1 版本中引入的,当时是为了修复另一个关于 match 人机工程学的 bug。

fn transmute_lifetime<'a, 'b, T>(t: &'a (T,)) -> &'b T {
    match (&t, ()) {
        ((t,), ()) => t,
    }
}

fn main() {
    let x = {
        let y = Box::new((42,));
        transmute_lifetime(&y)
    };

    println!("{}", x);
}

1.27.2 版本将会拒绝上述代码。

对 match 人机工程学功能频繁补丁的担忧

用户在 Rust 的多个论坛上表达了对当前借用检查器在验证 match 人机工程学时频繁发布补丁来修复 bug 的担忧。补丁发布频率增加主要有两个原因:显著提高的处理能力以及当前使用的借用检查器的年代已久。

随着发布团队的成立,Rust 生成补丁发布的能力已大幅提升。这意味着编译器团队和核心团队进行补丁发布所需的投入大大减少,这也使得此类补丁发布更有可能发生。

当前的借用检查器已经存在多年,并开始显露其年代久远的问题。更好、更精确的借用检查器的工作正在进行中,并且它已经检测到了所有这些 bug。这项工作计划在接下来的几个版本中稳定下来,敬请期待即将公布的更多信息。

总而言之,当前借用检查器维护不足的问题,加上发布能力的提升,使得我们能够更快速、更频繁地发布补丁版本成为可能。