4. augustil leidis aset vĂ€ljaanne Wild 0.10 â vabast komposiitor, mis on kirjutatud Rustis ja mĂ”eldud eelkĂ”ige programmide kiireks kokkupanekuks Linuxis. Komposiitor sooritab kokkupaneku viimase etapi: ĂŒhendab objekti failid ja raamatukogud valmis tĂ€itmiseks mĂ”eldud faili vĂ”i jagatavaks raamatukoguks. Wildi saab kasutada GNU ld, LLD ja Moldi asendajana, kuigi arendajate poolt vĂ€lja kuulutatud lĂ”ppeesmĂ€rk â inkrementaalne kompositsioon â on seni ellu viimata.
Â
Ăheks peamiseks uuenduseks on saanud parameetrite toetamine âgdb-index ja âno-gdb-index. Selle vĂ”imaluse aktiveerimisel loob Wild vĂ€ljundfailis .gdb_index sektsiooni, kus on korraldus teabe indeksi kohta. TĂ€nu sellele suudab GDB kiiremini leida vajalikke sĂŒmboleid suurtes programmides, mitte koostama indeksit eraldi pĂ€rast kokkupanekut. Teostus toetab GDB indeksi ĂŒheksandat versiooni; skaneerimise, ĂŒhendamise ja indeksi kirjutamise toimingud on paralleeliseeritud.
Â
Oluliselt on laiendatud komposiitori skriptide toetust. Lisatud on toimetamine:
- sektsioonide /DISCARD/ jaoks, et vÀlistada mittevajalikud sissesaamis sektsioonid;
- kasutaja mÀÀratud programmide PHDRS pÀiseid;
- funktsioone SIZEOF_HEADERS, DEFINED ja SEGMENT_START;
- vÔtmesÔna AT ja funktsioon LOADADDR;
- tingimuslikke vÀljendeid, kasutades kolmeosalisi operaatorid;
- kÀsklusi SORT, SORT_BY_NAME ja SORT_BY_ALIGNMENT;
- sĂŒmbolit __bss_start;
- vÀljundsektsioonide tÀitemalle;
- kÀsklusi OUTPUT_FORMAT ja OUTPUT_ARCH;
- mitmeid suhtelisi loendureid, et jÀlgida praegust aadressi.
Â
TĂ€ielikku ĂŒhilduvust GNU ld-ga pole veel saavutatud. NĂ€iteks osa MEMORY kĂ€skluse vĂ”imalustest, sektsioonid OVERLAY ja mĂ”ned sektsioonide paigutamise viisid jÀÀvad lĂ”petamata. Arendajad peavad eraldi tabelit vĂ”imalustest, mis on vajalikud Linuxi tuuma kokkupanekuks.
Â
Parandatud on jĂ”udlust kompositsiooni tulemuste paigutamisel Btrfs ja VFAT sĂŒsteemidesse. Wild kasutab nĂŒĂŒd automaatselt reĆŸiimi âno-mmap-output-file ja ei kuvata vĂ€ljundfaili mĂ€llu lĂ€bi mmap. Arendaja lĂ€bi viidud Zed kompositsiooni testimise ajal vĂ€henes aeg ligikaudu 2,6â2,8 sekundilt 1,5â1,8 sekundile. Sellega seoses hoiatab muudatuse autor, et isegi pĂ€rast Btrfsi optimeerimist jÀÀvad need stsenaariumid oluliselt aeglasemaks kui tmpfs; Ext4 ja XFS puhul osutus mmap aga vastupidiselt efektiivsemaks.
Wildi ĂŒleviimine teistesse formaatidesse ja platvormidesse jĂ€tkub. Eksperimentaalne versioon WebAssembly jaoks oskab juba komponente kokku panna, samas kui Mach-O port toetab lihtsate kĂ€ivitatavate failide loomist. Töö 32-bitiste sihtplatvormide kallal on alanud, mis peaks tulevikus lihtsustama Wildi rakendamist integreeritud sĂŒsteemide arenduses. Samuti on lisatud esmane töötlemine PowerPC64 ELFv2 objekti failide jaoks ja jĂ€tkatud Mach-O toe arendamist, sealhulgas universaalsed objektifailid ja otsekomponimine dĂŒnaamiliste teekidega. Need portid ei ole veel igapĂ€evaseks kasutamiseks valmis.
Raamatukogu variant kompaktsest libwildist suudab nĂŒĂŒd vastu vĂ”tta sisendeid ja salvestada tulemused otse mĂ€llu. See vĂ”imaldab teistel programmidel Wildi integreerida ilma, et oleks vaja luua vahefailsid kettale. Lisaks enam ei ĂŒlekirjuta teek globaalset tahkete niitide basseini Rayon, ning Zstandard tihendamise toe saab kogumisel vĂ€lja lĂŒlitada.
VĂ€ljalaskesse on lisatud hulgaliselt parandusi x86-64, AArch64, RISC-V ja LoongArch64 jaoks. EbatĂ€psusi on kĂ”rvaldatud TLS, PLT, LTO, tihendatud silumisinfo, suurte joondamiste ja liikumiste töötlemises PIE- ja jagatud objektides. Parandatud on vĂ”imalikke crash'e linkimise skriptide analĂŒĂŒsimisel ja sektsioonide .tbss, .strtab ja .eh_frame genereerimise vigu.
Â
Wild toetab Linuxit arhitektuuridel x86-64, AArch64 ja RISC-V; LoongArch64 ja PowerPC64LE tugi on praegu algusjĂ€rgus. Kompaktoreid saab installida valmis arhiividest, lĂ€bi cargo-binstall, Homebrew, Nix vĂ”i kĂ€suga cargo install âlocked wild-linker. Allika kood on kasutaja valikul litsentseeritud litsentside Apache 2.0 vĂ”i MIT all.
Â
Allikas: linux.org.ru
