Rust 1.23 发布

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

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

如果您通过 rustup 安装了以前版本的 Rust,那么获取 Rust 1.23.0 非常简单,只需执行以下命令:

$ rustup update stable

如果您还没有安装,可以从我们网站的相应页面获取 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 之前的 Rust 版本,您可以执行以下操作:

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

...来抑制相关的警告。一旦您放弃对旧版 Rust 的支持,您可以删除这两行,一切都将继续工作。

此外,此版本稳定了一些新的 API:

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

Cargo 功能

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

cargo uninstall 现在可以在一个命令中卸载多个包

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

1.23.0 的贡献者

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