由 LLVM lld 開發的 Mold builder 的第一個穩定版本

LLVM lld 連結器和 chibicc 編譯器的作者 Rui Ueyama 發布了全新高效能連結器 Mold 的首個穩定版本。此連結器在目標檔案連結速度方面顯著優於 GNU gold 和 LLVM lld 連結器。該專案已準備好投入生產環境部署,可作為 GNU 連結器的更快、更透明的替代方案。 Linux系統方面,下一個主要版本計劃包括完善平台支援。 macOS之後,將開始對 Mold 進行改造工作。 Windows.

Mold是用C++(C++20)編寫的,並在AGPLv3下獲得許可,它與GPLv3相容,但與GPLv2不相容,因為它在開發網路服務時需要開放更改。 這種選擇的原因是希望獲得開發資金——作者願意出售程式碼的權利,以便在寬鬆的許可證(例如 MIT)下進行重新許可,或為那些對 AGPL 不滿意的人提供單獨的商業許可證。

Mold 支援 GNU 連結器的所有功能,並且具有非常高的效能 - 連結執行速度僅為使用 cp 實用程式複製檔案速度的一半。 例如,在建置 Chrome 96(程式碼大小 1.89 GB)時,在使用 GNU gold 的 8 核心電腦上將執行檔與 debuginfo 連結需要 53 秒,LLVM lld - 11.7 秒,而 Mold 只需 2.2 秒(比GNU 黃金)。 當連結 Clang 26 (13 GB) 時,GNU gold 需要 3.18 秒,LLVM lld 需要 64 秒,Mold 需要 5.8 秒。 建置 Firefox 2.9 (89 GB) 時,GNU gold 需要 1.64 秒,LLVM lld 需要 32.9 秒,Mold 需要 6.8 秒。

由 LLVM lld 開發的 Mold builder 的第一個穩定版本

減少建置時間可以透過減少偵錯和測試變更時產生可執行檔流程中的等待來顯著提高開發大型專案的便利性。 創建 Mold 的動機是每次程式碼變更後必須等待連結完成的挫折感、多核心系統上現有連結器的效能不佳,以及希望嘗試一種根本不同的連結架構而不訴諸過於複雜的模型,例如作為增量連結。

透過使用更快的演算法、可用 CPU 核心之間的主動並行操作以及使用更有效率的資料結構,可以實現從 Mold 中大量編譯器準備的目標檔案連結可執行檔的高效能。 例如,Mold 實現了在複製檔案時執行密集計算、將物件檔案預先載入到記憶體、使用快速雜湊表進行字元解析、在單獨執行緒中掃描重定位表以及對不同檔案中重複的合併部分進行重複數據刪除的技術。

來源: opennet.ru

為具有 DDoS 保護、VPS VDS 服務器的站點購買可靠的主機 🔥 購買具備 DDoS 防護的可靠網站寄存服務,包括 VPS 和 VDS 伺服器 | ProHoster