Rust 1.68.0 现已发布

1.68.0 稳定版中有什么:

Cargo 的稀疏协议

Cargo 的“稀疏”注册协议已经稳定,可以读取 crates 的索引,以及用于在 crates.io 注册中心发布的的基础设施。

之前的 git 协议(现在仍然是默认协议)是克隆一个存储库,该存储库会索引注册表中所有可用的 crates ,但这已经开始达到扩展的最大限制,以至于在更新该存储库时会出现明显的延迟。

新协议应该可以在访问 crate 时提供明显的性能改进。

要在 crates.io 中使用稀疏协议,请设置环境变量 CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse 

或编辑 .cargo/config.toml 文件,添加:

[registries.crates-io]
protocol = "sparse"

目前 Rust 团队 计划在几个月后,Cargo 的稀疏协议成为 Rust 1.70.0 版本中 crates.io 的默认协议。

有关更多信息,请参阅 Inside Rust 博客上的公告 ,以及RFC 2789和 Cargo Book 中的文档

本地 Pin 建设

新的 pin! 宏从 T 表达式构造 Pin<&mut T> ,在本地状态中匿名捕获。通常称为堆栈固定,但“堆栈”也可以是 async fn 或块的捕获状态。

这个宏类似于一些 crate,比如 tokio::pin! ,但是标准库可以利用 Pin 内部结构和临时生命周期扩展来获得更像表达式的宏。

fn block_on<F: Future>(future: F) -> F::Output {
    let waker_that_unparks_thread = todo!();
    let mut cx = Context::from_waker(&waker_that_unparks_thread);
    // Pin the future so it can be polled.
    let mut pinned_future = pin!(future);
    loop {
        match pinned_future.as_mut().poll(&mut cx) {
            Poll::Pending => thread::park(),
            Poll::Ready(result) => return result,
        }
    }
}

在这个例子中,原来的 future 将被移动到临时本地,由新的 pinned_future 引用,类型为 Pin<&mut F>

默认 alloc 错误处理器

当 Rust 中的分配失败时, Box::newVec::push 之类的 API 无法指示该失败,因此需要采取一些不同的执行路径。当使用 std crate 时,程序将打印到 stderr 并中止。

从 Rust 1.68.0 开始,包含 std 的二进制文件将继续具有此行为。不包含 std 仅包含 alloc 的二进制文件现在将在分配失败时 panic! 。如果需要,可以通过 #[panic_handler] 进一步调整。

将来, std 的行为也可能会更改,以匹配 alloc -only 的二进制文件行为。

稳定的 API

Other changes  其他改动

Rust 中的 Android 平台支持现在以 NDK r25 为目标,这对应于支持的最低 API 级别 19 (KitKat)。

查看 Rust CargoClippy中发生的所有变化

 

更新公告:https://blog.rust-lang.org/2023/03/09/Rust-1.68.0.html

优秀的个人博客,低调大师

微信关注我们

原文链接:https://www.oschina.net/news/232078/rust-1-68-released

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。