4. augustil toimus vĂ€ljaanne Wild 0.10 â vabast kompilaator, mis on kirjutatud Rustis ja mĂ”eldud eelkĂ”ige programmide kiireks kokkupanekuks Linuxis. Kompilaator tĂ€idab kokkupaneku viimast etappi: ĂŒhendab objekti failid ja teegid valmisse kompileeritavasse faili vĂ”i jagatud teeki. Wild vĂ”ib kasutada GNU ld, LLD ja Moldi asendajana, kuigi arendajate vĂ€idetava lĂ”ppeesmĂ€rgina â inkrementaalne kokkupanek â ei ole veel ellu viidud.
Â
Ăks peamisi uuendusi oli toetuse lisamine parameetritele âgdb-index ja âno-gdb-index. Kui see vĂ”imalus on aktiveeritud, loob Wild vĂ€ljundfailis sektsiooni .gdb_index, mis sisaldab silumise teabe indeksit. Selle tĂ”ttu suudab GDB kiiremini leida vajalikud sĂŒmbolid suurtes programmides, ilma et indeksit pĂ€rast kokkupanekut eraldi moodustataks. Rakendamine toetab GDB indeksiformaadi ĂŒheksandat versioon; skaneerimise, ĂŒhendamise ja indeksi kirjutamise toimingud on paralleelseks muudetud.
Â
Oluliselt on laiendatud skriptide töötamise vÔimalusi. Lisatud on tugi:
- sektsioonid /DISCARD/ tarbetute sisseseatud sektsioonide vÀlistamiseks;
- kasutaja mÀÀratud programmide PHDRS pÀiseid;
- funktsioone SIZEOF_HEADERS, DEFINED ja SEGMENT_START;
- vÔti AT ja funktsioon LOADADDR;
- tingimuslikke vÀljendeid kolmikoperatuuriga;
- kÀsklusi SORT, SORT_BY_NAME ja SORT_BY_ALIGNMENT;
- sĂŒmbol __bss_start;
- vÀljade tÀitmismalle;
- kÀsklusi OUTPUT_FORMAT ja OUTPUT_ARCH;
- mitmeid suhtelisi loendureid praegusele aadressile.
Â
TĂ€ielik ĂŒhilduvus GNU ld-ga pole veel saavutatud. NĂ€iteks jÀÀb osa kĂ€skluse MEMORY vĂ”imalustest, sektsioonid OVERLAY ja mĂ”ned sektsioonide paigutamise viisid lĂ”petamata. Arendajad peavad eraldi tabelit vĂ”imalustest, mis on vajalikud Linuxi tuuma kokkupanekuks.
Â
KokkuvĂ”tte tĂ”husus Btrfs ja VFAT-i tulemite paigutamisel on paranenud. Wild kasutab nĂŒĂŒd automaatselt reĆŸiimi âno-mmap-output-file ega kaardista vĂ€ljundfaili mĂ€lu kaudu mmap. Arendaja testis Zedi kompilaatorit Btrfs-is, mille kĂ€igus aeg vĂ€henes umbkaudu 2,6â2,8-lt 1,5â1,8 sekundini. Samas hoiatab muudatuse autor, et isegi pĂ€rast optimeerimist jÀÀb Btrfs antud stsenaariumis tunduvalt aeglasemaks kui tmpfs; Ext4 ja XFS kasutamisel oli mmap vastupidi kasulikum.
Wildi ĂŒleviimine teistesse formaatidesse ja platvormidesse jĂ€tkub. Eksperimentaalne versioon WebAssembly jaoks suudab juba komponeerida mitmeid programme, samas kui Mach-O port toetab lihtsamaid tĂ€idetavaid faile. Alustatud on töö 32-bitiste sihtplatvormide kallal, mis peaks tulevikus lihtsustama Wildi rakendamist sisseehitatud sĂŒsteemide arenduses. Samuti on lisatud algne PowerPC64 ELFv2 objekti failide töötlemine ja jĂ€tkatud Mach-O toe arendamist, sealhulgas universaalsed objektifailid ja otsene komponeerimine dĂŒnaamiliste raamatukogudega. Need portid ei ole veel igapĂ€evaseks kasutamiseks valmis.
Raamatukogude versioon kompilaatorist libwild suudab nĂŒĂŒd sisendfailid vastu vĂ”tta ja salvestada tulemuse otse mĂ€llu. See vĂ”imaldab teistel programmidel integreerida Wildi ilma vahefailide loomise kohustuseta. Lisaks ei ĂŒleta raamatukogu enam globaalset kiudude suunda Rayon, ning Zstandard'i tihenduse tugi on vĂ”imalik kogumise ajal vĂ€lja lĂŒlitada.
VĂ€ljalaske koosseisu kuulub palju parandusi x86-64, AArch64, RISC-V ja LoongArch64 jaoks. Parandatud on TLS, PLT, LTO, tihendatud silumisinfo, suurte ĂŒhtlustamiste ja liikumiste töötlemise vead PIE- ja jagatud objektides. Parandatud on vĂ”imalikke crashes kompilaatori skriptide töötlemisel ja sektsioonide .tbss, .strtab ja .eh_frame loomisvead.
Â
Wild toetab Linuxit arhitektuuridel x86-64, AArch64 ja RISC-V; LoongArch64 ja PowerPC64LE tugi on hetkel tÀhistatud algtasemena. Kompilaatori saab installida valmis arhiividest, cargo-binstall'i kaudu, Homebrew, Nix vÔi kÀsuga cargo install --locked wild-linker. Algkood on kasutaja valikul saadaval litsentside Apache 2.0 vÔi MIT all.
Â
Allikas: linux.org.ru
