4. august ble utgitt Wild 0.10 â en frittstĂ„ende linker, skrevet i Rust og fĂžrst og fremst beregnet for rask bygging av programmer i Linux. Linkeren utfĂžrer den avsluttende fasen av byggingen: den kombinerer objektfiler og biblioteker til en ferdig kjĂžrbar fil eller delt bibliotek. Wild kan brukes som en erstatning for GNU ld, LLD og Mold, selv om utviklernes uttalte endelige mĂ„l er inkrementell linking â som fortsatt ikke er implementert.
Â
En av hovednyhetene var stĂžtten for parameterne âgdb-index og âno-gdb-index. NĂ„r denne muligheten er aktivert, lager Wild en .gdb_index-seksjon i utdatafilen med indeksen for feilsĂžkingsinformasjonen. Takket vĂŠre dette kan GDB raskere finne nĂždvendige symboler i store programmer, uten Ă„ mĂ„tte lage indeksen separat etter bygging. Implementeringen stĂžtter den niende versjonen av GDB Index-formatet; skanning, sammenslĂ„ing og skriving av indeksen er blitt parallellisert.
Â
Arbeidet med linker-skript er betydelig utvidet. StĂžtte har blitt lagt til for:
- seksjoner /DISCARD/ for Ä ekskludere unÞdvendige inngÄende seksjoner;
- brukerdefinerte programheader PHDRS;
- funksjoner SIZEOF_HEADERS, DEFINED og SEGMENT_START;
- nĂžkkelordet AT og funksjonen LOADADDR;
- betingede uttrykk med den ternĂŠre operatoren;
- kommandoene SORT, SORT_BY_NAME og SORT_BY_ALIGNMENT;
- symbolet __bss_start;
- maler for fylling av utgÄende seksjoner;
- kommandoene OUTPUT_FORMAT og OUTPUT_ARCH;
- flere relative tellere for gjeldende adresse.
Â
Full kompatibilitet med GNU ld er fortsatt ikke oppnÄdd. For eksempel forblir deler av mulighetene til kommandoen MEMORY, seksjoner OVERLAY og enkelte mÄter Ä plassere seksjoner pÄ ufullstendige. Utviklerne fÞrer spesielt en tabell over de nÞdvendige mulighetene for linking av Linux-kjernen.
Â
Ytelsen ved plassering av byggresultater pĂ„ Btrfs og VFAT er forbedret. Wild bruker nĂ„ automatisk modusen âno-mmap-output-file og mapper ikke utdatafilen til minnet via mmap. I en test av linker Zed pĂ„ Btrfs ble tiden redusert fra omtrent 2,6â2,8 til 1,5â1,8 sekunder. Forfatteren av endringen advarer imidlertid om at selv etter optimalisering forblir Btrfs i dette scenariet betydelig langsommere enn tmpfs; for Ext4 og XFS viste det seg at bruk av mmap derimot var mer fordelaktig.
OverfÞringen av Wild til andre formater og plattformer fortsetter. Den eksperimentelle versjonen for WebAssembly kan allerede kompilere en rekke programmer, og porten for Mach-O kan hÄndtere de enkleste kjÞrbare filene. Arbeidet med 32-bits mÄlplattformer er pÄbegynt, noe som i fremtiden skal forenkle bruken av Wild i utviklingen av innebygde systemer. OgsÄ innledende behandling av objektfiler PowerPC64 ELFv2 er lagt til, samt videre utvikling av stÞtte for Mach-O, inkludert svarende objektfiler og direkte kompilering med dynamiske biblioteker. Disse portene bÞr ennÄ ikke betraktes som klare for daglig bruk.
Den bibliotekversjonen av linker libwild kan nÄ motta inndatabaner og lagre resultatet direkte i minnet. Dette gjÞr at andre programmer kan integrere Wild uten Ä mÄtte opprette mellomliggende filer pÄ disken. I tillegg overstyrer ikke biblioteket lenger den globale trÄdpoolen Rayon, og stÞtten for Zstandard-komprimering kan deaktiveres under byggingen.
Utgivelsen inneholder en rekke rettelser for x86-64, AArch64, RISC-V og LoongArch64. Feil i behandlingen av TLS, PLT, LTO, komprimert debugging-informasjon, store justeringer og flyttinger i PIE- og delte objekter er lĂžst. Mulige krasj ved parsing av linker-innstillinger og feil i dannelsen av seksjonene .tbss, .strtab og .eh_frame er rettet.
Â
Wild stĂžtter Linux pĂ„ arkitekturene x86-64, AArch64 og RISC-V; stĂžtten for LoongArch64 og PowerPC64LE er fortsatt merket som tidlig. Linkeren kan installeres fra forhĂ„ndslagde arkiver, via cargo-binstall, Homebrew, Nix eller ved Ă„ bruke kommandoen cargo install âlocked wild-linker. Kildekoden distribueres etter brukerens valg under lisensene Apache 2.0 eller MIT.
Â
Kilde: linux.org.ru
