写点什么

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

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

关注

评论

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

Topaz Gigapixel AI for Mac(照片放大工具) v7.3.0激活版

Mac相关知识分享

比亚迪王传福对话九牧林孝发,一场火出圈的“科技跨界”

Alter

汽车行业看板实战培训顺利举行

雅菲奥朗

看板 价值流 VSM

Rust下SM4/AES/RSA加解密

dlzht

rust rsa AES SM4 RustCrypto

Topaz Video AI for mac(视频增强和修复工具) 4.1.0激活版

Mac相关知识分享

Marvelous Designer 11 for Mac(3D服装设计软件) v6.1.547中文激活版

Mac相关知识分享

spss统计软件:IBM SPSS Statistics 27 (Win/Mac) 中文激活版

你的猪会飞吗

spss数据统计 SPSS26破解版 spss统计软件

硅纪元AI应用推荐 | 5分钟搞定会议纪要,一键生成脑图

硅纪元

通义听悟

开启SRE技术新篇章:SRE Foundation认证培训圆满结课

雅菲奥朗

SRE SRE培训 SRE考试 SRE认证

使用 Elasticsearch Python SDK 查询 Easysearch

极限实验室

Python elasticsearch easysearch

KORG Software VOX Super Continental for mac(组合风琴音乐插件)

Mac相关知识分享

IDEA插件—激活JRebel

源字节1号

小程序 开源 前端 后端

IoTDB 分段查询语句详解:GROUP BY + 时序语义

Apache IoTDB

游戏直播APP开发:如何实现低成本解决方案

软件开发-梦幻运营部

ByteSRC奖励再升级,抖音单个漏洞奖金提升至20万元

科技热闻

智能运维新课程丨雅菲奥朗“可观测性国际认证课程”圆满结束

雅菲奥朗

可观测性 Observability SRE培训 SRE考试 SRE认证

业务连续性专题:一致性和并发度的平衡

agnostic

高并发 一致性

行人、司机和“萝卜”的城市路权争夺战,谁能赢?

脑极体

AI

支出这么多?收入从何而来

源字节1号

小程序 开源 前端 后端

Loopback for Mac(mac虚拟音频设备) v2.4.2激活版

Mac相关知识分享

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