AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

Rust 1.9 改善了错误处理机制并提升了编译性能

  • 2016-06-15
  • 本文字数:742 字

    阅读完需:约 2 分钟

最近发布的Rust 1.9 增加了一个新的异常处理API,让开发者在处理跨线程异常传播的时候能够增加更多的控制。此外新版本还提升了变量判等时的编译性能。

正如前面所提到的, std::panic增加了一个新的catch_unwindAPI,Rust 使用它来处理异常,同时允许开发者更好地控制由异常触发的堆栈展开过程。Rust 在这种场景下的哲学是“快速失败”,也就是在展开堆栈之后停止唤起的线程,但是其他线程不受影响,可以继续运行,直到它们试图与出错的线程通信为止,只有当需要与出错的线程通信时才需要做一些恢复工作。通过使用catch_unwind,开发者能够捕获 panic 并将其转换成失败线程中的普通错误:

复制代码
let result = panic::catch_unwind(|| {
panic!("oh no!");
});
assert!(result.is_err());

该功能在下面两种场景中非常有用:

  • 将 Rust 嵌入其他语言的时候。在这种情况下 unwinding 很有可能会在语言边界处产生分割故障。
  • 当创建类库来管理线程的时候。在这种情况下,最好是将错误通知到客户端而不是停止失败的线程。

值得注意的是,堆栈展开目前是 Rust 处理 panic 的唯一策略,但是未来这种情况会改变。确实,通过一种新的“终止”策略从而避免堆栈展开的成本可能更可取。

新的Rust 版本还提升了两个变量判等时的编译性能。 PR 的提交者 Markus Westerlind 声称在某些情况下提升非常明显,复杂性从 O(n!) 降低到了 O(n)。正如 Westerlind 在 Reddit 上所解释的,尽管 n 通常都非常小,但是代码中细微的差别都有可能使得 n 膨胀。在这些场景下,恰如 Westerlind 的 combine 库所展示的,Rust1.9 在性能上有极大的提升。

此外,Rust1.9 还提升了许多库函数的稳定性,包括网络、编码以及指针处理函数。

如果你想了解更多信息可以查看 Rust1.9 的官方声明

查看英文原文 Rust 1.9 Improves Error Handling and Compile Time

2016-06-15 19:001660
用户头像

发布了 321 篇内容, 共 124.0 次阅读, 收获喜欢 19 次。

关注

评论

发布
暂无评论
发现更多内容

如何“对抗”听众的短时记忆

将军-技术演讲力教练

共享

mtfelix

28天写作

数字人民币生态体系进一步完善 试点场景加速拓展

CECBC

2021年度人工智能最佳产品TOP10!百度飞桨EasyDL再获业界认可

百度大脑

人工智能

创业团队组织建设-跨部门沟通

wood

创业 沟通 28天写作

Python Qt GUI设计:5种事件处理机制(提升篇—3)

不脱发的程序猿

Python qt PyQt GUI设计 事件处理机制

架构实战营4期-第1周作业

周念

「架构实战营」

Hoo虎符研究院 | 币圈后浪——KBOX

区块链前沿News

虎符 Hoo虎符 Hoo 虎符交易所

AI安全领域的“雨山机车大赛”,改变了什么?

脑极体

区块链电子签章平台搭建,区块链电子合同系统

电微13828808271

Hoo虎符研究院 | 区块链简报 20211206 期

区块链前沿News

虎符 Hoo虎符

数研所已实现在数字人民币中积极探索区块链应用

CECBC

同程旅行 IAST 落地实践

火线安全

DevOps DevSecOps 漏洞扫描 漏洞分析

【AI最前线】精准优质-资讯|分享|热议第43期

百度大脑

人工智能

非专业的系统安全规范

张老蔫

28天写作

全员客户成功

boshi

随笔杂谈

架构实战营 - 微信业务架构 & 学生管理系统

阿门阿前一颗葡萄树๑

架构实战营 #架构实战营 「架构实战营」

从航海贸易到元宇宙,从公司制到DAO

CECBC

xxxx

guangbao

模块一作业

撿破爛ぃ

「架构实战营」

实用机器学习笔记五:探索性数据分析

打工人!

机器学习 学习笔记 12月日更 李沐 实用机器学习

vue单页面和多页面的区别?

CRMEB

Python Qt GUI设计:QTabWidget、QStackedWidget和QDockWidget容器控件类(提升篇—2)

不脱发的程序猿

Python qt PyQt GUI设计 容器控件类

【技术分享】DOSM Web项目优化分析 & 解决方案

云智慧AIOps社区

TypeScript 之映射类型

冴羽

JavaScript typescript 翻译 大前端

星环科技分布式文件系统TDFS大揭秘(上)

星环科技

大数据 计算与存储

IT 好文&好课分享

hackstoic

5.《重学JAVA》--编码规范

杨鹏Geek

Java 25 周年 28天写作 12月日更

模块一学习总结

Only

「架构实战营」

流上机器学习,星环科技Sophon Base助力海洋石油富岛工艺监测智能化

星环科技

被寄予厚望的区块链在数据交易中能发挥的作用是什么?

CECBC

Rust 1.9改善了错误处理机制并提升了编译性能_语言 & 开发_Sergio De Simone_InfoQ精选文章