Rust 1.64.0 发布


Rust 团队于今天发布了 Rust 1.64.0 新版本,1.64.0 稳定版中的主要更新内容如下:

IntoFuture 增强 .await

Rust 1.64 稳定了 IntoFuture 特性。IntoFuture 是一个类似于 IntoIterator 的特性,但 IntoFuture 不支持 for ... in ... 循环,而是改变了 .await 的工作方式。它可以等待任何可以通过 IntoFuture 转换为 Future 的东西,这可以帮助你的 API 变得更友好.

corealloc 中与 C 语言兼容的 FFI 类型

当调用或被 C ABI 调用时,Rust 代码可以使用 c_uintc_ulong 等类型别名以在任何目标上匹配来自 C 的相应类型,而不需要特定于目标的代码或条件。

以前,这些类型别名只在 std 中可用,所以为嵌入式目标和其他只能使用 corealloc 的情况下编写的代码不能使用这些类型。

Rust 1.64 现在在 core::fi 中提供了所有的 c_* 类型别名,以及用于处理 C 字符串的 core::f i::CStr。Rust 1.64 还提供了 alloc::ffi::CString,用于处理只使用 alloc crate 的 C 字符串。

rust-analyzer 现在可以通过 rustup 获得

rust-analyzer 现在作为 Rust 工具集的一部分被包含在其中。这使得下载和访问 rust-analyzer 更加容易,并使其在更多平台上可用。如今它可以作为一个 rustup 组件使用,可以通过以下方式安装。

rustup component add rust-analyzer

此时,要运行已安装的 rustup 版本,你需要这样调用它:

rustup run stable rust-analyzer

rustup 的下一个版本将提供一个内置的代理,这样运行可执行的 rust-analyzer 就会启动相应的版本。

Cargo 改进

当在一个 Cargo 工作空间中处理相关库或二进制 crate 的集合时,你现在可以避免 crate 之间共同的字段值的重复,如共同的版本号、仓库 URL 或 rust-version。这也有助于在更新 crate 时保持这些值的同步。

在为多个目标进行构建时,你现在可以向 cargo build 传递多个 --target 选项,以便一次性构建所有这些目标。

稳定的 API

以下方法和特性的实现现在已经稳定了:

  • [future::IntoFuture]()
  • [num::NonZero*::checked_mul]()
  • [num::NonZero*::checked_pow]()
  • [num::NonZero*::saturating_mul]()
  • [num::NonZero*::saturating_pow]()
  • [num::NonZeroI*::abs]()
  • [num::NonZeroI*::checked_abs]()
  • [num::NonZeroI*::overflowing_abs]()
  • [num::NonZeroI*::saturating_abs]()
  • [num::NonZeroI*::unsigned_abs]()
  • [num::NonZeroI*::wrapping_abs]()
  • [num::NonZeroU*::checked_add]()
  • [num::NonZeroU*::checked_next_power_of_two]()
  • [num::NonZeroU*::saturating_add]()
  • [os::unix::process::CommandExt::process_group]()
  • [os::windows::fs::FileTypeExt::is_symlink_dir]()
  • [os::windows::fs::FileTypeExt::is_symlink_file]()

这些类型以前在 std::fi 中是稳定的,但现在在 corealloc 中也可用:

  • [core::ffi::CStr]()
  • [core::ffi::FromBytesWithNulError]()
  • [alloc::ffi::CString]()
  • [alloc::ffi::FromVecWithNulError]()
  • [alloc::ffi::IntoStringError]()
  • [alloc::ffi::NulError]()

这些类型以前在 std::os::raw 中是稳定的,但现在在 core::ffistd::ffi 中也可用

  • [ffi::c_char]()
  • [ffi::c_double]()
  • [ffi::c_float]()
  • [ffi::c_int]()
  • [ffi::c_long]()
  • [ffi::c_longlong]()
  • [ffi::c_schar]()
  • [ffi::c_short]()
  • [ffi::c_uchar]()
  • [ffi::c_uint]()
  • [ffi::c_ulong]()
  • [ffi::c_ulonglong]()
  • [ffi::c_ushort]()

更多详情可查看:https://github.com/rust-lang/rust/releases/tag/1.64.0


相关文章

2021-11-24

Rust 审核团队 (Moderation Team) 昨日发布公告称,他们已集体辞职且即刻生效。团队成员 Andrew Gallant 表示此举是为了抗议 Rust 核心团队 (Core Team) 不对除自己以外的任何人负责。 Andrew Gallant 在公告中写道,由于核心团队在组织

