Az LLVM lld által kifejlesztett Mold builder első stabil kiadása

Rui Ueyama, az LLVM lld linker és a chibicc fordító szerzője bemutatta az új, nagy teljesítményű Mold linker első stabil kiadását, amely észrevehetően megelőzi a GNU gold és LLVM lld linkereket az objektumfájlok összekapcsolási sebességét tekintve. A projekt készen áll az éles üzembe helyezésre, és Linux rendszereken a GNU linker gyorsabb átlátszó helyettesítőjeként használható. A következő nagyobb kiadás tervei között szerepel a macOS platform támogatásának készenlétbe helyezése, ezt követően pedig megkezdődik a Mold for Windows adaptálása.

A Mold C++ (C++20) nyelven íródott, és AGPLv3 licenc alatt terjeszthető, ami GPLv3 kompatibilis, de nem GPLv2 kompatibilis, mivel hálózati szolgáltatások fejlesztésekor meg kell nyitni a változtatásokat. Ez a választás a fejlesztési finanszírozás megszerzésének vágya miatt van – a szerző hajlandó eladni a kód jogait az újraengedélyezéshez egy megengedő licenc alapján, mint például az MIT, vagy külön kereskedelmi licencet biztosít azoknak, akik nem elégedettek az AGPL-vel.

A Mold támogatja a GNU linker összes funkcióját, és nagyon gyors, mindössze fele olyan sebességgel kapcsolódik, mint a fájlok egyszerű másolása cp-vel. Például a Chrome 96 (kód mérete 1.89 GB) készítésekor 8 másodpercbe telik a c debuginfo futtatható fájlok létrehozása egy 53 magos számítógépen GNU gold használatával, 11.7 másodpercbe az LLVM lld, és csak 2.2 másodpercbe a Mold esetében (26-szor gyorsabb, mint a GNU arany) . A Clang 13 (3.18 GB) összekapcsolásakor a GNU gold 64, az LLVM lld 5.8, a Mold pedig 2.9 másodpercet vesz igénybe. A Firefox 89 (1.64 GB) összekapcsolásakor a GNU gold 32.9, az LLVM lld 6.8, a Mold pedig 1.4 másodpercet vesz igénybe.

Az LLVM lld által kifejlesztett Mold builder első stabil kiadása

A hivatkozási idő csökkentése nagymértékben javíthatja a nagy projektek fejlesztésének használhatóságát azáltal, hogy csökkenti a várakozási időt a futtatható fájlok létrehozása során a hibakeresés és a módosítások tesztelése során. A penészt az a bosszúság motiválta, hogy minden kódmódosítás után meg kell várni a linkelés befejezését, valamint a meglévő linkerek gyenge teljesítménye a többmagos rendszereken, valamint az a vágy, hogy egy alapvetően más linkelési architektúrát próbáljunk ki anélkül, hogy szükségtelenül folyamodnánk. bonyolult modellek, például növekményes összekapcsolás.

A nagyszámú, a Mold-ban a fordító által készített objektumfájlból végrehajtható fájl összekapcsolásának nagy teljesítménye gyorsabb algoritmusok használatával, a rendelkezésre álló CPU-magok közötti műveletek aktív párhuzamosításával és hatékonyabb adatstruktúrák használatával érhető el. A Mold például azt a technikát valósítja meg, hogy egyszerre végez intenzív számításokat a fájlok másolásával, az objektumfájlok memóriába való előzetes letöltésével, gyors hash táblák használatával a karakterek feloldásakor, az áthelyezési táblák külön szálban történő vizsgálatával és a különböző fájlokban ismétlődő egyesített szakaszok duplikálásának megszüntetésével.

Forrás: opennet.ru

Hozzászólás