Wild 0.10


4. avgusta je bilo izdano Wild 0.10 — prosto povezovalec, napisan v Rustu, namenjen predvsem hitri sestavi programov v Linuxu. Povezovalec izvaja končno fazo sestave: združuje objektne datoteke in knjižnice v končno izvršno datoteko ali deljeno knjižnico. Wild se lahko uporablja kot nadomestek za GNU ld, LLD in Mold, čeprav je cilj razvijalcev končno inkrementalno povezovanje — zaenkrat še ni uresničen.

 

Ena od glavnih novosti je bila podpora parametrima —gdb-index in —no-gdb-index. Ko je ta možnost omogočena, Wild v izhodni datoteki ustvari sekcijo .gdb_index z indeksom za razhroščevanje. Zaradi tega GDB lahko hitreje najde potrebne simbole v velikih programih, ne da bi moral indeks oblikovati ločeno po sestavi. Implementacija podpira deveto različico formata GDB Index; operacije skeniranja, združevanja in zapisovanja indeksa so bile vzporedno obdelane.

 

Znatno je razširjena obravnava skriptov povezovalcev. Dodana je podpora:

  • sekcijam /DISCARD/ za izključitev nepotrebnih vhodnih sekcij;
  • uporabniškim glavam programov PHDRS;
  • funkcijam SIZEOF_HEADERS, DEFINED in SEGMENT_START;
  • ključni besedi AT in funkciji LOADADDR;
  • pogojnim izrazom s ternarno operatorjem;
  • ukazom SORT, SORT_BY_NAME in SORT_BY_ALIGNMENT;
  • simbolu __bss_start;
  • predlogom za izpolnitev izhodnih sekcij;
  • ukazom OUTPUT_FORMAT in OUTPUT_ARCH;
  • več relativnim števcem trenutnega naslova.

 

Polna združljivost z GNU ld še ni dosežena. Na primer, del funkcionalnosti ukaza MEMORY, sekcije OVERLAY in nekatere metode postavljanja sekcij ostajajo nedokončane. Razvijalci posebej vodijo tabelo možnosti, potrebne za povezovanje jedra Linuxa.

 

Izboljšana je učinkovitost pri postavljanju rezultatov sestave na Btrfs in VFAT. Wild sedaj samodejno uporablja način —no-mmap-output-file in ne preslika izhodne datoteke v pomnilnik preko mmap. V izvedenem preizkusu povezovanja Zed na Btrfs se je čas skrajšal približno s 2,6–2,8 na 1,5–1,8 sekunde. Pri tem avtor spremembe opozarja, da ostaja Btrfs v tem scenariju kljub optimizaciji precej počasnejši od tmpfs; za Ext4 in XFS pa se je uporaba mmap izkazala za bolj koristno.

Prehod Wild na druge formate in platforme se nadaljuje. Eksperimentalna različica za WebAssembly že omogoča povezovanje nekaterih programov, port za Mach-O pa enostavne izvršljive datoteke. Začelo se je delo na 32-bitnih ciljnih platformah, kar bo v prihodnje poenostavilo uporabo Wild pri razvoju vgrajenih sistemov. Prav tako je bila dodana začetna obdelava objektnih datotek PowerPC64 ELFv2 in nadaljuje se razvoj podpore za Mach-O, vključno z univerzalnimi objektno datotekami in neposredno povezavo z dinamičnimi knjižnicami. Ti porti trenutno niso pripravljeni za vsakodnevno uporabo.

Različica knjižničnega povezovalnika libwild zdaj lahko sprejema vhodne datoteke in shrani rezultate neposredno v pomnilnik. To omogoča drugim programom, da vključijo Wild brez obveznega ustvarjanja vmesnih datotek na disku. Poleg tega knjižnica ne prepisuje več globalnega sklada niti ne omogoča podpore za stiskanje Zstandard med sestavljanjem.

Izdaja vključuje številne popravke za x86-64, AArch64, RISC-V in LoongArch64. Odpravljene so bile napake pri obdelavi TLS, PLT, LTO, stisnjenih razhroščevanj, velikih poravnanjih in premikih v PIE- in deljenih objektih. Popravljeni so morebitni zrušitveni dogodki pri razčlenjevanju skript povezovalnika ter napake pri oblikovanju sekcij .tbss, .strtab in .eh_frame.

 

Wild podpira Linux na arhitekturah x86-64, AArch64 in RISC-V; podpora za LoongArch64 in PowerPC64LE je trenutno označena kot začetna. Povezovalnik lahko namestite iz pripravljeni arhivov, preko cargo-binstall, Homebrew, Nix ali z ukazom cargo install --locked wild-linker. Izvorna koda je na voljo po izbiri uporabnika pod licencami Apache 2.0 ali MIT.

 

Izvor: linux.org.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster