Mold,一種優於 GNU gold 和 LLVM lld 的現代鏈接器

LLVM lld 作曲家和 chibicc 編譯器的作者上山銳前天揭曉 很少有他的新作品的成果,並提出 新«高鏈接器模具»的第一個穩定版本, 它的突出之處在於遠遠領先於 GNU gold 和 LLVM lld 目標文件鏈接器的鏈接率。

目前,該項目 考慮為生產部署做好準備 它可以用作 Linux 系統上 GNU 鏈接器的更快透明替代品。

關於模具

支持 GNU 鏈接器的所有功能 並且它具有非常高的性能,因為它創建的鏈接僅是使用 cp 實用程序簡單複製文件的速度的兩倍。

例如,在編譯 Chrome 96(代碼大小 1,89 GB)時,使用 GNU Gold 在 8 核計算機上鍊接可執行文件與 debuginfo 需要 53 秒,LLVM lld 需要 11,7 秒,而 Mold 僅需要 2,2 秒(比 GNU gold 快 26 倍) .

此外,鏈接 Clang 13 (3,18 GB) 時,GNU gold 需要 64 秒,LLVM lld 需要 5,8 秒,Mold 需要 2,9 秒,鏈接 Firefox 89 (1,64 GB) 時,GNU gold 需要 32,9, 6,8 秒,LLVM lld 需要 1,4 秒和模具需要 XNUMX 秒。

Mold 1.0 是高速鏈接器的第一個穩定且可用於生產的版本。 在基於 Linux 的系統上,它應該“可以正常工作”,作為大多數用戶程序默認 GNU 鏈接器的更快直接替代品。 如果您正在創建一個需要很長時間鏈接的大型可執行文件,則值得測試模板以查看它是否可以縮短您的編譯時間。 該模具易於構建和使用。

這樣, 減少編譯時間顯著提高開發大型項目的便利性 通過減少調試和測試更改時可執行文件生成過程中的等待時間。

創建 Mold 的動機是每次代碼更改後必須等待鏈接完成的煩惱, 以及多核系統中現有鏈接器的低效率以及希望測試完全不同的鏈接架構而不訴諸不必要的複雜模型(例如增量鏈接)。

通過使用更快的算法、可用 CPU 內核之間的主動並行化操作以及更高效地使用數據結構,可以在 Mold 中從大量編譯器準備好的目標文件中鏈接可執行文件的高性能。

例如,Mold 實施了一種技術來執行計算密集型並發文件複製、主動將目標文件加載到內存中、在解析字符時使用快速哈希表、按單獨的序列掃描重定位表以及對不同文件中重複的部分進行重複數據刪除。

最後需要注意的是,Mold 用 C ++ 20 編寫,並在 AGPLv3 許可下分發, 它符合 GPLv3,但不符合 GPLv2,因為它在開發網絡服務時需要更改開放性。 這種選擇的解釋是希望獲得開發資金:作者準備出售代碼的權利,以在 MIT 等許可許可下重新許可,或者為那些不滿意的人提供單獨的商業許可AGPL。

至於 未來計劃 他們有,據說目前 為 macOS 開發模具  (雖然這個1.0版本的支持已經添加了,但仍被認為是alpha),一旦完成,將在Mold 2.0版本中發布支持 之後提到它將在適用於 Windows 的模具中工作 並將在 3.0 版本中實現。

Si 你想了解更多關於這個項目或 你想編譯它以便能夠在你的系統上使用它,你可以檢查細節和/或編譯說明 在下面的鏈接中。


發表您的評論

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

*

*

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