Prva stabilna izdaja orodja Mold builder, ki ga je razvil LLVM lld

Rui Ueyama, avtor povezovalnika LLVM lld in prevajalnika chibicc, je predstavil prvo stabilno izdajo novega visoko zmogljivega povezovalnika Mold, ki je pri hitrosti povezovanja objektnih datotek opazno hitrejši od povezovalnikov GNU gold in LLVM lld. Projekt velja za pripravljenega za produkcijsko izvedbo in se lahko uporablja kot hitrejša, pregledna zamenjava za povezovalnik GNU v sistemih Linux. Načrti za naslednjo večjo izdajo vključujejo dokončanje podpore za platformo macOS, po kateri se bo začelo delo na prilagoditvi Mold za Windows.

Mold je napisan v C++ (C++20) in je licenciran pod AGPLv3, ki je združljiv z GPLv3, ni pa združljiv z GPLv2, saj zahteva odprte spremembe pri razvoju omrežnih storitev. Ta izbira je razložena z željo po pridobitvi sredstev za razvoj - avtor je pripravljen prodati pravice do kode za ponovno licenciranje pod permisivno licenco, kot je MIT, ali zagotoviti ločeno komercialno licenco za tiste, ki niso zadovoljni z AGPL.

Mold podpira vse funkcije povezovalnika GNU in ima zelo visoko zmogljivost - povezovanje se izvaja s hitrostjo, ki je le polovica hitrejša od preprostega kopiranja datotek s pripomočkom cp. Na primer, ko gradite Chrome 96 (velikost kode 1.89 GB), potrebujete 8 sekund, da povežete izvedljive datoteke z debuginfo na 53-jedrnem računalniku z uporabo GNU gold, LLVM lld - 11.7 sekunde in Mold le 2.2 sekunde (26-krat hitreje kot zlato GNU). Pri povezovanju Clang 13 (3.18 GB) traja 64 sekund v GNU gold, 5.8 sekunde v LLVM lld in 2.9 sekunde v Mold. Ko gradite Firefox 89 (1.64 GB), potrebujete 32.9 sekunde v GNU gold, 6.8 sekunde v LLVM lld in 1.4 sekunde v Moldu.

Prva stabilna izdaja orodja Mold builder, ki ga je razvil LLVM lld

Zmanjšanje časa gradnje lahko znatno izboljša udobje razvijanja velikih projektov z zmanjšanjem čakanja v procesu generiranja izvedljivih datotek pri odpravljanju napak in preizkušanju sprememb. Motivacija za ustvarjanje Molda je bila frustracija zaradi čakanja na dokončanje povezovanja po vsaki spremembi kode, slaba zmogljivost obstoječih povezovalnikov v večjedrnih sistemih in želja po preizkusu bistveno drugačne povezovalne arhitekture brez uporabe preveč zapletenih modelov, kot je kot inkrementalno povezovanje.

Visoka zmogljivost povezovanja izvedljive datoteke iz velikega števila predmetnih datotek, pripravljenih s prevajalnikom, v Moldu je dosežena z uporabo hitrejših algoritmov, aktivnim paraleliziranjem operacij med razpoložljivimi jedri CPE in uporabo učinkovitejših podatkovnih struktur. Mold na primer izvaja tehnike za izvajanje intenzivnih izračunov med kopiranjem datotek, prednalaganjem predmetnih datotek v pomnilnik, uporabo hitrih zgoščevalnih tabel za ločljivost znakov, skeniranje premestitvenih tabel v ločeni niti in odstranjevanje podvojitev združenih odsekov, ki se ponavljajo v različnih datotekah.

Vir: opennet.ru

Dodaj komentar