Wild 0.10


4. augusta sa uskutočnil vydanie Wild 0.10 — voľného linkeru, napísaného v Ruste a určeného predovšetkým na rýchle zostavovanie programov v Linuxe. Linker vykonáva posledný krok zostavovania: spája objektové súbory a knižnice do hotového spustiteľného súboru alebo zdieľanej knižnice. Wild môže byť použitý ako náhrada za GNU ld, LLD a Mold, hoci vyhlásený cieľ vývojárov — inkrementálne linkovanie — ešte nie je implementovaný.

 

Jednou z hlavných noviniek sa stala podpora parametrov —gdb-index a —no-gdb-index. Pri zapnutí tejto funkcie Wild vytvára v výstupnom súbore sekciu .gdb_index s indexom ladenia. Vďaka tomu môže GDB rýchlejšie nachádzať potrebné symboly vo veľkých programoch, bez vytvárania indexu spätne po zostavení. Implementácia podporuje deviaty formát GDB Index; operácie skenovania, spájania a zapisovania indexu boli paralelizované.

 

Podstatne sa rozšíril prístup k skriptom linkera. Bola pridaná podpora:

  • sekcií /DISCARD/ na vylúčenie nepotrebných vstupných sekcií;
  • užívateľských hlavičiek programu PHDRS;
  • funkcií SIZEOF_HEADERS, DEFINED a SEGMENT_START;
  • kľúčového slova AT a funkcie LOADADDR;
  • podmienkových výrazov s ternárnym operátorom;
  • príkazov SORT, SORT_BY_NAME a SORT_BY_ALIGNMENT;
  • symbolu __bss_start;
  • šablón vyplnenia výstupných sekcií;
  • príkazov OUTPUT_FORMAT a OUTPUT_ARCH;
  • niekoľkých relatívnych čítačov aktuálnej adresy.

 

Úplná kompatibilita s GNU ld zatiaľ nebola dosiahnutá. Napríklad časť funkcií príkazu MEMORY, sekcie OVERLAY a niektoré metódy umiestnenia sekcií zostávajú nedokončené. Vývojári samostatne vedú tabuľku funkcií potrebných na linkovanie jadra Linuxu.

 

Zlepšila sa výkonnosť pri umiestňovaní výsledkov zostavenia na Btrfs a VFAT. Wild teraz automaticky používa režim —no-mmap-output-file a nevytvára mapovanie výstupného súboru do pamäte cez mmap. V uskutočnenom teste zostavenia Zed na Btrfs sa čas skrátil približne z 2,6–2,8 na 1,5–1,8 sekundy. Pri tom autor zmeny varuje, že aj po optimalizácii Btrfs zostáva v tomto scénári značne pomalšie ako tmpfs; pre Ext4 a XFS sa naopak ukázalo, že použitie mmap je výhodnejšie.

Presun Wild na iné formáty a platformy pokračuje. Experimentálna verzia pre WebAssembly už dokáže spracovávať niekoľko programov, a port pre Mach-O – najjednoduchšie spustiteľné súbory. Začala sa práca na 32-bitových cieľových platformách, čo by malo v budúcnosti zjednodušiť aplikáciu Wild pri vývoji zabudovaných systémov. Tiež bola pridaná základná podpora pre objektové súbory PowerPC64 ELFv2 a pokračuje sa vo vývoji podpory Mach-O, vrátane univerzálnych objektových súborov a priamej kompozície s dynamickými knižnicami. Tieto porty zatiaľ nie sú považované za pripravené na každodenné používanie.

Knižnicová verzia linkeru libwild teraz dokáže prijímať vstupné súbory a ukladať výsledok priamo do pamäte. To umožňuje iným programom začleniť Wild bez povinnej tvorby dočasných súborov na disku. Okrem toho knižnica už viac nepodstatňuje globálny pool vlákien Rayon a podporu kompresie Zstandard je možné vypnúť počas zostavovania.

Vydanie obsahuje množstvo opráv pre x86-64, AArch64, RISC-V a LoongArch64. Opravené boli chyby spracovania TLS, PLT, LTO, komprimovaných ladenia informácií, veľkých vyrovnaní a presunov v PIE- a zdieľaných objektoch. Opravené boli možné pády pri analýze skriptov linkeru a chyby pri vytváraní sekcií .tbss, .strtab a .eh_frame.

 

Wild podporuje Linux na architektúrach x86-64, AArch64 a RISC-V; podpora LoongArch64 a PowerPC64LE je zatiaľ označená ako počiatočná. Linker je možné nainštalovať z pripravených archívov, cez cargo-binstall, Homebrew, Nix alebo príkazom cargo install --locked wild-linker. Zdrojový kód je distribuovaný podľa výberu používateľa pod licenciami Apache 2.0 alebo MIT.

 

Zdroj: linux.org.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster