Rust 1.62.0稳定版中的内容介绍

92 阅读3分钟

Rust团队很高兴地宣布Rust的新版本,即1.62.0。Rust是一种编程语言,使每个人都能建立可靠和高效的软件。

如果你已经通过rustup安装了以前的Rust版本,你可以用1.62.0获得:

rustup update stable

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

如果你想通过测试未来的版本来帮助我们,你可以考虑在本地更新,使用测试频道(rustup default beta)或夜间频道(rustup default nightly)。 请报告你可能遇到的任何bug!

1.62.0稳定版中的内容

cargo add

现在你可以使用cargo add 直接从命令行添加新的依赖项。这个命令支持指定功能和版本。它也可以用来修改现有的依赖关系。

比如说:

cargo add log
cargo add serde --features derive
cargo add nom@5

更多内容请参见cargo 文档

#[default] 枚举变体

如果你指定一个默认的变体,你现在可以在枚举上使用#[derive(Default)] 。例如,直到现在你还必须为这个枚举手动编写一个Default 植入:

#[derive(Default)]
enum Maybe<T> {
    #[default]
    Nothing,

    Something(T),
}

到目前为止,只有 "单元 "变体(没有字段的变体)才允许被标记为#[default] 。更多信息可在该功能的RFC中找到。

Linux上更薄、更快的互斥器

以前,Mutex,Condvar, 和RwLock 在Linux上是由pthreads库支持的。pthreads锁支持的功能比Rust APIs本身要多,包括运行时配置,并且被设计用于比Rust提供的静态保证更少的语言。

例如,mutex的实现是40字节,不能移动。这迫使标准库在幕后为使用pthreads的平台的每个新的mutex分配一个Box

Rust的标准库现在为Linux上的这些锁提供了一个基于Futex的原始实现,它非常轻巧,不需要额外的分配。在1.62.0中,Mutex ,在Linux上它的内部状态只需要5个字节,尽管这在未来的版本中可能会改变。

这是提高Rust锁类型效率的长期努力的一部分,其中包括之前在Windows上的改进,如取消其原语。你可以在跟踪问题中阅读更多关于这一努力的内容。

裸机x86_64 目标

现在,为x86_64 构建无操作系统的二进制文件更加容易了,例如在编写内核时。x86_64-unknown-none 目标已被提升到第二层,可以用 rustup 安装:

rustup target add x86_64-unknown-none
rustc --target x86_64-unknown-none my_no_std_program.rs

稳定的API

以下方法和特性的实现现在已经稳定了:

其他变化

Rust 1.62.0版本中还有其他变化。请查看RustCargoClippy中的变化。

1.62.0的贡献者

许多人共同创造了Rust 1.62.0,没有你们,我们不可能做到这一点。谢谢大家