Promoce se konala 4. srpna Divoký 0.10 — bezplatný linker napsaný v Rustu a určený primárně pro rychlé vytváření programů v LinuxLinker provádí závěrečnou fázi sestavení: kombinuje objektové soubory a knihovny do finálního spustitelného souboru nebo sdílené knihovny. Wild lze použít jako náhradu za GNU ld, LLD a Mold, ačkoli vývojáři uvádějí jako konečný cíl inkrementální linkování. dosud neimplementováno.
Jednou z hlavních inovací byla podpora parametrů --gdb-index a --no-gdb-indexPokud je tato funkce povolena, Wild vytvoří ve výstupním souboru sekci .gdb_index s indexem ladicích informací. To umožňuje GDB rychleji najít potřebné symboly v rozsáhlých programech, aniž by bylo nutné index po sestavení generovat samostatně. Implementace podporuje verzi 9 formátu GDB Index; operace skenování, slučování a zápisu indexu byly paralelizovány.
Skriptování v editoru bylo výrazně rozšířeno. Byla přidána podpora pro:
- Sekce /DISCARD/ pro vyloučení nepotřebných vstupních sekcí;
- Názvy vlastních programů PHDRS;
- funkce SIZEOF_HEADERS, DEFINED a SEGMENT_START;
- klíčové slovo AT a funkce LOADADDR;
- podmíněné výrazy s ternárním operátorem;
- Příkazy SORT, SORT_BY_NAME a SORT_BY_ALIGNMENT;
- symbol __bss_start;
- šablony pro vyplňování výstupních sekcí;
- Příkazy OUTPUT_FORMAT a OUTPUT_ARCH;
- několik relativních čítačů aktuální adresy.
Plné kompatibility s GNU ld dosud nebylo dosaženo. Například některé funkce příkazu MEMORY, sekce OVERLAY a některé metody pro umístění sekcí zůstávají nedokončené. Vývojáři na tom pracují samostatně. tabulka funkcí potřebných pro linkování jádra Linux.
Výkon byl vylepšen při ukládání výsledků sestavení na Btrfs a VFAT. Wild nyní automaticky používá režim --no-mmap-output-file a nenačítá výstupní soubor do paměti pomocí mmap. V testu linkování Zed na Btrfs, který provedl vývojář, se doba zkrátila z přibližně 2,6–2,8 na 1,5–1,8 sekundy. Autor změny však varuje, že i po optimalizaci zůstává Btrfs v tomto scénáři výrazně pomalejší než tmpfs; pro Ext4 a XFS se naopak použití mmap ukázalo jako výhodnější.
Wild je nadále portován do dalších formátů a platforem. Experimentální verze pro WebAssembly již dokáže propojit řadu programů, zatímco port pro Mach-O dokáže propojit základní spustitelné soubory. Byly zahájeny práce na 32bitových cílových platformách, což by mělo dále zjednodušit použití Wildu ve vývoji vestavěných systémů. Bylo také přidáno počáteční zpracování objektových souborů PowerPC64 ELFv2 a podpora Mach-O se nadále vyvíjí, včetně univerzálních objektových souborů a přímého propojení s dynamickými knihovnami. Tyto porty by zatím neměly být považovány za připravené pro každodenní použití.
Linker knihovny libwild nyní může přijímat vstupní soubory a ukládat výstup přímo do paměti. To umožňuje jiným programům vkládat Wild, aniž by nutně vytvářely mezilehlé soubory na disku. Knihovna navíc již nepřepisuje globální fond vláken Rayon a podporu pro kompresi Zstandard lze v době sestavení zakázat.
Tato verze obsahuje řadu oprav pro platformy x86-64, AArch64, RISC-V a LoongArch64. Mezi tyto opravy patří chyby při zpracování TLS, PLT, LTO, komprimovaných ladicích informací, velkých zarovnání a relokací v PIE a sdílených objektech. Opraveny jsou také potenciální pády během parsování skriptů linkeru a chyby generující sekce .tbss, .strtab a .eh_frame.
Divoké podpory Linux Na architekturách x86-64, AArch64 a RISC-V je podpora pro LoongArch64 a PowerPC64LE aktuálně uvedena jako počáteční. Linker lze nainstalovat z předpřipravených archivů, pomocí cargo-binstall, Homebrew, Nix nebo pomocí příkazu cargo install --locked wild-linker. Zdrojový kód je distribuován dle uvážení uživatele. Licence Apache 2.0 nebo MIT.
Zdroj: linux.org.ru
