Vydanie kompozitora Mold 3.0, ktorý vyvíja vývojár LLVM lld

Bol sa uvoľnený výstup spojovača Mold 3.0, ktorý môže fungovať ako rýchlejšia transparentná náhrada GNU linker na systémoch Linux. Projekt vyvíja Rui Ueyama, autor spojovača LLVM lld. Kľúčovou vlastnosťou Mold je veľmi vysoká rýchlosť spájania objektových súborov, ktorá značne prekonáva spojovače GNU gold a LLVM lld (spájanie v Mold sa vykonáva rýchlosťou len dvakrát pomalšie než jednoduché kopírovanie súborov pomocou nástroja cp). Kód je napísaný v jazyku Rust a je distribuovaný pod licenciou MIT.

Zníženie času na spájanie výrazne zvyšuje pohodlie vývoja veľkých projektov, pretože skracuje čakanie na vytváranie spustiteľných súborov počas ladenia a testovania zmien. Podnetom na vytvorenie Mold bolo podráždenie z potreby čakať na dokončenie spájania po každej zmene kódu, ako aj nízka efektivita existujúcich spojovačov na viacjadrových systémoch a snaha vyskúšať zásadne inú architektúru spájania bez potreby použitia príliš komplikovaných modelov, akými je inkrementálne spájanie.

Vysoký výkon spájania spustiteľného súboru z veľkého počtu objektových súborov pripravených kompilátorom v Mold sa dosahuje využívaním rýchlejších algoritmov, aktívnym paralelizovaním operácií medzi dostupnými jadrami CPU a aplikovaním efektívnejších dátových štruktúr. Napríklad Mold implementuje techniku vykonávania intenzívnych výpočtov súčasne s kopírovaním súborov, predbežné načítavanie objektových súborov do pamäte, využívanie rýchlych hashovacích tabuliek pri riešení symbolov, skenovanie tabuliek presunov v samostatnom vlákne a deduplikáciu opakujúcich sa sekcií v rôznych súboroch.

Vetva Mold 3.0 sa vyznačuje prepisovaním kódu z C++ (C++20) na jazyk Rust. Mold 3.0 môže byť použitý ako priehľadná náhrada za Mold 2.42.1, posledné vydanie v jazyku C++, a podporuje všetky predtým dostupné možnosti a cieľové architektúry. Prechod na Rust zabezpečil projekt pred potenciálnymi problémami pri spracovaní poškodených objektových súborov — v situáciách, keď verzia v C++ havarovala z dôvodu prístupu k oblastiam pamäte mimo bufra, verzia v Rust sa zastaví v etape overovania hraníc. Výkon implementácie na Rust je na rovnakej úrovni ako verzia v C++.

Okrem migrácie na Rust bola kľúčovým cieľom pri vývoji vetvy 3.0 zvýšená kompatibilita s GNU ld a príprava projektu na možnosť použitia ako predvoleného linkeru v distribúciách Linuxu. Systém zostavenia bol zmenený z CMake na Cargo, a systém testov z ctest na cargo test. Závislosť oneTBB bola odstránená.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster