L-ewwel rilaxx stabbli tal-Mould linker, żviluppat minn LLVM lld

Rui Ueyama, awtur tal-linker LLVM lld u l-kompilatur chibicc, ippreżenta l-ewwel rilaxx stabbli tal-linker il-ġdid tal-Mould ta 'prestazzjoni għolja, li huwa notevolment aktar mgħaġġel mill-linkers GNU gold u LLVM lld fil-veloċità tal-konnessjoni tal-fajls tal-oġġetti. Il-proġett huwa kkunsidrat lest għall-implimentazzjoni tal-produzzjoni u jista 'jintuża bħala sostitut aktar mgħaġġel u trasparenti għall-linker GNU fuq sistemi Linux. Il-pjanijiet għar-rilaxx maġġuri li jmiss jinkludu t-tlestija tal-appoġġ għall-pjattaforma macOS, u wara jibda x-xogħol fuq l-adattament tal-Mould għall-Windows.

Il-moffa hija miktuba f'C++ (C++20) u hija liċenzjata taħt AGPLv3, li hija kompatibbli ma' GPLv3, iżda mhux kompatibbli ma' GPLv2, peress li teħtieġ bidliet miftuħa meta tiżviluppa servizzi tan-netwerk. Din l-għażla hija spjegata mix-xewqa li tikseb finanzjament għall-iżvilupp - l-awtur huwa lest li jbigħ id-drittijiet għall-kodiċi għal riliċenzjar taħt liċenzja permissiva, bħal MIT, jew jipprovdi liċenzja kummerċjali separata għal dawk li mhumiex sodisfatti bl-AGPL.

Il-moffa tappoġġja l-karatteristiċi kollha tal-linker GNU u għandha prestazzjoni għolja ħafna - il-linking isir b'veloċità biss nofs veloċi daqs kemm tikkopja fajls bl-utilità cp. Pereżempju, meta tibni Chrome 96 (daqs tal-kodiċi 1.89 GB), tieħu 8 sekonda biex torbot fajls eżekutibbli ma' debuginfo fuq kompjuter 53-core li juża GNU gold, LLVM lld - 11.7 sekondi, u Mold biss 2.2 sekondi (26 darba aktar mgħaġġla minn GNU gold) . Meta tgħaqqad Clang 13 (3.18 GB), tieħu 64 sekondi f'GNU gold, 5.8 sekondi f'LLVM lld, u 2.9 sekondi f'Mold. Meta tibni Firefox 89 (1.64 GB), tieħu 32.9 sekondi f'GNU gold, 6.8 sekondi f'LLVM lld, u 1.4 sekondi f'Mold.

L-ewwel rilaxx stabbli tal-Mould linker, żviluppat minn LLVM lld

It-tnaqqis tal-ħin tal-bini jista 'jtejjeb b'mod sinifikanti l-konvenjenza tal-iżvilupp ta' proġetti kbar billi jnaqqas l-istennija fil-proċess tal-ġenerazzjoni ta 'fajls eżekutibbli meta tiddibaggja u tittestja l-bidliet. Il-motivazzjoni għall-ħolqien tal-Mould kienet il-frustrazzjoni li jkollok tistenna li l-konnessjoni titlesta wara kull bidla fil-kodiċi, il-prestazzjoni fqira ta 'linkers eżistenti fuq sistemi multi-core, u x-xewqa li tipprova arkitettura ta' rabta fundamentalment differenti mingħajr ma tirrikorri għal mudelli kkumplikati żżejjed bħal dawn. bħala rabta inkrementali.

Prestazzjoni għolja ta 'konnessjoni ta' fajl eżekutibbli minn numru kbir ta 'fajls ta' oġġetti ppreparati mill-kompilatur f'Mould tinkiseb bl-użu ta 'algoritmi aktar mgħaġġla, parallelizzazzjoni attiva ta' operazzjonijiet bejn cores CPU disponibbli u l-użu ta 'strutturi ta' data aktar effiċjenti. Pereżempju, Mold timplimenta tekniki biex twettaq kalkoli intensivi waqt li tikkopja fajls, tagħbija minn qabel ta 'fajls ta' oġġetti fil-memorja, tuża tabelli hash veloċi għar-riżoluzzjoni tal-karattri, tiskennja tabelli ta 'rilokazzjoni f'ħajt separat, u deduplikazzjoni ta' sezzjonijiet magħquda li huma ripetuti fuq fajls differenti.

Sors: opennet.ru

Żid kumment