Wild 0.10


4. kolovoza objavljeno Wild 0.10 — slobodnog linker-a, napisanog na Rustu i namijenjenog prije svega za brzu izgradnju programa na Linuxu. Linker obavlja završnu fazu izgradnje: spaja objektne datoteke i biblioteke u gotovu izvršnu datoteku ili dijeljenu biblioteku. Wild se može koristiti kao zamjena za GNU ld, LLD i Mold, iako je krajnji cilj koji su postavili programeri — inkrementalno povezivanje — još nije realiziran.

 

Jedna od glavnih novina je podrška za parametre —gdb-index i —no-gdb-index. Kada je ova mogućnost uključena, Wild stvara u izlaznoj datoteci sekciju .gdb_index s indeksom informacija za debagiranje. Zbog toga GDB može brže pronaći potrebne simbole u velikim programima, ne formirajući indeks odvojeno nakon izgradnje. Implementacija podržava devetu verziju GDB Index formata; operacije skeniranja, spajanja i pisanja indeksa su paralelizirane.

 

Značajno je proširen rad s linker skriptama. Dodana je podrška za:

  • sekcije /DISCARD/ za isključivanje nepotrebnih ulaznih sekcija;
  • korištenje korisničkih zaglavlja programa PHDRS;
  • funkcije SIZEOF_HEADERS, DEFINED i SEGMENT_START;
  • ključnu riječ AT i funkciju LOADADDR;
  • uvjetne izraze s ternarnim operatorom;
  • naredbe SORT, SORT_BY_NAME i SORT_BY_ALIGNMENT;
  • simbol __bss_start;
  • predloške za popunjavanje izlaznih sekcija;
  • naredbe OUTPUT_FORMAT i OUTPUT_ARCH;
  • nekoliko relativnih brojača trenutne adrese.

 

Puna kompatibilnost s GNU ld još nije postignuta. Na primjer, dio mogućnosti naredbe MEMORY, sekcije OVERLAY i neki načini smještaja sekcija ostaju nedovršeni. Programeri posebno vode tablicu mogućnosti potrebnih za povezivanje Linux jezgre..

 

Poboljšana je učinkovitost prilikom smještanja rezultata izgradnje na Btrfs i VFAT. Wild sada automatski koristi način —no-mmap-output-file i ne mapira izlaznu datoteku u memoriju putem mmap. U testiranju izgradnje Zed na Btrfs, vrijeme se smanjilo s približno 2,6–2,8 na 1,5–1,8 sekundi. Autor promjene upozorava da čak i nakon optimizacije, Btrfs u ovom scenariju ostaje značajno sporiji od tmpfs; za Ext4 i XFS, korištenje mmap, naprotiv, pokazalo se isplativijim.

Prijenos Wilda na druge formate i platforme se nastavlja. Eksperimentalna verzija za WebAssembly već može povezivati niz programa, dok port za Mach-O podržava osnovne izvršne datoteke. Rad je započet na 32-bitnim ciljnim platformama, što bi u budućnosti trebalo olakšati upotrebu Wilda u razvoju ugrađenih sustava. Također, dodana je početna obrada objektnih datoteka PowerPC64 ELFv2 i nastavljen je razvoj podrške za Mach-O, uključujući univerzalne objektne datoteke i izravno povezivanje s dinamičkim knjižnicama. Ovi portovi se za sada ne smatraju spremnima za svakodnevnu upotrebu.

Knjižnička verzija linker-a libwild sada može primati ulazne datoteke i spremati rezultate izravno u memoriju. To omogućava drugim programima da integriraju Wild bez potrebe za stvaranjem međufajlova na disku. Osim toga, knjižnica više ne redefinira globalni skup niti-a Rayon, a podrška za kompresiju Zstandard može se isključiti tijekom gradnje.

U izdanju je uključeno mnogo ispravaka za x86-64, AArch64, RISC-V i LoongArch64. Ispravljene su greške u obradi TLS-a, PLT-a, LTO-a, kompresiranih informacija o debagiranju, velikih poravnanja i pomaka u PIE i dijeljenim objektima. Ispravljeni su mogući rušenja prilikom analize skripti linkera i greške u formiranju sekcija .tbss, .strtab i .eh_frame.

 

Wild podržava Linux na arhitekturama x86-64, AArch64 i RISC-V; podrška za LoongArch64 i PowerPC64LE je za sada označena kao početna. Linker se može instalirati iz gotovih arhiva, putem cargo-binstall, Homebrew, Nix ili naredbom cargo install —locked wild-linker. Izvorni kod se distribuira po izboru korisnika pod licencama Apache 2.0 ili MIT.

 

Izvor: linux.org.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster