防锈1.59.0,带直列装配支架等。

2022-02-25 08:30:00

Rust团队发布了Rust的新版本1.59.0。Rust是一种编程语言,它使每个人都能够构建可靠高效的软件。

今天';在世界';俄罗斯的注意力被普京突然入侵乌克兰所吸引';美国军队。在讨论新防锈剂的细节之前,我们';我谨声明,我们声援乌克兰人民,并对所有受这场冲突影响的人表示支持。

如果您通过Rustop安装了Rust的早期版本,您可以通过以下方式获得1.59.0版本:

如果你没有';如果您还没有,您可以从我们网站上的相应页面获取RustUp,并在GitHub上查看1.59.0的详细发行说明。

Rust语言现在支持内联汇编。这使得许多应用程序需要对其执行进行非常低级的控制,或访问特定的机器指令。

使用std::arch::asm;//使用移位和加法将x乘以6:u64=4;不安全的{asm!(";mov{tmp},{x}";";shl{tmp},1";";shl{x},2";";添加{x},{tmp}";,x=inout(reg)x,tmp=out(reg)#坚持!(x,4*6);

asm中用于命名寄存器的格式字符串语法!还有全球运动!宏与Rust格式字符串中使用的宏相同,因此Rust程序员应该非常熟悉宏。

根据目标体系结构,内联汇编变量提供的汇编语言和指令。如今,稳定的Rust编译器支持以下体系结构上的在线组装:

您可以在Rust By Example中看到更多内联装配示例,并在参考资料中找到更详细的文档。

现在可以使用元组、切片和结构模式作为符号的左侧。

let(a,b,c,d,e);(a,b)=(1,2);[c,…,d,]=[1,2,3,4,5];结构{e,…}=结构{e:5,f:3};坚持!([1,2,1,4,5],[a,b,c,d,e]);

这使得赋值与let绑定更加一致,后者长期以来一直支持相同的东西。请注意,不允许使用运算符(如+=)来分解分配。

泛型类型现在可以为其常量泛型指定默认值。例如,您现在可以编写以下内容:

结构阵列存储<;T、 常数N:usize=2>;{arr:[T;N],}impl<;T>;ArrayStorage<;T>;{fn new(a:T,b:T)->ArrayStorage<;T>;{ArrayStorage{arr:[a,b],}}}

以前,类型参数必须位于所有常量参数之前。这一限制已经放宽,现在可以将它们交错。

fn笛卡尔_积<;T、 常数N:usize,U,常数M:usize,V,F>;(a:[T;N]、b:[U;M]、f:f)——>;[V;N];M] 其中F:FnMut(&;T,&;U)——>;V{/…}

有时,Rust编译器中的错误会导致它接受本不应该被接受的代码。这方面的一个例子是在安全代码中允许借用压缩结构字段。

虽然这种情况很少发生,但当项目使用的板条箱中包含不再允许使用的代码时,这种情况可能会造成相当大的破坏。事实上,你可能不会注意到,直到你的项目莫名其妙地停止建设!

Cargo现在会在依赖项被未来版本的Rust拒绝时向您显示警告。运行货物构建或货物检查后,您可能会看到:

警告:以下软件包包含的代码将被Rust的未来版本拒绝:old_dep v0。1.0注意:要查看问题所在,请使用选项“--future Compatibility report”,或运行“cargo report future Compatibilities--id 1”`

您可以运行警告中提到的cargo report命令,查看将被拒绝的代码的完整报告。这让你有时间在依赖关系破坏你的构建之前升级它。

它';从您分发的二进制文件中删除不必要的信息(如debuginfo)通常很有用,从而使它们变得更小。

虽然在创建二进制文件后一直可以手动执行此操作,但cargo和rustc现在在链接二进制文件时支持剥离。要启用此功能,请将以下内容添加到您的货物中。汤姆:

这会导致debuginfo从发行版二进制文件中剥离。您还可以提供";符号";或者仅为true,以在支持的位置删除所有符号信息。

标准库通常附带调试符号和行级别的DebugInfo,因此默认情况下,未启用调试符号的Rust二进制文件仍然包含标准库中的调试信息。使用stripoption可以删除这些额外信息,从而生成更小的二进制文件。

1.59.0版本默认禁用增量(除非通过环境变量明确要求:RUSTC_FORCE_incremental=1)。这减轻了已知错误#94124的影响,该错误可能会在增量编译打开时的编译过程中导致反序列化错误(和恐慌)。

#94124的具体补丁已经登陆,目前处于1.60测试版,将在六周后发布。我们目前还不知道会鼓励决定在1.60 stable中禁用增量编译的其他问题,如果没有出现,1.60 stable很可能会再次启用增量编译。默认情况下,beta和nightlychannels中的增量编译保持打开状态。

一如既往,我们鼓励用户在夜间和beta频道上进行测试,并报告您发现的问题:尤其是对于增量bug,这是确保Rust团队能够判断是否存在破损及其影响的用户数量的最佳方法。

Rust 1.59.0版本还有其他变化。看看锈迹、货物和Clippy发生了什么变化。

许多人聚集在一起创造了Rust 1.59.0。我们不能';没有你们所有人我做不到。谢谢