Wild 0.10


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

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster