Portage 3.0穩定版已經發布

開發商近期 誰負責包管理系統 波蒂奇 (在 Gentoo Linux 發行版中) 宣布發布3.0版本穩定版。

其中, 主要的新穎性 這個新分支的提出,是長期開展的工作 過渡到 Python 3 並終止對 Python 2.7 的支持 (這件事已經被預見到了很長一段時間,因為這個分支現在已經有幾個月正式不受支持了)

我們有好消息! Gentoo Portage 項目最近穩定了包管理器的 3.0 版本。

什麼是新的? 好吧,Portage 的第三個版本取消了對 Python 2.7 的支持,這是 Gentoo Python 項目在整個 2020 年在 Gentoo 主存儲庫中持續進行的工作。

除了停止支持 Python 2.7 之外, 另一個重大變化 Portage 3.0 這個新的穩定分支有何突出之處 是包含各種優化 這允許 使計算速度更快(50% 到 60% 之間) 與確定依賴性相關。

有趣的是,一些開發人員建議用 C/C++ 或 Go 重寫依賴解析代碼來加快工作速度,但他們花了很大的努力才解決了現有的問題。

對現有代碼的分析表明,大多數時候 計算 專門調用函數use_reduce和catpkgsplit 帶有一組重複的參數(運行這項工作的人提到,例如,catpkgsplit 函數被調用了 1-5 萬次)。

檢測到問題後,提及以加快計算速度, 應用緩存 通過字典來獲取這些函數的結果。

此外,由於用戶提供了補丁,升級到最新版本的Portage可以大大加快依賴計算50-60%。 我們很高興看到我們的社區參與我們的軟件! 有關更多詳細信息,請查看提供該補丁的社區成員發布的 Reddit 帖子。 使用 Gentoo 保持健康並繼續烹飪!

除此之外 還指出 lru_cache 內置函數是最佳的 用於這項緩存工作,但它僅在 Python 3.2 版本中可用。

為了向後兼容,還添加了一個存根來替換 lru_cache,但是 Portage 2.7 中終止對 Python 3.0 支持的決定大大簡化了任務,並允許我們不需要這一層。

我花了一些時間使用 cProfile 和 vmprof 對 Portage 進行分析,以了解哪些功能佔用了最多的時間。 我還從分析器輸出中生成了一些火焰圖,如下所示。 我注意到有些功能,比如 use_reducecatpkgsplit,使用相同的參數非常頻繁地調用(例如,1 到 5 萬次,對於 catpkgsplit)。 我做了一些實驗,在字典中緩存這些函數的輸出,在看到一些不錯的加速後,我向 Portage 開發人員列表提交了一個補丁。 有人建議使用 python 內置lru_cache 函數裝飾器代替,但這僅在 Python 3.2 及更高版本中可用。

另一方面,緩存的使用使 ThinkPad X220 上的“emerge -uDvpU –with-bdeps = and @world”操作從 5 分 20 秒減少到 3 分 16 秒 (63%)。 對其他系統的測試顯示性能至少提高了 48%。

準備更改的開發人員也嘗試實現原型 依賴解析代碼 在 C++ 或 Rust 中, 但事實證明這個任務太艱鉅了 因為它需要移植大量的代碼,同時,結果是否值得值得懷疑。

終於 如果您想了解更多 在這個穩定分支的發行說明上,您可以查看詳細信息 在下面的鏈接中。


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責資料:AB Internet Networks 2008 SL
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。