2022-09-18

将目标合并到上游的最低分类级别。但 Tier-3 目标在 Rust 发布渠道中缺乏官方编译器构建,缺乏 Rust持续集成 (CI) 保证,并迫使用户使用 nightly/unstable 的编译器构建。 David 希望将 Rust UEFI target 提升到 Tier 2,这样他们就可以

2022-09-15

将成为维护者社区的资源。 OpenSSF 曾在其今年早些时候发布的 10-Point Open Source Security Mobilization Plan 中建议,业界应该努力消除许多漏洞的根源,方法是用 Rust 和 Go 等语言替换 C 和 C++ 等非内存安全语言。

2022-07-29

经很好地进行了融合,现在在指导委员会的支持下,明年发布的 GCC 13 应该会实现初步的 Rust 支持,当然仍处于早期形式。例如,borrow checker 和其他功能仍有待解决。 这些 GCC Rust 补丁基于上游 GNU Compiler Collection 代码库重新编写

2022-02-28

rust-analyzer 项目开始于 2017 年年底(第一次提交)。当时,现有的 LSP 实现(RLS)已经为 Rust 提供了数年的 IDE 支持。虽然 RLS 确实能够很好地处理一些重要功能,但它与 IDE 向其他一些语言所提供的功能丰富程度和体验上还有较

2022-09-21

Sysinternals 的主要开发者 Mark Russinovich 在其社交账号上发布动态称,开发人员是时候停止使用 C/C++ 来启动新项目,并建议可在需要使用 non-GC 语言的场景中使用 Rust。 “说到语言,现在是时候停止用 C/C++ 启动任何新项

2022-04-03

Rust 基金会推出一个 2022 年社区资助项目,对 Rust 社区现有资金生态系统的补充;此次预算共 62.5 万美元,由 AWS、华为和谷歌捐赠。 该计划的目标在于: 支持 Rust 的维护者。“我们知道,许多人在志愿的基础上奉献了大量的

2022-02-15

Linux 内核和 Rust on Linux 的主要开发者 Miguel Ojeda 近日再向 Linux Kernel 邮件列表提交了一个新补丁 (v4),继续推进在 Linux 内核中增加对 Rust 作为第二语言支持。此举意味着对 Linux 内核驱动程序等的可选 Rust 编程支持继续成熟;Phoro

2022-07-20

Rust 团队发布了 Rust 的新版本 1.62.1,该版本解决了编译器和标准库中最近的一些回归问题,并且还缓解了 Intel SGX 上的 CPU 漏洞。 具体更新内容包括: 编译器修复了涉及impl Trait返回类型的不健全的函数强制。 编译器修复了

2022-03-18

Linux 内核和 Rust on Linux 的主要开发者 Miguel Ojeda 向 Linux Kernel 邮件列表提交了一个,继续推进在 Linux 内核中增加对 Rust 作为第二语言支持。 一些 Rust for Linux v5 的更改包括: 工具链和 alloc 已经升级到了 Rust 1.59.0。这个版本

2022-09-20

微软首席工程师 Nick Cameron 发布了一篇博客,指出了他认为现在和未来几年 Rust 将面临的十大挑战,并提出了一些初步的解决方案想法。目前,Nick Cameron 主要负责该公司 Rust 相关的工作;曾经,他还是 Rust 核心团队的成员。 Nick

2021-11-18

致力于支持 Rust 项目的独立非营利组织 Rust 基金会宣布,正式任命 Rebecca Rumbul 为该组织的执行董事兼 CEO。公告指出,这是该组织为支持 Rust 编程语言的快速创新和采用而努力迈出的重要一步。在 Rumbul 的领导下,他们将继

2022-03-24

3 月的统计信息进行数据可视化后,发现诞生于 Mozilla 的 Rust 编程语言只占 Firefox 浏览器代码的 9.9%。 Rust 语言最初由 Firefox 制造商 Mozilla 推出,由 web 领域领军人物、JavaScript 之父 Brendan Eich、Dave Herman 、Graydon Hoare 合力开发。M

2022-09-20

宣布将用 Rust 编写的插件作为其官方二进制版本的一部分发布。“经过整整一个月非常恼人的构建系统工作,我们终于可以将用 rustlang 编写的 gstreamer 插件与我们的官方二进制版本一起发布了。” 科技网站 Phoronix 指出