Rust 1.74.0 发布
Rust 1.74.0 稳定版已正式发布,主要带来以下变化:
通过 Cargo 进行 Lint 配置
正如 RFC 3389 所提议,Cargo.toml
manifest 现在支持一个[lints]
表来配置来自编译器和其他工具的 lints 的报告级别(禁止、拒绝、警告、允许)。因此,不要使用-F
/-D
/-W
/-A
设置 RUSTFLAGS(这会影响整个构建过程),或者使用 crate-level 的属性,例如:
#![forbid(unsafe_code)] #![deny(clippy::enum_glob_use)]
现在可以将这些写入 package manifest 中以供 Cargo 处理:
[lints.rust] unsafe_code = "forbid" [lints.clippy] enum_glob_use = "deny"
这些也可以在[workspace.lints]
表中配置,然后像许多其他工作区设置一样由[lints] workspace = true
继承。在决定哪些 crates 需要重建时,Cargo 还将跟踪这些设置的更改。
有关详细信息,可参阅 Cargo 参考手册中的lints
和workspace.lints
部分。
Cargo Registry Authentication
此版本中还包含两个相关的 Cargo 功能:credential providers 和 authenticated private registries。
Credential providers 允许配置 Cargo 如何获取注册表的凭证。Built-in providers 用于 Linux、macOS 和 Windows 上特定于操作系统的安全秘密存储。此外,可以编写自定义 providers 来支持存储或生成令牌的任意方法。使用安全的 credential provider 可以降低注册表令牌泄漏的风险。
Registries 现在可以选择要求对所有操作进行身份验证,而不仅仅是发布。这使得 private Cargo registries 能够提供更安全的 crates 托管。使用 private registries 需要配置 credential provider。
有关更多信息,可参阅 Cargo 文档。
Projections in opaque return types
有关返回“return type cannot contain a projection or Self that references lifetimes from a parent scope”错误信息的问题现在已经解决。编译器现在允许在 opaque return types 中提及Self
和关联类型,例如async fn
和-> impl Trait
。即使你对"projection"之类的术语一无所知,这种功能也能让 Rust 更接近你所期望的工作方式。
不过该功能目前有一个不稳定的 feature gate,因为它的实现最初没有正确处理 captured lifetimes。有关更多技术细节,可参阅 stabilization pull request。示例:
struct Wrapper<'a, T>(&'a T); // Opaque return types that mention `Self`: impl Wrapper<'_, ()> { async fn async_fn() -> Self { /* ... */ } fn impl_trait() -> impl Iterator<Item = Self> { /* ... */ } } trait Trait<'a> { type Assoc; fn new() -> Self::Assoc; } impl Trait<'_> for () { type Assoc = (); fn new() {} } // Opaque return types that mention an associated type: impl<'a, T: Trait<'a>> Wrapper<'a, T> { async fn mk_assoc() -> T::Assoc { /* ... */ } fn a_few_assocs() -> impl Iterator<Item = T::Assoc> { /* ... */ } }
Stabilized APIs
core::num::Saturating
impl From<io::Stdout> for std::process::Stdio
impl From<io::Stderr> for std::process::Stdio
impl From<OwnedHandle> for std::process::Child{Stdin, Stdout, Stderr}
impl From<OwnedFd> for std::process::Child{Stdin, Stdout, Stderr}
std::ffi::OsString::from_encoded_bytes_unchecked
std::ffi::OsString::into_encoded_bytes
std::ffi::OsStr::from_encoded_bytes_unchecked
std::ffi::OsStr::as_encoded_bytes
std::io::Error::other
impl TryFrom<char> for u16
impl<T: Clone, const N: usize> From<&[T; N]> for Vec<T>
impl<T: Clone, const N: usize> From<&mut [T; N]> for Vec<T>
impl<T, const N: usize> From<[T; N]> for Arc<[T]>
impl<T, const N: usize> From<[T; N]> for Rc<[T]>
这些 API 现在在 const contexts 中是稳定的:
兼容性说明
- 正如之前所宣布的,Rust 1.74 提高了对 Apple 平台的要求。现在最低版本是:
- macOS:10.12 Sierra(2016 年首次发布)
- iOS:10(2016 年首次发布)、
- tvOS:10(2016 年首次发布)
其他变化
查看 Rust、Cargo 和 Clippy 中发生的所有变化。
详情可查看官方公告。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Spring Framework 6.1 正式 GA
Spring Framework 6.1 已正式发布。 主要变化 支持 JDK 21 LTS 支持虚拟线程 支持恢复 JVM Checkpoint 引入「资源生命周期管理」 引入「数据绑定和验证」 新增RestClient和JdbcClientAPI 公告写道,就 HotSpot JVM 上的高效部署选项而言,Spring Framework 6.1 与 Project CRaC 紧密集成以实现 JVM checkpoint 部署:查看JVM Checkpoint Restore。此外,Spring 用户还可以采用 JDK 21 中最新的 AppCDS 功能,与 OpenJDK 的 Project Leyden 预先保持一致。 此外,Spring Framework 6.1 在运行时方面针对 JDK 21 和 Jakarta EE 10 上提供了一级支持,同时保留了 JDK 17 和 Jakarta EE 9 基线。Spring 还通过精细的元数据推理跟踪 GraalVM for JDK 21 的演变,同时暂时保持与 GraalVM 22.3 的兼容性。 文档显示,Spring 6.1...
- 下一篇
FydeOS v17.1 发布,集中修复 Linux 子系统,增加本土化优化
FydeOS v17.1 是对 FydeOS v17 Nostalgic Reflections 的一个集合功能修复及维护版本。在此次的发布里,值得一提的修改的有: 集中修复了 Linux 子系统存在的一些问题: 修复了某些 Linux 程序无法展现 GUI 的问题 修复了某些 Linux 程序在系统休眠唤醒后崩溃的问题 修复了某些常用 Linux 程序(比如 WPS Linux)无法通过双击 .deb 软件包安装的依赖缺失 优化了 Linux 镜像内的源地址;默认指向部署在中国大陆的阿里云镜像 其它本土化优化,包括中文字体和系统语言等 如果你是从早期版本的 FydeOS 通过 OTA 升级到此 v17.1 版本,以上 Linux 子系统的优化并不会通过升级系统而生效;你需要删除 Linux 环境并重新开启才能获得。 修复了摄像头无法在某些安卓应用中开启的问题 修复了在系统内添加打印机可能会报错的问题 优化了「提交反馈」的功能 为多启动安装的 FydeOS 增加了「禁用多分区下的媒体文件自动扫描以获得更长的电池续航时间」的功能 在hwtuner中添加了更新 rEFInd 二进制文件以及...
相关文章
文章评论
共有0条评论来说两句吧...