將 Mercurial 遷移到 Python 3 的代價可能是一系列意外錯誤。

版本控制系統維護員 水銀 讓我失望 全部的 致力於將專案從 Python 2 轉移到 Python 3。儘管事實上第一次移植嘗試是在 2008 年進行的,並且在 3 年開始加速適應 Python 2015,但使用 Python 3 的完整能力直到最近才實現Mercurial 5.2的分支。

關於 Python 3 連接埠穩定性的預測令人失望。 特別是,預計幾年後程式碼中會出現隨機錯誤,因為測試並未覆蓋 100% 的程式碼庫,而且許多問題在靜態分析期間是不可見的,僅在運行時出現。 此外,許多第三方附加元件和擴充功能仍未翻譯為 Python 3。
由於在移植過程中決定逐步將程式碼調整為Python 3,同時保持對Python 2 的支持,因此程式碼中包含了許多將Python 2 和3 結合在一起的hack,在對Python 2 的支持結束後,必須將其清理掉。

在評論Python 3 的情況時,Mercurial 維護者認為,在沒有與開發人員相關的突破性改進的情況下,決定推廣破壞互通性的Python 3 並將其強加為新的、更正確的語言,是一個很大的錯誤,導致對社區造成極大傷害,這就是大型專案不需要這樣做的一個例子。 Python 3 的發布並沒有逐步建立功能並允許逐步自訂應用程序,而是迫使開發人員重寫程式碼並花費資源維護 Python 2 和 Python 3 的單獨分支。直到 Python 3.0 發布七年後, Python 3.5 引入了一些功能來平滑過渡過程並確保相同的程式碼庫同時運行Python 2 和Python 3。

來源: opennet.ru

添加評論