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
以下方法和特性的实现现在已经稳定了:
bool::then_somef32::total_cmpf64::total_cmpStdin::lineswindows::CommandExt::raw_argimpl<T: Default> Default for AssertUnwindSafe<T>From<Rc<str>> for Rc<[u8]>From<Arc<str>> for Arc<[u8]>FusedIterator for EncodeWide- aarch64上的RDM本征
其他变化
Rust 1.62.0版本中还有其他变化。请查看Rust、Cargo和Clippy中的变化。
1.62.0的贡献者
许多人共同创造了Rust 1.62.0,没有你们,我们不可能做到这一点。谢谢大家