由 LLVM lld 開發的 Mold 3.0 連結器發布

Mold 3.0 連結器已經發布,可以作為 GNU 連結器的更快、更透明的替代品。 LinuxMold 專案由 LLVM lld 連結器的作者 Rui Ueyama 開發。 Mold 的主要特徵是其極高的連結速度,顯著優於 GNU gold 和 LLVM lld 連結器(Mold 的連結速度僅為使用 cp 工具複製檔案的一半)。程式碼使用 Rust 編寫,並以 MIT 許可證發布。

縮短連結時間能夠顯著提升大型專案的可用性,因為它可以減少偵錯和測試變更時產生可執行檔所需的等待時間。 Mold 的創建動機源自於以下幾點:每次程式碼變更後都必須等待連結完成,這令人沮喪;現有連結器在多核心系統上的表現不佳;以及希望嘗試一種截然不同的連結架構,而無需採用增量連結等過於複雜的模型。

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

Mold 3.0 分支的顯著特徵是將程式碼庫從 C++ (C++20) 重寫為 Rust。 Mold 3.0 可以無縫取代 Mold 2.42.1(最後一個 C++ 版本),並支援所有先前可用的選項和目標架構。遷移到 Rust 使得專案能夠避免處理損壞的目標檔案時可能出現的問題——在 C++ 版本因越界存取而崩潰的情況下,Rust 實作會在邊界檢查階段停止。 Rust 實作的效能與 C++ 版本相當。

除了遷移到 Rust 之外,開發 3.0 分支的一個關鍵目標是提高與 GNU ld 的兼容性,並使該專案能夠用作發行版中的預設連結器。 Linux建置系統已替換為 Cargo,測試系統已替換為 cargo test(取代了 ctest)。 oneTBB 庫已從依賴項移除。

來源: opennet.ru

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