Першы стабільны рэліз кампаноўніка Mold, які развіваецца распрацоўшчыкам LLVM lld

Rui Ueyama, аўтар кампаноўніка LLVM lld і кампілятара chibicc, прадставіў першы стабільны рэліз новага высокапрадукцыйнага кампаноўніка Mold, прыкметна апераджальнага па хуткасці злучэння аб'ектных файлаў кампаноўнікі GNU gold і LLVM lld. Праект прызнаны гатовым для працоўных укараненняў і можа ўжывацца ў якасці хутчэйшай празрыстай замены GNU linker на Linux-сістэмах. З планаў на наступны значны выпуск адзначаецца давядзенне да гатоўнасці падтрымкі платформы macOS, пасля чаго пачнецца праца па адаптацыі Mold для Windows.

Mold напісаны на мове З++ (C++20) і распаўсюджваецца пад ліцэнзіяй AGPLv3, якая сумяшчальная з GPLv3, але не сумяшчальная з GPLv2, бо патрабуе адкрыцці змен пры распрацоўцы сеткавых сэрвісаў. Падобны выбар тлумачыцца жаданнем атрымаць фінансаванне распрацоўкі - аўтар гатовы прадаць правы на код для пераліцэнзавання пад дазвольнай ліцэнзіяй, такі як MIT, або даць асобную камерцыйную ліцэнзію для тых, каго не задавальняе AGPL.

Mold падтрымлівае ўсе магчымасці GNU linker і адрозніваецца вельмі высокай прадукцыйнасцю - кампаноўка выконваецца са хуткасцю, усяго ў два разы павольней простага капіявання файлаў утылітай cp. Напрыклад, пры зборцы Chrome 96 (памерам кода 1.89 ГБ) на кампаноўку выкананых файлаў c debuginfo на 8-ядзерным кампутары пры выкарыстанні GNU gold марнуецца 53 секунды, LLVM lld – 11.7 секунд, а Mold усяго 2.2 секунды (у 26 разоў хутчэй GNU . Пры кампаноўцы Clang 13 (3.18 ГБ) у GNU gold патрабуецца 64 секунды, у LLVM lld – 5.8/2.9 секунд, а ў Mold – 89/1.64 секунды. Пры кампаноўцы Firefox 32.9 (6.8 ГБ) у GNU gold неабходна 1.4 секунд, у LLVM lld – XNUMX секунд, а ў Mold – XNUMX секунды.

Першы стабільны рэліз кампаноўніка Mold, які развіваецца распрацоўшчыкам LLVM lld

Скарачэнне часу на кампаноўку дазваляе значна павысіць зручнасць распрацоўкі вялікіх праектаў за кошт скарачэння чакання ў працэсе фарміравання выкананых файлаў пры адладцы і тэсціравання змяненняў. Матывам да стварэння Mold стала раздражненне ад неабходнасці чакаць завяршэння кампаноўкі пасля кожнага занясення змены ў код, а таксама нізкая эфектыўнасць працы існых кампаноўнікаў на шмат'ядравых сістэмах і жаданне апрабаваць прынцыпова іншую архітэктуру кампаноўкі, не звяртаючыся пры гэтым да залішне ўскладненых мадэляў, такім як инкрементальная кампанонаў.

Высокая прадукцыйнасць кампаноўкі выкананага файла з вялікай колькасці падрыхтаваных кампілятарам аб'ектных файлаў у Mold дасягаецца выкарыстаннем хутчэйшых алгарытмаў, актыўным распаралельваннем аперацый паміж даступнымі ядрам CPU і ўжываннем больш эфектыўных структур дадзеных. Напрыклад, у Mold рэалізаваная тэхніка выканання інтэнсіўных вылічэнняў адначасова з капіяваннем файлаў, папераджальная загрузка аб'ектных файлаў у памяць, выкарыстанне хуткіх хэш-табліц пры дазволе знакаў, сканаванне табліц перасоўванняў у асобным струмені і дэдуплікацыя паўтаральных у розных файлах аб'ядноўваных секцый.

Крыніца: opennet.ru

Дадаць каментар