Rust团队非常高兴地宣布Rust的新版本1.49.0。 Rust是一种编程语言,它使每个人都可以构建可靠且高效的软件。
如果您具有通过rustup安装的Rust的早期版本,则获取Rust1.49.0的过程非常简单:
如果还没有,可以从我们网站上的相应页面获取rustup,并在GitHub上查看1.49.0的详细发行说明。
对于此版本,我们有一些新的目标和对测试框架的改进。请参阅详细的发行说明,以了解本文未涵盖的其他更改。
Rust编译器支持各种各样的目标,但是Rust团队无法为所有目标提供相同级别的支持。为了清楚地标记每个目标的支持程度,我们使用分层系统:
编译器在技术上支持Tier 3目标,但是我们不检查它们的代码是构建还是通过测试,并且我们不提供任何预构建的二进制文件作为发行版的一部分。
保证可以构建第2层目标,并且我们提供了预构建的二进制文件,但是我们不会在这些平台上执行测试套件:生成的二进制文件可能无法工作或可能存在错误。
第1层目标提供了最高的支持保证,并且我们在那些平台上针对编译器中合并的每个更改运行全套件。还提供预构建的二进制文件。
Rust 1.49.0将aarch64-unknown-linux-gnu目标提升为Tier 1支持,从而为运行Linux的64位ARM系统的用户提供了最高的保证!我们希望这一变化将惠及从嵌入式到台式机和服务器的工作负载。
这是该项目的重要里程碑,因为这是anon-x86目标第一次获得Tier 1支持:我们希望这将为将来实现更高目标的更多目标铺平道路。
请注意,Android不受此更改的影响,因为它使用了不同的Tier 2target。
从现在开始,开发人员可以期望这两个目标都可以通过rustup预先安装二进制文件!但是,Rust团队不在这些平台上运行测试套件,因此可能存在错误或不稳定。
Rust的内置测试框架没有很多功能,但这并不意味着它不能得到改进!考虑一个看起来像这样的测试:
❯货物+1.48.0测试编译线程测试v0.1.0(C:\ threadtest)在0.38秒内完成测试[未优化+ debuginfo]目标正在运行target \ debug \ deps \ threadtest-02f42ffd9836cae5.exerunning 1 testfiefoetest thready_pass ... oktest结果:ok。 1个通过; 0个失败; 0被忽略; 0测量; 0筛选出运行0个测试的Doc-tests线程测试-测试结果:好的。 0通过; 0个失败; 0被忽略; 0测量; 0过滤掉
您可以看到线程的输出已打印,它与测试框架本身的输出混合在一起。如果每个println都不错!像那种打印"的作品冒烟?"好吧,这就是Rust 1.49.0的行为:
❯cargo test编译线程测试v0.1.0(C:\ threadtest)完成测试[未优化+ debuginfo]目标在0.52s内运行target \ debug \ deps \ threadtest-40aabfaa345584be.exerunning 1 testtest thready_pass ... oktest结果:ok 。 1个通过; 0个失败; 0被忽略; 0测量; 0过滤掉;在0.00秒内完成Doc-tests线程测试正在运行0个测试测试结果:好的。 0通过; 0个失败; 0被忽略; 0测量; 0过滤掉;在0.00秒内完成
但是请放心;如果测试失败,您仍然会看到所有输出。通过添加恐慌!到测试结束,我们可以看到失败的样子:
❯货物测试编译线程测试v0.1.0(C:\ threadtest)在0.52 s内完成测试[未优化+调试信息]目标正在运行target \ debug \ deps \ threadtest-40aabfaa345584be.exerunning 1 testtest thready_pass ... FAILED失败:- -thready_pass标准输出---- feefiefoefumthread' thready_pass' src \ lib.rs:11:5对“明确恐慌”感到恐慌
具体来说,测试运行程序确保捕获输出,并保存输出以防测试失败。
Rust 1.49.0发行版中还有其他更改:请查看Rust,Cargo和Clippy中的更改。
许多人一起创建了Rust 1.49.0。没有你们所有人,我们做不到。谢谢!