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

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>
      主站蜘蛛池模板: 平江县| 灵璧县| 建瓯市| 江城| 和静县| 苍南县| 岫岩| 镇原县| 久治县| 志丹县| 呈贡县| 永福县| 绥化市| 宝山区| 镇宁| 宜州市| 盐池县| 灵丘县| 荣成市| 舟曲县| 栾川县| 子洲县| 泾源县| 集贤县| 彭阳县| 寿阳县| 伊吾县| 望谟县| 吴堡县| 屏山县| 临武县| 承德市| 巩留县| 潮安县| 南京市| 长治市| 东丰县| 上林县| 宜君县| 廊坊市| 同仁县|