Rust 团队很高兴宣布发布 Rust 新版本 1.23.0。Rust 是一门专注于安全、速度和并发的系统编程语言。
如果您已经通过 rustup 安装了之前的 Rust 版本,获取 Rust 1.23.0 非常简单,只需运行
如果您还没有安装 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,用于为 u8、char、[u8] 和 str 提供 ASCII 相关功能。要使用它,您会像这样编写代码
use AsciiExt;
let ascii = 'a';
let non_ascii = '❤';
let int_ascii = 97;
assert!;
assert!;
assert!;
在 Rust 1.23 中,这些方法现在直接定义在这些类型上,因此您不再需要导入该 trait。由于我们的稳定性保证,此 trait 仍然存在,因此如果您仍然想支持 Rust 1.23 之前的版本,您可以这样做
use AsciiExt;
…以抑制相关的警告。一旦您停止支持旧的 Rust 版本,您可以删除这两行,并且一切将继续正常工作。
此外,本次发布还稳定了几个新的 API
- 各种
std::sync::atomic类型 现在实现了从其非原子类型的From。例如,let x = AtomicBool::from(true);。 ()现在实现了FromIterator<()>;查看该 PR 获取一个巧妙的用例。RwLock<T>的Send限制已被解除
有关更多信息,请参阅详细发布说明。
Cargo 功能
cargo check 现在可以检查您的单元测试 了。
cargo uninstall 现在可以一次命令卸载多个包 了。
有关更多信息,请参阅详细发布说明。
1.23.0 的贡献者
许多人共同努力才有了 Rust 1.23。没有你们所有人,我们不可能做到。谢谢!