4. augustil toimus vĂ€ljaanne Wild 0.10 â vaba siduri tööriist, mis on kirjutatud Rustis ja mĂ”eldud eelkĂ”ige programmide kiireks koostamiseks Linuxis. Siduri tööriist tĂ€idab koostamise lĂ”ppfaasi: see ĂŒhendab objektifailid ja teegid valmis kĂ€ivitatavaks failiks vĂ”i jagatud teegiks. Wild vĂ”ib kasutada GNU ld, LLD ja Mold asendajana, kuigi arendajate esialgne eesmĂ€rk â inkrementaalne sidumine â ei ole veel teostatud.
Ăks peamisi uuendusi on toimetuste toetamine âgdb-index ja âno-gdb-index. Selle vĂ”imaluse aktiveerimisel loob Wild vĂ€ljundfailis sektsiooni .gdb_index silumisteabe indeksiga. TĂ€nu sellele suudab GDB kiiremini leida vajalikke sĂŒmboleid suurtes programmides, moodustamata indeksi eraldi pĂ€rast koostamist. Teostus toetab GDB Indeksi ĂŒheksandat versiooni; indeksi skaneerimise, ĂŒhendamise ja kirjutamise toimingud on paralleelseteks muudetud.
Oluliselt on laiendatud siduri skriptide toimetamist. Lisatud on toimetused:
- sektsiooni /DISCARD/, et vÀlistada ebavajalikud sisendsektsioonid;
- kasutaja mÀÀratud programmi pÀiseid PHDRS;
- funktsioonid SIZEOF_HEADERS, DEFINED ja SEGMENT_START;
- vÔtmesÔna AT ja funktsioon LOADADDR;
- tingimuslikud vÀljendid kolmanda operaatoriga;
- kÀsklused SORT, SORT_BY_NAME ja SORT_BY_ALIGNMENT;
- sĂŒmbol __bss_start;
- vÀljundsektsioonide tÀitmise mallid;
- kÀsklused OUTPUT_FORMAT ja OUTPUT_ARCH;
- mitu suhtelist loendurit praeguse aadressi jaoks.
TĂ€ielik ĂŒhilduvus GNU ld-ga ei ole veel saavutatud. NĂ€iteks osa MEMORY kĂ€su vĂ”imalustest, OVERLAY sektsioonid ja mĂ”ned sektsioonide paigutamise meetodid jÀÀvad lĂ”petamata. Arendajad peavad eraldi tabelit vĂ”imalustest, mis on vajalikud Linuxi tuuma sidumiseks..
Parandatud on jĂ”udlust koostamise tulemuste paigutamisel Btrfs ja VFAT. Wild kasutab nĂŒĂŒd automaatselt reĆŸiimi âno-mmap-output-file ning ei kaardista vĂ€ljundfaili mĂ€llu lĂ€bi mmap. Arendaja lĂ€bi viidud Zed sidumise testimisel Btrfs-il vĂ€henes aeg umbes 2,6â2,8 sekundilt 1,5â1,8 sekundile. Sellega seoses hoiatab muudatuste autor, et isegi pĂ€rast Btrfsi optimeerimist jÀÀb see antud stsenaariumis mĂ€rgatavalt aeglasemaks kui tmpfs; Ext4 ja XFS puhul osutus mmap kasutamine vastupidi kasulikumaks.
Wild'i ĂŒleviimine erinevatesse vormingutesse ja platvormidele jĂ€tkub. Eksperimentaalne versioon WebAssembly'le suudab juba kokku panna mitmeid programme, samas kui Mach-O port toetab pĂ”hilisi kĂ€ivitatavaid faile. Töö on alustatud 32-bitiste sihtplatvormide osas, mis peaks tulevikus lihtsustama Wildi kasutamist sisseehitatud sĂŒsteemide arendamisel. Samuti on lisatud algne töötlemine PowerPC64 ELFv2 objektifailide jaoks ning on jĂ€tkatud Mach-O toe arendamist, sealhulgas universaalseid objektifailide ja dĂŒnaamiliste teekidega otsest linkimist. Nende portide kasutamine ei ole veel igapĂ€evaseks kasutamiseks valmis.
Raamatukoguvariant linkimistööriistast libwild suudab nĂŒĂŒd vastu vĂ”tta sisendfailid ja salvestada tulemuse otse mĂ€llu. See vĂ”imaldab teistel programmidel Wild'i integreerida ilma kohustuslike vahefailide loomise vajaduseta. Lisaks ei ĂŒlekirjuta raamatukogu enam globaalset kiudude basseini Rayon, ning Zstandard'i kompressiooni tugi on vĂ”imalik koostamisel vĂ€lja lĂŒlitada.
VĂ€ljalaskele on lisatud palju parandusi x86-64, AArch64, RISC-V ja LoongArch64 jaoks. Parandatud on TLS, PLT, LTO, kompressitud silumisinfo, suured joondused ja liigutamised PIE- ja jagatud objektides. Parandatud on vĂ”imalikke arvestamata lĂ”petamisi linkimisĂŒlesannete parsimisel ning vigu sektsioonide .tbss, .strtab ja .eh_frame loomisel.
Wild toetab Linuxit arhitektuuridel x86-64, AArch64 ja RISC-V; LoongArch64 ja PowerPC64LE tugi on praegu mÀÀratletud kui algeline. Linkimistööriista saab installida valmis arhiividest, lÀbi cargo-binstall, Homebrew, Nix vÔi kÀsuga cargo install --locked wild-linker. Allika kood on kasutaja valikule tasuta vÀlja antud litsentside Apache 2.0 vÔi MIT.
Allikas: linux.org.ru
