Paglabas ng Mold 1.1 linker, na binuo ng LLVM lld

Ang isang release ng Mould linker ay nai-publish, na maaaring magamit bilang isang mas mabilis, transparent na kapalit para sa GNU linker sa Linux system. Ang proyekto ay binuo ng may-akda ng LLVM lld linker. Ang isang pangunahing tampok ng Mould ay ang napakataas na bilis ng pag-link ng mga object file, na kapansin-pansing nauuna sa mga GNU gold at LLVM lld linker (ang pag-link sa Mold ay ginagawa sa bilis na kalahati lamang ng bilis ng pagkopya ng mga file gamit ang cp utility). Ang code ay nakasulat sa C++ (C++20) at ipinamahagi sa ilalim ng lisensya ng AGPLv3.

Sa bagong bersyon:

  • Nagdagdag ng suporta para sa pag-optimize sa yugto ng pag-link (LTO, Link Time Optimization). Ang mga pag-optimize ng LTO ay naiiba sa pamamagitan ng pagsasaalang-alang sa estado ng lahat ng mga file na kasangkot sa proseso ng pagbuo, habang ang mga tradisyonal na mode ng pag-optimize ay nag-o-optimize ng bawat file nang hiwalay at hindi isinasaalang-alang ang mga kondisyon para sa mga function ng pagtawag na tinukoy sa iba pang mga file. Samantalang dati, kapag nakita ang GCC o LLVM intermediate code (IR) file, tinawag ang mga katumbas na ld.bfd o ld.lld linker, ngayon ay pinoproseso ng Mold ang mga IR file nang independyente at ginagamit ang Linker Plugin API, na ginagamit din sa GNU ld at GNU mga linker ng ginto. Kapag pinagana, bahagyang mas mabilis lang ang LTO kaysa sa iba pang mga linker dahil karamihan sa oras ay ginugugol sa pagsasagawa ng mga pag-optimize ng code kaysa sa pag-link.
  • Nagdagdag ng suporta para sa arkitektura ng RISC-V (RV64) sa host at mga target na platform.
  • Idinagdag ang opsyong "--emit-relocs" upang paganahin ang pagkopya ng mga seksyon ng relokasyon mula sa mga input file patungo sa mga output file para sa kasunod na aplikasyon ng mga pag-optimize sa yugto ng post-linking.
  • Idinagdag ang opsyong "--shuffle-sections" upang i-randomize ang pagkakasunud-sunod ng mga seksyon bago ayusin ang kanilang mga address sa virtual address space.
  • Nagdagdag ng mga opsyon na "--print-dependencies" at "--print-dependencies=full" sa output sa CSV format na impormasyon tungkol sa mga dependency sa pagitan ng mga input file, na, halimbawa, ay maaaring gamitin upang suriin ang mga dahilan para sa koneksyon kapag nagli-link ng ilang partikular na object file o kapag nagsasagawa ng minification work dependencies sa pagitan ng mga file.
  • Idinagdag ang "--warn-once" at "--warn-textrel" na mga opsyon.
  • Inalis ang dependency sa libxxhash.

Pinagmulan: opennet.ru

Magdagdag ng komento