锈1.54.0

2021-07-29 23:40:11

Rust 团队很高兴地宣布 Rust 的新版本 1.54.0。 Rust 是一种编程语言,使每个人都能够构建可靠且高效的软件。如果您通过 rustup 安装了以前版本的 Rust,那么获取 Rust1.54.0 就像这样简单:如果您还没有安装,您可以从我们网站上的相应页面获取 rustup,并查看 1.54 的详细发行说明.0 在 GitHub 上。 Rust 1.54 支持在属性内调用类似函数的宏。类似函数的宏可以是 macro_rules!基于或程序的宏,它们像宏一样被调用!(...)。一个值得注意的用例是将其他文件中的文档包含到 Rust 文档注释中。例如,如果您项目的 README 代表了一个很好的文档注释,您可以使用 include_str!直接合并内容。以前,各种变通方法允许类似的功能,但从 1.54 开始,这更加符合人体工程学。宏也可以嵌套在属性中,例如包含由构建脚本生成的内容:wasm32 平台的许多内在函数已经稳定,可以访问 WebAssembly 中的 SIMD 指令。值得注意的是,与之前稳定的 x86 和 x86_64 内在函数不同,它们没有安全要求,只能在启用适当的目标功能时调用。这是因为 WebAssembly 从一开始就是为了在执行之前安全地验证代码而编写的,因此可以保证正确解码指令(或根本不解码)。

这意味着我们可以将一些内在函数公开为完全安全的函数,例如 v128_bitselect。但是,仍然有一些内部函数不安全,因为它们使用原始指针,例如 v128_load。在 1.52.1 中默认禁用增量编译后,此版本中默认重新启用了增量编译。在 Rust 1.52 中,从磁盘缓存加载增量编译数据时添加了额外的验证。这导致许多预先存在的潜在稳健性问题被发现,因为验证将这些静默错误转换为内部编译器错误(ICE)。作为回应,编译团队决定在 1.52.1 补丁中禁用增量编译,让用户避免遇到 ICE 和底层不健全的情况,代价是编译时间更长。 1 从那时起,我们进行了一系列回顾,贡献者一直在努力解决报告的问题,一些修复在 1.53 中发布,大部分在此版本中发布。 2 目前仍有两个已知问题会导致 ICE。由于缺乏自动崩溃报告,我们无法确定未决问题的全部影响程度。但是,根据我们从受 1.52 版本影响的用户那里收到的反馈,我们认为剩余的问题在实践中很少见。 Rust 1.54.0 版本还有其他更改:查看 Rust、Cargo 和 Clippy 中的更改。 rustfmt 也在 1.54.0 版本中得到修复,以正确格式化nestedout-of-line 模块。这可能会导致 1.53.0 rustfmt 忽略的文件格式发生变化。在此处查看详细信息。

许多人聚集在一起创建了 Rust 1.54.0。没有你们,我们不可能完成它。谢谢!