Mold builder-ի առաջին կայուն թողարկումը, որը մշակվել է LLVM lld-ի կողմից

Rui Ueyama, LLVM lld կապող և chibicc կոմպիլյատորի հեղինակ, ներկայացրել է նոր բարձր արդյունավետությամբ Mold կապիչի առաջին կայուն թողարկումը, որը նկատելիորեն առաջ է GNU ոսկուց և LLVM lld կապակցիչներից՝ օբյեկտների ֆայլերի միացման արագությամբ: Նախագիծը համարվում է պատրաստ արտադրական տեղակայման համար և կարող է օգտագործվել որպես Linux համակարգերում GNU կապող կապի ավելի արագ թափանցիկ փոխարինում: Հաջորդ հիմնական թողարկման պլանները ներառում են macOS պլատֆորմի համար աջակցության պատրաստություն, որից հետո կսկսվեն աշխատանքները Mold-ի Windows-ի համար հարմարեցնելու ուղղությամբ:

Mold-ը գրված է C++ (C++20) լեզվով և տարածվում է AGPLv3 լիցենզիայի ներքո, որը համապատասխանում է GPLv3-ին, բայց չի համապատասխանում GPLv2-ին, քանի որ այն պահանջում է փոփոխություններ բացել ցանցային ծառայություններ մշակելիս: Այս ընտրությունը պայմանավորված է զարգացման ֆինանսավորում ստանալու ցանկությամբ. հեղինակը պատրաստ է վաճառել վերալիցենզավորման կոդի իրավունքները թույլատրելի լիցենզիայի ներքո, ինչպիսին է MIT-ը, կամ տրամադրել առանձին առևտրային լիցենզիա նրանց համար, ովքեր գոհ չեն AGPL-ից:

Mold-ն աջակցում է GNU կապակցիչի բոլոր հատկանիշները և շատ արագ է, կապում է միայն ֆայլերը cp-ով պատճենելու արագության կեսը: Օրինակ, Chrome 96-ը կառուցելիս (կոդի չափը 1.89 ԳԲ) 8 միջուկանի համակարգչի վրա GNU gold-ի միջոցով c debuginfo գործարկվողներ ստեղծելու համար պահանջվում է 53 վայրկյան, LLVM lld-ի համար՝ 11.7 վայրկյան և Mold-ի համար՝ ընդամենը 2.2 վայրկյան (26 անգամ ավելի արագ, քան GNU ոսկի): Clang 13-ը (3.18 ԳԲ) միացնելիս GNU ոսկին տևում է 64 վայրկյան, LLVM lld-ը՝ 5.8 վայրկյան, իսկ Mold-ը՝ 2.9 վայրկյան: Firefox 89-ը (1.64 ԳԲ) միացնելիս GNU gold-ը տևում է 32.9 վայրկյան, LLVM lld-ը՝ 6.8 վայրկյան, իսկ Mold-ը՝ 1.4 վայրկյան:

Mold builder-ի առաջին կայուն թողարկումը, որը մշակվել է LLVM lld-ի կողմից

Հղման ժամանակի կրճատումը կարող է մեծապես բարելավել խոշոր նախագծերի մշակման գործածությունը՝ նվազեցնելով սպասելը՝ վրիպազերծման և փորձարկման փոփոխությունների ժամանակ գործարկվող ֆայլեր ստեղծելու գործընթացում: Մոլդը պայմանավորված էր կոդի յուրաքանչյուր փոփոխությունից հետո կապի ավարտին սպասելու անհանգստությամբ, ինչպես նաև գոյություն ունեցող կապող սարքերի վատ կատարմամբ բազմամիջուկ համակարգերում և հիմնովին այլ կապող ճարտարապետություն փորձելու ցանկությամբ՝ առանց անհարկի դիմելու: բարդ մոդելներ, ինչպիսիք են աստիճանական կապը:

Կազմողի կողմից Mold-ում պատրաստված մեծ թվով օբյեկտային ֆայլերից գործարկվող ֆայլը կապելու բարձր արդյունավետությունը ձեռք է բերվում ավելի արագ ալգորիթմների կիրառմամբ, պրոցեսորի առկա միջուկների միջև գործողությունների ակտիվ զուգահեռականացման և տվյալների ավելի արդյունավետ կառուցվածքների օգտագործմամբ: Օրինակ, Mold-ը կիրառում է ֆայլերի պատճենման հետ միաժամանակ ինտենսիվ հաշվարկներ կատարելու, օբյեկտների ֆայլերը հիշողության մեջ նախօրոք ներբեռնելու, նիշերը լուծելիս արագ հեշ աղյուսակների կիրառման, առանձին շղթայում տեղափոխման աղյուսակների սկանավորման և տարբեր ֆայլերում կրկնվող միաձուլված հատվածների կրկնօրինակման տեխնիկան:

Source: opennet.ru

Добавить комментарий