Rust 团队很高兴宣布 Rust 的新版本 1.23.0。Rust 是一种系统编程语言,专注于安全、速度和并发。
如果您之前通过 rustup 安装了 Rust 版本,获取 Rust 1.23.0 非常简单,只需
$ rustup update stable
如果您还没有安装,您可以从我们网站上的相应页面 获取 rustup
,并查看 GitHub 上的 1.23.0 的详细发布说明。
1.23.0 稳定版的新功能
新年新气象!我们第一个改进是,现在我们在某些情况下 避免了一些不必要的复制。我们已经看到使用 rustc
的内存使用量下降了 5-10%;您的程序可能会有所不同。
文档团队一直在努力将 rustdoc
迁移到使用 CommonMark。以前,rustdoc
从未保证它使用哪个 Markdown 渲染引擎,但我们终于承诺使用 CommonMark。作为此版本的一部分,我们使用之前的渲染器 Hoedown 渲染文档,但也使用符合 CommonMark 的渲染器渲染文档,并 在存在任何差异时发出警告。应该有一种方法可以修改您使用的语法,以便在两者下都能正确渲染;我们不知道有任何情况是不可能的。文档团队成员 Guillaume Gomez 已经 写了一篇博文,展示了一些常见的差异以及如何解决它们。在未来的版本中,我们将默认切换到使用 CommonMark 渲染器。这个 警告在去年 5 月的 nightly 版本中出现,并且 从去年 10 月开始默认启用,因此许多板条箱已经修复了他们发现的任何问题。
在其他文档方面,从历史上看,Cargo 的文档有点奇怪。它们不在 doc.rust-lang.org 上,而是在 doc.crates.io 上。随着这个版本的发布,这种情况正在改变。您现在可以在 doc.rust-lang.org/cargo 上找到 Cargo 的文档。此外,它们已转换为与我们其他长篇文档相同的格式。我们将从 doc.crates.io
添加到此页面的重定向,并且您可以在今年看到 Cargo 文档的更多改进和更新。
查看 详细的发布说明以了解更多信息。
库稳定化
从 Rust 1.0 开始,名为 AsciiExt
的特征存在,用于在 u8
、char
、[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 中,这些方法现在直接在这些类型上定义,因此您不再需要导入特征。由于我们的稳定性保证,此特征仍然存在,因此如果您想继续支持 Rust 1.23 之前的 Rust 版本,您可以执行以下操作
#[allow(unused_imports)]
use std::ascii::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。没有你们,我们无法做到。 感谢!