当前位置:企业应用软件行业动态 → 正文

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

责任编辑:editor006 作者:Sergio De Simone |来源:企业网D1Net  2016-06-16 16:25:02 本文摘自:INFOQ

最近发布的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

关键字:线程性能库函数

本文摘自:INFOQ

x Rust 1.9改善了错误处理机制并提升了编译性能 扫一扫
分享本文到朋友圈
当前位置:企业应用软件行业动态 → 正文

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

责任编辑:editor006 作者:Sergio De Simone |来源:企业网D1Net  2016-06-16 16:25:02 本文摘自:INFOQ

最近发布的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

关键字:线程性能库函数

本文摘自:INFOQ

电子周刊
回到顶部

关于我们联系我们版权声明隐私条款广告服务友情链接投稿中心招贤纳士

企业网版权所有 ©2010-2024 京ICP备09108050号-6 京公网安备 11010502049343号

^