写点什么

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

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

关注

评论

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

活动报名|9月24日 Apache Flink Meetup · 北京站,Flink 1.16 新版本发布!

Apache Flink

大数据 flink 流计算 活动 实时计算

以百分点大数据操作系统(BD-OS)为例 解读ToB产品架构设计的挑战及应对方案

百分点科技技术团队

一条sql了解MYSQL的架构设计

京东科技开发者

MySQL 数据库 架构 innodb 存储引擎

还不会搭建自己的产品帮助中心?来看看这个

Baklib

ESP32-C3入门教程 基础篇(五、RMT应用 — 控制SK6812全彩RGB 灯)

矜辰所致

ESP32-C3 9月月更 RMT

带你了解CANN的目标检测与识别一站式方案

华为云开发者联盟

人工智能 目标检测 CANN 企业号九月金秋榜 目标识别

clickhouse 索引、索引局限与解决方案

水滴

Clickhouse 索引 解决方案 稀疏索引

《2022 社交泛娱乐出海白皮书》发布,最全出海破局指南

融云 RongCloud

社交 白皮书 泛娱乐

中国移动政企科创专题:耕“云”不辍,厚积薄发

极客天地

SPI机制是什么,懂了

知识浅谈

spi 9月月更

EasyNLP玩转文本摘要(新闻标题)生成

阿里云大数据AI技术

自然语言处理 深度学习 开源技术 文本检测 企业号九月金秋榜

一起瓜分20万奖金!第三届火焰杯软件测试大赛开始公开选拔!

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

测试

前端必读:如何在 JavaScript 中使用SpreadJS导入和导出 Excel 文件

葡萄城技术团队

JavaScript Excel canvas 数据导入 数据导出

一文读懂数字化转型中的数据存储

元年技术洞察

数据库 数据中台 数据治理

直播预告 | PolarDB-X 动手实践系列——PolarDB-X 的表组与分区变更

阿里云数据库开源

MySQL 数据库 阿里云 开源 PolarDB-X

后疫情时代,远程办公发展趋势如何?

Baklib

协同办公 文档管理

Hinton等谈深度学习十年;PyTorch落地Linux基金会的影响;机器学习界的“GitHub”|AI系统前沿动态

OneFlow

人工智能

大数据调度平台Airflow(四):Airflow WebUI操作介绍

Lansonli

airflow 9月月更

从零到一了解APP速度测评

百度Geek说

App 网络 企业号九月金秋榜 速度测评

堡垒机全称是什么?是运维安全审计系统吗?

行云管家

网络安全 堡垒机

百草味推出“潮卤江湖”系列新品 聚焦地域风味创新

E科讯

百分点大数据技术团队:Cesium技术在智慧应急行业的应用

百分点科技技术团队

Baklib|7步教你写出实用的在线产品手册

Baklib

产品 产品文档 产品手册 在线协作

依赖项安全检测新利器:Scorecard API

SEAL安全

开源项目 开源安全 依赖项管理 开源组件 企业号九月金秋榜

“易+”开源 | 简单可信赖,GameSentry 正式开源

网易智企

开源 安全测试

反诈骗要卷起来!隐私计算助攻反诈行动把握主动权

Jessica@数牍

数据安全 隐私计算 反欺诈

PostgreSQL逻辑复制解密

京东科技开发者

数据库 postgresql 数据迁移 WAL 逻辑复制

本周四晚19:00知识赋能第八期第2课丨ArkUI自定义组件

OpenHarmony开发者

OpenHarmony

国民粮油品牌益海嘉里首个天猫超级品牌日交出完美答卷

推动零信任加速落地应用 天翼云为企业铸牢安全基石

极客天地

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