写点什么

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

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

关注

评论

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

Cocos creatorの摇杆操控运动

空城机

Cocos 5月月更

《卡片笔记写作法》:用卡片积累思考

郭明

极客训练营模块一作业

Geek__猫猫头

JavaWeb MyBatis

Emperor_LawD

mybatis javaWeb 5月月更

数据库连接池 -Druid 源码学习(八)

wjchenge

Druid 数据库连接池

linux之grep使用技巧

入门小站

Linux

五、浅谈容器逃逸

穿过生命散发芬芳

5月月更 容器逃逸

学生管理系统架构设计

Justin1024

druid 源码阅读 8——过一下流程图的init

张大彪

微信业务架构图和学生管理系统架构设计

Geek_7a789a

Tomcat安全优化

jiangxl

tomcat Java web

开启Tomcat管理注主页功能

jiangxl

tomcat

⭐万字长篇超详细的图解Tomcat中间件方方面面储备知识⭐

jiangxl

tomcat Java web

Redis Cluster集群收缩主从节点详细教程

jiangxl

【架构训练营】模块一作业

知北游

架构实战营-模块1作业

Gavin.Yang

正则表达式知识点梳理

真嗣

正则表达式

微信业务架构&学生管理系统架构

intelamd

架构实战营 模块一作业

Gor

【LeetCode】链表的中间结点Java题解

Albert

LeetCode 5月月更

基于Redis6.2.6版本部署Redis Cluster集群

jiangxl

JAVA程序对应不同的部署环境针对配置文件如何管理

jiangxl

Java tomcat

实现 LRU 缓存算法

Se7en

架构训练营 模块一作业

小马

「架构实战营」

贝叶斯网络

5月月更

在线文本列表差集计算工具

入门小站

工具

在线HTML转CSV工具

入门小站

工具

通过JConsoler监控Tomcat的JVM内存

jiangxl

5月25日,阿里云开源 PolarDB-X 将迎来重磅升级发布

阿里云数据库开源

开源 开源数据库 国产数据库 PolarDB-X 数据库·

Linux环境下部署Jpress大型博客网站

jiangxl

架构实战营 7 期「模块一」为何架构设计能力难以提升

Steve_bot

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