Mold 3.0 linkerio išleidimas, kurį sukūrė LLVM lld

Išleistas „Mold 3.0“ jungiklis, kurį galima naudoti kaip greitesnį ir skaidresnį GNU jungiklio pakaitalą. Linux-sistemos. Projektą kuria Rui Ueyama, LLVM lld susiejimo priemonės autorius. Svarbiausias „Mold“ bruožas yra itin didelis susiejimo greitis, gerokai lenkiantis „GNU gold“ ir LLVM lld susiejimo priemones (susiejimas „Mold“ programoje yra tik perpus greitesnis nei failų kopijavimas naudojant „cp“ programą). Kodas parašytas „Rust“ kalba ir platinamas pagal MIT licenciją.

Susiejimo laiko sutrumpinimas žymiai pagerina didelių projektų naudojimo paprastumą, nes sutrumpėja laukimo laikas generuojant vykdomąjį failą derinimo ir pakeitimų testavimo metu. Motyvacija sukurti „Mold“ kilo iš nusivylimo, kad po kiekvieno kodo pakeitimo reikia laukti, kol susiejimas bus baigtas, dėl prasto esamų susiejimo programų našumo daugiabranduolėse sistemose ir noro išbandyti iš esmės kitokią susiejimo architektūrą, nesigriebiant pernelyg sudėtingų modelių, tokių kaip laipsniškas susiejimas.

„Mold“ pasiekia didelį našumą kompiliuodama vykdomuosius failus iš daugybės kompiliatoriaus paruoštų objektų failų, naudodama greitesnius algoritmus, aktyviai lygiagrečiai atlikdama operacijas skirtinguose procesoriaus branduoliuose ir taikydama efektyvesnes duomenų struktūras. Pavyzdžiui, „Mold“ įdiegia techniką, leidžiančią atlikti intensyvius skaičiavimus vienu metu su failų kopijavimu, iš anksto įkelti objektų failus į atmintį, naudoti greitas maišos lenteles simbolių skyrimui, nuskaityti perkėlimo lenteles atskirame gijoje ir dedublikatuoti sujungtų sekcijų pasikartojimus skirtinguose failuose.

„Mold 3.0“ atšaka pasižymi tuo, kad perrašė kodo bazę iš C++ (C++20) į „Rust“. „Mold 3.0“ gali būti naudojama kaip skaidrus „Mold 2.42.1“, paskutinės C++ versijos, pakaitalas ir palaiko visas anksčiau prieinamas parinktis bei tikslines architektūras. Perėjimas prie „Rust“ leido apsaugoti projektą nuo galimų problemų tvarkant sugadintus objektų failus – tais atvejais, kai C++ versija sugesdavo dėl prieigos už ribų, „Rust“ įdiegimas sustodavo ribų tikrinimo etape. „Rust“ įdiegimo našumas yra toks pat kaip ir C++ versijos.

Be perkėlimo į „Rust“, pagrindinis 3.0 šakos kūrimo tikslas buvo pagerinti suderinamumą su „GNU ld“ ir paruošti projektą naudoti kaip numatytąjį susiejimo įrankį distribucijose. LinuxSukūrimo sistema buvo pakeista „Cargo“, o testavimo sistema – „cargo test“, pakeičiančia „ctest“. „oneTBB“ biblioteka buvo pašalinta iš priklausomybių.

Šaltinis: opennet.ru

Pirkite patikimą prieglobą svetainėms su DDoS apsauga, VPS VDS serveriais 🔥 Įsigykite patikimą svetainių talpinimą su DDoS apsauga, VPS VDS serveriais | ProHoster