日前,Rust开发团队发布Rust的新版本1.47.0。Rust是一种编程语言,它使每个人都可以构建可靠且高效的软件。
Rust 1.47.0 stable 版本添加了一个期待已久的标准库功能,但是该版本中没有包含任何新的语言功能。它主要是语言可用性方面的改善,库的稳定和定义及工具链的改善。
此前Rust没有办法对整数值进行泛型。这会导致数组出现问题,因为数组的类型部分包含整数。[T; N]表示类型为T,长度为N的数组。因为没有通用的方法N,所以必须为每个需要N长度数组手动实现阵列特征。对于标准库,最多32个N。
开发团队一直在研究一种称为"常量通用"的功能,使用该功能将使N可以通用。由于目前还没有稳定const泛型,对该功能不在深入讨论。该功能的核心已在最新版本的编译器中实现了,对使用该标准库在任意长度的数组上实现特征的标准库都可以接受。相对比而言,在Rust 1.46下面的代码会抛出一个错误:
fn main() {
let xs = [0; 34];
println!("{:?}", xs);
}
而在Rust 1.47中,将能正确输出组数。
该功能使数组将更加有用,当然只有等到const泛型功稳定下来,类库才能针对自己的特征进行实现。目前尚无稳定const泛型的推出日期。
在Rust 1.18版本中对rustc在panic上显示的回溯进行了一些更改。回溯中的很多信息,在大多数时候都没有用。在Rust 1.47.0中,对此做了优化,现在只提供必要的信息,比如下面的程序xxtes.rs:
fn main() {
panic!();
}
编译后,用RUST_BACKTRACE=1 ./xxtest执行,之前版本回溯结果会非常繁琐
在Rust 1.47.0中,回溯将会十分简洁:
这样一来,就可以更轻松地了解Panic的真正原因。如果要查看所有详细的回溯内容,可以通过设置RUST_BACKTRACE=full来查看。
LLVM底层已经升级到LLVM 11。编译器仍然支持使用早于8的LLVM版本进行编译,但是默认情况下,为11。
rustc现在支持 -C control-flow-guard,该选项将在Windows上打开Control Flow Guard。其他平台会自动忽略此标志。
此外,该版本还稳定了9个新的API:
Ident::new_raw
Range::is_empty
RangeInclusive::is_empty
Result::as_deref
Result::as_deref_mut
Vec::leak
pointer::offset_from
f32::TAU
f64::TAU
并提供了以下以前稳定的API const:
适用于所有NonZero整数的新的new方法。
适用于所有整数的checked_add,checked_sub,checked_mul,checked_neg,checked_shl,checked_shr,saturating_add,saturating_sub,和saturating_mul 方法。
适用于所有符号整数的checked_abs,saturating_abs,saturating_neg,和signum方法。
char和u8类型的is_ascii_alphabetic,is_ascii_uppercase,is_ascii_lowercase,is_ascii_alphanumeric,is_ascii_digit,is_ascii_hexdigit,is_ascii_punctuation,is_ascii_graphic,is_ascii_whitespace,is_ascii_control等方法。
有关更多信息,参见详细的发行说明。
Rustdoc已经支持Ayu主题。
Rust 1.47.0发行版中还有带来了Cargo和Clippy方面更改,具体请参考官方详细文档。
如果你通过rustup安装过Rust,那么就可以一键升级到最新的Rust 1.47.0:
rustup update stable
如果升级包下载比较慢,可以设置使用国内镜像站,比如清华镜像TUNA:
也可以从rust官网或者github仓库下载Rust,详细安装和问题文档可以查看GitHub仓库(/github:/rust-lang/rust)相关说明和问题。
页面更新:2024-05-02
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号