精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

Rust 1.9改善了錯誤處理機制并提升了編譯性能

責任編輯:editor006

作者:Sergio De Simone

2016-06-16 16:25:02

摘自:INFOQ

最近發布的Rust 1 9增加了一個新的異常處理API,讓開發者在處理跨線程異常傳播的時候能夠增加更多的控制。Rust1 9還提升了許多庫函數的穩定性,包括網絡、編碼以及指針處理函數。

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

鏈接已復制,快去分享吧

企業網版權所有?2010-2024 京ICP備09108050號-6京公網安備 11010502049343號

  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 梁平县| 安义县| 成武县| 无锡市| 如东县| 澄迈县| 丹巴县| 全南县| 嘉荫县| 青海省| 乌恰县| 清丰县| 红河县| 珲春市| 门头沟区| 青神县| 酒泉市| 手机| 循化| 遂溪县| 伊吾县| 宣武区| 同江市| 吉林市| 武强县| 新疆| 确山县| 河南省| 正蓝旗| 彰化县| 长沙市| 徐水县| 临湘市| 衡水市| 随州市| 雅江县| 长宁县| 元谋县| 黔西县| 陵水| 阿勒泰市|