Mold 1.1 կապիչի թողարկում, որը մշակվել է LLVM lld-ի կողմից

Հրապարակվել է Mold linker-ի թողարկումը, որը կարող է օգտագործվել որպես Linux համակարգերի GNU կապիչի ավելի արագ, թափանցիկ փոխարինում: Նախագիծը մշակվել է LLVM lld կապի հեղինակի կողմից: Mold-ի հիմնական առանձնահատկությունն օբյեկտի ֆայլերը կապելու շատ բարձր արագությունն է, որը նկատելիորեն գերազանցում է GNU gold և LLVM lld կապակցողներին (Mold-ում կապակցումը կատարվում է միայն կիսով չափ արագությամբ, քան պարզապես ֆայլերը cp utility-ով պատճենելը): Կոդը գրված է C++ (C++20) և տարածվում է AGPLv3 լիցենզիայի ներքո:

Նոր տարբերակում.

  • Ավելացվեց կապի փուլում օպտիմալացման աջակցություն (LTO, Link Time Optimization): LTO օպտիմիզացիաները տարբերվում են՝ հաշվի առնելով կառուցման գործընթացում ներգրավված բոլոր ֆայլերի վիճակը, մինչդեռ օպտիմիզացման ավանդական ռեժիմները յուրաքանչյուր ֆայլը օպտիմիզացնում են առանձին և հաշվի չեն առնում այլ ֆայլերում սահմանված գործառույթները կանչելու պայմանները: Մինչ նախկինում, երբ հայտնաբերվում էին GCC կամ LLVM միջանկյալ կոդ (IR) ֆայլերը, կոչվում էին համապատասխան ld.bfd կամ ld.lld կապիչներ, այժմ Mold-ը ինքնուրույն մշակում է IR ֆայլերը և օգտագործում է Linker Plugin API-ն, որն օգտագործվում է նաև GNU ld-ում և GNU-ում: ոսկու կապիչներ. Երբ միացված է, LTO-ն միայն փոքր-ինչ ավելի արագ է, քան մյուս կապիչները, քանի որ ժամանակի մեծ մասը ծախսվում է կոդի օպտիմալացման վրա, այլ ոչ թե կապելու վրա:
  • Ավելացվել է RISC-V (RV64) ճարտարապետության աջակցություն հյուրընկալող և թիրախային հարթակներում:
  • Ավելացրել է «--emit-relocs» տարբերակը՝ հնարավորություն ընձեռելու վերաբնակեցման բաժինների պատճենումը մուտքային ֆայլերից ելքային ֆայլեր՝ հետկապակցման փուլում օպտիմալացումների հետագա կիրառման համար:
  • Ավելացրել է «--shuffle-sections» տարբերակը՝ բաժինների հերթականությունը պատահականացնելու համար՝ նախքան դրանց հասցեները վիրտուալ հասցեների տարածքում ամրագրելը:
  • Ավելացվել են «--print-dependencies» և «--print-dependencies=full» ընտրանքները՝ CSV ձևաչափով մուտքագրված ֆայլերի միջև կախվածության մասին տեղեկատվություն արտածելու համար, որոնք, օրինակ, կարող են օգտագործվել կապի պատճառները վերլուծելու համար որոշակի օբյեկտային ֆայլեր միացնելիս: կամ ֆայլերի միջև մինիֆիկացման աշխատանքային կախվածություններ իրականացնելիս:
  • Ավելացվեց «--warn-once» և «--warn-textrel» տարբերակները:
  • Հեռացվել է կախվածությունը libxxhash-ից:

Source: opennet.ru

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