Wild 0.10


Die Veröffentlichung fand am 4. August statt Wild 0.10 — des freien Linkers, der in Rust geschrieben wurde und insbesondere fĂŒr die schnelle Erstellung von Programmen unter Linux gedacht ist. Der Linker fĂŒhrt die finale Phase des Builds durch: Er kombiniert Objektdateien und Bibliotheken zu einer ausfĂŒhrbaren Datei oder einer Shared Library. Wild kann als Ersatz fĂŒr GNU ld, LLD und Mold verwendet werden, obwohl das erklĂ€rte Endziel der Entwickler — inkrementelles Linking — derzeit noch nicht umgesetzt ist.

 

Eines der Hauptneuheiten ist die UnterstĂŒtzung der Parameter —gdb-index und —no-gdb-index. Wenn diese Funktion aktiviert ist, erstellt Wild im Ausgabedatei eine Sektion .gdb_index mit einem Index fĂŒr Debugginformationen. Dadurch kann GDB benötigte Symbole in großen Programmen schneller finden, ohne einen Index separat nach dem Build zu erstellen. Die Implementierung unterstĂŒtzt die neunte Version des GDB Index Formats; die Scanning-, ZusammenfĂŒhrungs- und Schreiboperationen des Index wurden parallelisiert.

 

Die Arbeit mit den Scripts des Linkers wurde erheblich erweitert. Folgendes wird nun unterstĂŒtzt:

  • Sektionen /DISCARD/ zum Ausschließen unnötiger Eingangssektionen;
  • Benutzerdefinierte Programmheader PHDRS;
  • Funktionen SIZEOF_HEADERS, DEFINED und SEGMENT_START;
  • Das SchlĂŒsselwort AT und die Funktion LOADADDR;
  • Bedingte AusdrĂŒcke mit dem ternĂ€ren Operator;
  • Befehle SORT, SORT_BY_NAME und SORT_BY_ALIGNMENT;
  • das Symbol __bss_start;
  • Vorlagen fĂŒr das AusfĂŒllen von Ausgabesections;
  • Befehle OUTPUT_FORMAT und OUTPUT_ARCH;
  • mehrere relative ZĂ€hler fĂŒr die aktuelle Adresse.

 

Komplette KompatibilitĂ€t mit GNU ld wurde noch nicht erreicht. Einige Möglichkeiten des Befehls MEMORY, die Sektionen OVERLAY und einige Methoden zur Platzierung von Sektionen sind unvollstĂ€ndig. Die Entwickler fĂŒhren separat eine Übersicht ĂŒber die Funktionen, die fĂŒr das Linken des Linux-Kerns erforderlich sind.

 

Die Leistung beim Platzieren von Build-Ergebnissen auf Btrfs und VFAT wurde verbessert. Wild verwendet jetzt automatisch den Modus —no-mmap-output-file und spiegelt die Ausgabedatei nicht ĂŒber mmap im Speicher. In einem Test des Entwicklers mit dem Linker Zed auf Btrfs reduzierte sich die Zeit von etwa 2,6–2,8 auf 1,5–1,8 Sekunden. Dabei warnt der Autor der Änderung, dass Btrfs in diesem Szenario, selbst nach der Optimierung, deutlich langsamer bleibt als tmpfs; fĂŒr Ext4 und XFS war die Verwendung von mmap hingegen vorteilhafter.

Der Transfer von Wild auf andere Formate und Plattformen wird fortgesetzt. Die experimentelle Version fĂŒr WebAssembly kann bereits eine Reihe von Programmen kompilieren, wĂ€hrend der Port fĂŒr Mach-O einfache ausfĂŒhrbare Dateien unterstĂŒtzt. Es wurde mit der Arbeit an 32-Bit-Zielplattformen begonnen, was die Anwendung von Wild in der Entwicklung eingebetteter Systeme zukĂŒnftig vereinfachen sollte. Außerdem wurde mit der ersten Verarbeitung von Objektdateien im PowerPC64 ELFv2-Format begonnen und die UnterstĂŒtzung fĂŒr Mach-O weiterentwickelt, einschließlich universeller Objektdateien und direkter VerknĂŒpfung mit dynamischen Bibliotheken. Diese Ports sollten vorerst nicht als bereit fĂŒr den tĂ€glichen Gebrauch betrachtet werden.

Die Bibliotheksversion des Linkers libwild kann jetzt Eingabedateien entgegennehmen und das Ergebnis direkt im Speicher speichern. Dies ermöglicht anderen Programmen, Wild einzubetten, ohne dafĂŒr zwingend Zwischenablage-Dateien auf der Festplatte erstellen zu mĂŒssen. Zudem ĂŒberschreibt die Bibliothek den globalen Thread-Pool Rayon nicht mehr, und die UnterstĂŒtzung fĂŒr das Zstandard-Kompressionsformat kann wĂ€hrend des Builds deaktiviert werden.

Das Release umfasst zahlreiche Fehlerkorrekturen fĂŒr x86-64, AArch64, RISC-V und LoongArch64. Fehler bei der Verarbeitung von TLS, PLT, LTO, komprimierten Debugging-Informationen, großen Ausrichtungen und Verschiebungen in PIE- und Shared Objects wurden behoben. Mögliche AbstĂŒrze beim Parsen von Linkerskripten sowie Fehler bei der Erstellung der Sektionen .tbss, .strtab und .eh_frame wurden korrigiert.

 

Wild unterstĂŒtzt Linux auf den Architekturen x86-64, AArch64 und RISC-V; die UnterstĂŒtzung fĂŒr LoongArch64 und PowerPC64LE ist derzeit noch als anfĂ€nglich gekennzeichnet. Der Linker kann aus vorgefertigten Archiven, ĂŒber cargo-binstall, Homebrew, Nix oder mit dem Befehl cargo install —locked wild-linker installiert werden. Der Quellcode wird nach Wahl des Benutzers unter den Lizenzen Apache 2.0 oder MIT.

 

Quelle: linux.org.ru

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster