Eerste stabiele vrystelling van die Mould-bouer wat deur LLVM lld ontwikkel is

Rui Ueyama, skrywer van die LLVM lld-skakelaar en die chibicc-samesteller, het die eerste stabiele vrystelling van die nuwe hoëprestasie-Mod-skakelaar aangebied, wat merkbaar voor die GNU gold en LLVM lld-skakelaars is in terme van objeklêerskakelspoed. Die projek word beskou as gereed vir produksie-ontplooiings en kan gebruik word as 'n vinniger deursigtige vervanging vir die GNU-skakelaar op Linux-stelsels. Planne vir die volgende groot vrystelling sluit in om ondersteuning vir die macOS-platform gereed te maak, waarna werk sal begin om Mould vir Windows aan te pas.

Vorm is geskryf in C++ (C++20) en versprei onder die AGPLv3-lisensie, wat aan GPLv3 voldoen, maar nie aan GPLv2 voldoen nie, aangesien dit vereis dat veranderinge oopgemaak word wanneer netwerkdienste ontwikkel word. Hierdie keuse is te danke aan die begeerte om ontwikkelingsbefondsing te bekom - die skrywer is bereid om die regte op die kode vir herlisensiëring onder 'n permissiewe lisensie, soos MIT, te verkoop of 'n aparte kommersiële lisensie te verskaf vir diegene wat nie tevrede is met die AGPL nie.

Mould ondersteun al die kenmerke van die GNU-skakelaar en is baie vinnig - skakeling is net twee keer so vinnig as om net lêers met cp te kopieer. Byvoorbeeld, wanneer jy Chrome 96 (kodegrootte 1.89 GB) bou, neem dit 8 sekondes om c debuginfo-uitvoerbare programme op 'n 53-kern rekenaar te bou met GNU gold, 11.7 sekondes vir LLVM lld, en slegs 2.2 sekondes vir Mould (26 keer vinniger as GNU goud). Wanneer Clang 13 (3.18 GB) gekoppel word, neem GNU goud 64 sekondes, LLVM lld neem 5.8 sekondes en Mould neem 2.9 sekondes. Wanneer Firefox 89 (1.64 GB) gekoppel word, neem GNU gold 32.9 sekondes, LLVM lld neem 6.8 sekondes en Mould neem 1.4 sekondes.

Eerste stabiele vrystelling van die Mould-bouer wat deur LLVM lld ontwikkel is

Die vermindering van skakeltyd kan die bruikbaarheid van die ontwikkeling van groot projekte aansienlik verbeter deur die wag te verminder in die proses om uitvoerbare lêers te genereer tydens ontfouting en toetsveranderings. Mould is gemotiveer deur die irritasie om te moet wag vir die skakel om te voltooi na elke verandering aan die kode, sowel as die swak werkverrigting van bestaande skakelaars op multi-kern stelsels, en die begeerte om 'n fundamenteel ander skakel argitektuur te probeer sonder om onnodig toevlug tot ingewikkelde modelle, soos inkrementele koppeling.

Die hoë werkverrigting om 'n uitvoerbare lêer te koppel vanaf 'n groot aantal objeklêers wat deur die samesteller in Mould voorberei is, word bereik deur vinniger algoritmes te gebruik, aktief bewerkings tussen beskikbare SVE-kerns te paralleliseer en meer doeltreffende datastrukture te gebruik. Byvoorbeeld, Mould implementeer die tegniek om intensiewe berekeninge gelyktydig uit te voer met die kopiëring van lêers, die voorafhaal van objeklêers in die geheue, die gebruik van vinnige hash-tabelle wanneer karakters opgelos word, hervestigingstabelle in 'n aparte draad te skandeer en saamgevoegde afdelings wat in verskillende lêers herhaal word, te dedupliseer.

Bron: opennet.ru

Voeg 'n opmerking