发布 Rust 1.23

2018年1月4日 · Rust 核心团队

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

如果您已经通过 rustup 安装了之前的 Rust 版本,获取 Rust 1.23.0 非常简单,只需运行

$ rustup update stable

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

1.23.0 稳定版中有什么

新的一年,新的 Rust!今天我们的第一项改进是,在某些情况下,我们现在避免一些不必要的复制。我们已经看到,通过这项更改,使用 rustc 的内存使用量下降了 5-10%;您的程序可能会有所不同。

文档团队一直在努力将 rustdoc 迁移到使用CommonMark。之前,rustdoc 从未保证使用哪种 markdown 渲染引擎,但我们最终确定使用 CommonMark。作为本次发布的一部分,我们使用之前的渲染器Hoedown渲染文档,但同时也使用 CommonMark 兼容的渲染器进行渲染,并且如果存在任何差异会发出警告。应该有一种方法可以让您修改所使用的语法,使其在两种渲染器下都能正确渲染;我们不知道有任何情况是做不到的。文档团队成员 Guillaume Gomez撰写了一篇博客文章,展示了一些常见差异以及如何解决这些问题。在将来的版本中,我们将默认切换到使用 CommonMark 渲染器。此警告已于去年五月在 nightly 版本中引入,并已默认开启自去年十月以来,因此许多 crate 已经修复了它们发现的任何问题。

在其他文档方面,历史上 Cargo 的文档有点奇怪。它们不在doc.rust-lang.org 上,而是在doc.crates.io 上。通过此版本,这种情况正在改变。您现在可以在doc.rust-lang.org/cargo 找到 Cargo 的文档。此外,它们已被转换为与我们其他长篇文档相同的格式。我们将从 doc.crates.io 添加一个重定向到此页面,并且您可以在全年看到 Cargo 文档的更多改进和更新。

有关更多信息,请参阅详细发布说明

标准库稳定化

自 Rust 1.0 起,存在一个名为AsciiExt 的 trait,用于为 u8char[u8]str 提供 ASCII 相关功能。要使用它,您会像这样编写代码

use std::ascii::AsciiExt;

let ascii = 'a';
let non_ascii = '';
let int_ascii = 97;

assert!(ascii.is_ascii());
assert!(!non_ascii.is_ascii());
assert!(int_ascii.is_ascii());

在 Rust 1.23 中,这些方法现在直接定义在这些类型上,因此您不再需要导入该 trait。由于我们的稳定性保证,此 trait 仍然存在,因此如果您仍然想支持 Rust 1.23 之前的版本,您可以这样做

#[allow(unused_imports)]
use std::ascii::AsciiExt;

…以抑制相关的警告。一旦您停止支持旧的 Rust 版本,您可以删除这两行,并且一切将继续正常工作。

此外,本次发布还稳定了几个新的 API

有关更多信息,请参阅详细发布说明

Cargo 功能

cargo check 现在可以检查您的单元测试 了。

cargo uninstall 现在可以一次命令卸载多个包 了。

有关更多信息,请参阅详细发布说明

1.23.0 的贡献者

许多人共同努力才有了 Rust 1.23。没有你们所有人,我们不可能做到。谢谢!