限时领|《AI 百问百答》专栏课+实体书(包邮)! 了解详情
写点什么

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:001786
用户头像

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

关注

评论

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

redis实现分布式锁(一)

zarmnosaj

10月月更

2022年10月中国数据库排行榜:达梦冲刺IPO热度不减,PolarDB立足创新夺锦才

墨天轮

数据库 opengauss tdsql TiDB 国产数据库

Kafka消费组/者协调器的介绍

石臻臻的杂货铺

Kafk 10月月更

如何掌握“看见数据”的魔力?

博文视点Broadview

CentOS下搭建Gitea-自己的git服务器

麦洛

git Gitea

年度大促将至,企业如何进行性能压测

阿里巴巴云原生

阿里云 云原生 性能压测 PTS

自定义注解判断参数为空

派大星

redis实现分布式锁(二)

zarmnosaj

10月月更

推荐|海泰信创浏览器安全解决方案 全面适配安全可靠

电子信息发烧客

长安链源码分析之网络模块 net-liquid(3)

【荣耀云调试FAQ】一个帐号可以同时使用多部手机吗?

荣耀开发者服务平台

开发者 手机 安卓 荣耀 honor

前端必会手写题总结

helloworld1024fd

JavaScript

STM32 HAL库串口同时收发,接收卡死?

矜辰所致

串口 STM32L051 10月月更

保10万涨薪、保Offer、保大厂,1V1私教服务上线啦!

霍格沃兹测试开发学社

保10万涨薪、保Offer、保大厂,1V1私教服务上线啦!

测吧(北京)科技有限公司

测试

几个你必须知道的React错误实践

xiaofeng

React

React-hooks+TypeScript最佳实战

xiaofeng

React

推荐|海泰政务移动办公系统密码应用解决方案 打造移动办公安全

电子信息发烧客

欧美开源法案频出,你准备好了吗?

安势信息

出海 #开源 SBOM 软件供应链安全 开源合规

企业云安全的6个最佳实践

HummerCloud

10月月更

Gartner 权威解读: SBOM 采用率将于2025年达到60%

SEAL安全

DevSecOps Gartner SBOM 软件供应链安全

经常被问到的react-router实现原理详解

夏天的味道123

React

JS继承有哪些,你能否手写其中一两种呢?

helloworld1024fd

JavaScript

5个技巧让CIO最大化提升IT项目投资回报率

雨果

CIO ROI

利器| Cypress 强大全新的 Web UI 测试框架应用尝鲜

霍格沃兹测试开发学社

哪些数据类岗位不容易失业?

雨果

开发数据 数据科学 数据工程师

安势清源SCA助力超大规模高科技企业加速开源风险治理

安势信息

开源 腾讯 SCA SBOM 软件供应链安全

解React框架核心原理

夏天的味道123

React

Kafka消费者客户端心跳请求

石臻臻的杂货铺

Kafk 10月月更

如何将 SAP Business Application Studio 里开发的 Java 应用部署到 SAP BTP 上

汪子熙

云原生 Cloud 云平台 SAP 10月月更

人人能读懂redux原理剖析

夏天的味道123

React

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