4. augustā notika izlaidums Wild 0.10 — brīvas kompaktēšanas programmas, kas uzrakstīta Rust un paredzēta galvenokārt programmu ātrai sastādīšanai Linux. Kompaktēšanas programma veic gala sastādīšanas posmu: apvieno objektu failus un bibliotēkas gatavā izpildāmā failā vai koplietojamā bibliotēkā. Wild var izmantot kā GNU ld, LLD un Mold aizstājēju, lai gan izstrādātāju deklarētā galīgā mērķis — inkrementālā kompaktēšana — vēl nav īstenota.
Viens no galvenajiem jauninājumiem ir atbalsts parametram —gdb-index un —no-gdb-index. Iekļaujot šo iespēju, Wild izveido izejas failā .gdb_index sekciju ar debugginga informācijas indeksu. Pateicoties tam, GDB var ātrāk atrast nepieciešamos simbolus lielās programmās, neveidojot indeksu atsevišķi pēc kompaktēšanas. Risinājums atbalsta devīto GDB indeksu formātu; skenēšanas, apvienošanas un indeksa rakstīšanas operācijas ir paralelizētas.
Significantly expanded script handling. Added support for:
- sekcijām /DISCARD/ nevajadzīgo izejas sekciju izslēgšanai;
- lietotāju programmēšanas PHDRS virsrakstiem;
- funkcijām SIZEOF_HEADERS, DEFINED un SEGMENT_START;
- atslēgvārda AT un funkcijas LOADADDR;
- nosacījuma izteiksmēm ar ternāro operatoru;
- komandām SORT, SORT_BY_NAME un SORT_BY_ALIGNMENT;
- simbolam __bss_start;
- izejas sekciju aizpildīšanas veidnēm;
- komandām OUTPUT_FORMAT un OUTPUT_ARCH;
- vairākiem relatīviem pašreizējā adrese skaitītājiem.
Pilnīga saderība ar GNU ld vēl nav sasniegta. Piemēram, daļa MEMORY komandas iespēju, OVERLAY sekcijas un daži veidi sekciju izvietošanai paliek nesabalansētas. Izstrādātāji atsevišķi vada iespēju tabulu, kas nepieciešama Linux kodola kompaktēšanai.
Uzlabota veiktspēja, izvietojot virs piešķirtajām Btrfs un VFAT. Wild tagad automātiski izmanto režīmu —no-mmap-output-file un neuztver izejas failu atmiņā caur mmap. Nodarbinātā pārbaudē Zed kompaktēšanai Btrfs laiks samazinājās no aptuveni 2,6–2,8 līdz 1,5–1,8 sekundēm. Tomēr šīs izmaiņu autors brīdina, ka, pat pēc optimizācijas, Btrfs šajā scenārijā joprojām ir ievērojami lēnāks nekā tmpfs; attiecībā uz Ext4 un XFS izmantošana mmap, tieši pretēji, izrādījās izdevīgāka.
Pāreja uz citiem formātiem un platformām turpinās. Eksperimentos tīmekļa versija jau spēj kompilēt vairākas programmas, bet Mach-O ports — vienkāršākos izpildāmos failus. Sākti darbi pie 32 bitu mērķa platformām, kas nākotnē atvieglos Wild lietošanu iebūvēto sistēmu izstrādē. Tāpat pievienota sākotnējā PowerPC64 ELFv2 objektu failu apstrāde, un turpināta Mach-O atbalsta attīstība, tostarp universālie objektu faili un tiešā saistīšana ar dinamiskajām bibliotēkām. Šie porti pagaidām nav uzskatāmi par gataviem ikdienas lietošanai.
Bibliotēku variants kompilatoram libwild tagad var saņemt ievades failus un saglabāt rezultātu tieši atmiņā. Tas ļauj citām programmām integrēt Wild bez obligātas starpposma failu izveides diskā. Turklāt bibliotēka vairs nepārraksta globālo plūsmu rezervi Rayon, un atbalstu Zstandard saspiešanai var izslēgt būvniecības laikā.
Izlaidumā iekļauti daudzi labojumi x86-64, AArch64, RISC-V un LoongArch64. Novērstas TLS, PLT, LTO, saspiestās atbalsta informācijas, lielo izlīdzinājumu un pārvietošanas kļūdas PIE un dalītajos objektos. Izlabotas iespējamās avārijas, izturot kompilatoru skriptu parsēšanu, kā arī kļūdas sekciju .tbss, .strtab un .eh_frame veidošanā.
Wild atbalsta Linux arhitektūrām x86-64, AArch64 un RISC-V; LoongArch64 un PowerPC64LE atbalsts šobrīd ir tikai sākotnējā stadijā. Kompilatoru var instalēt no gatavām arhīvām, izmantojot cargo-binstall, Homebrew, Nix vai ar komandu cargo install —locked wild-linker. Avota kods tiek izplatīts pēc izvēles zem licencēm Apache 2.0 vai MIT.
Avots: linux.org.ru
