Wild 0.10


Le 4 aoĂ»t, la sortie a eu lieu Wild 0.10 — d'un assembleur libre, Ă©crit en Rust et conçu principalement pour la compilation rapide de programmes sous Linux. L'assembleur exĂ©cute la phase finale de l'assemblage : il combine les fichiers objets et les bibliothĂšques en un fichier exĂ©cutable prĂȘt Ă  l'emploi ou une bibliothĂšque partagĂ©e. Wild peut ĂȘtre utilisĂ© comme alternative Ă  GNU ld, LLD et Mold, bien que l'objectif final dĂ©clarĂ© par les dĂ©veloppeurs soit l'assemblage incrĂ©mental — pas encore rĂ©alisĂ©.

 

L'une des principales nouveautĂ©s est le support des paramĂštres —gdb-index et —no-gdb-index. En activant cette fonctionnalitĂ©, Wild crĂ©e dans le fichier de sortie une section .gdb_index avec un index d'informations de dĂ©bogage. GrĂące Ă  cela, GDB peut trouver plus rapidement les symboles nĂ©cessaires dans de grands programmes, sans avoir Ă  crĂ©er l'index sĂ©parĂ©ment aprĂšs la compilation. La mise en Ɠuvre prend en charge la neuviĂšme version du format GDB Index ; les opĂ©rations de numĂ©risation, de fusion et d'Ă©criture de l'index ont Ă©tĂ© parallĂ©lisĂ©es.

 

Le travail avec les scripts d'assemblage a été considérablement élargi. Le support a été ajouté pour :

  • les sections /DISCARD/ pour exclure les sections d'entrĂ©e non nĂ©cessaires ;
  • les en-tĂȘtes de programme personnalisĂ©s PHDRS ;
  • les fonctions SIZEOF_HEADERS, DEFINED et SEGMENT_START ;
  • le mot-clĂ© AT et la fonction LOADADDR ;
  • les expressions conditionnelles avec l'opĂ©rateur ternaire ;
  • les commandes SORT, SORT_BY_NAME et SORT_BY_ALIGNMENT ;
  • le symbole __bss_start ;
  • les modĂšles de remplissage des sections de sortie ;
  • les commandes OUTPUT_FORMAT et OUTPUT_ARCH ;
  • plusieurs compteurs relatifs pour l'adresse actuelle.

 

La compatibilité complÚte avec GNU ld n'a pas encore été atteinte. Par exemple, certaines fonctionnalités de la commande MEMORY, les sections OVERLAY et certaines façons de placer des sections restent incomplÚtes. Les développeurs tiennent séparément un tableau des fonctionnalités nécessaires pour l'assemblage du noyau Linux.

 

Les performances ont Ă©tĂ© amĂ©liorĂ©es lors du placement des rĂ©sultats de compilation sur Btrfs et VFAT. Wild utilise dĂ©sormais automatiquement le mode —no-mmap-output-file et ne mappe pas le fichier de sortie en mĂ©moire via mmap. Dans un test effectuĂ© par le dĂ©veloppeur avec l'assemblage Zed sur Btrfs, le temps est passĂ© d'environ 2,6–2,8 Ă  1,5–1,8 seconde. Cependant, l'auteur du changement avertit que mĂȘme aprĂšs optimisation, Btrfs reste de maniĂšre significative plus lent que tmpfs dans ce scĂ©nario ; pour Ext4 et XFS, l'utilisation de mmap s'est en revanche avĂ©rĂ©e plus avantageuse.

Le transfert de Wild vers d'autres formats et plateformes se poursuit. Une version expĂ©rimentale pour WebAssembly est dĂ©jĂ  capable de lier un certain nombre de programmes, tandis que le port pour Mach-O prend en charge les fichiers exĂ©cutables les plus simples. Le travail sur les plateformes cibles 32 bits a Ă©tĂ© lancĂ©, ce qui devrait faciliter Ă  l'avenir l'utilisation de Wild dans le dĂ©veloppement de systĂšmes embarquĂ©s. Un traitement initial des fichiers objets PowerPC64 ELFv2 a Ă©galement Ă©tĂ© ajoutĂ© et le dĂ©veloppement du support Mach-O se poursuit, y compris les fichiers objets universels et la liaison directe avec des bibliothĂšques dynamiques. Ces ports ne doivent pas encore ĂȘtre considĂ©rĂ©s comme prĂȘts pour un usage quotidien.

La version bibliothĂšque du lieur libwild peut dĂ©sormais recevoir des fichiers d'entrĂ©e et enregistrer le rĂ©sultat directement en mĂ©moire. Cela permet Ă  d'autres programmes d'intĂ©grer Wild sans avoir Ă  crĂ©er des fichiers intermĂ©diaires sur le disque. De plus, la bibliothĂšque ne redĂ©finit plus le pool global de threads Rayon, et le support de la compression Zstandard peut ĂȘtre dĂ©sactivĂ© lors de la compilation.

La version comprend de nombreuses corrections pour x86-64, AArch64, RISC-V et LoongArch64. Des bugs dans le traitement de TLS, PLT, LTO, des informations de débogage compressées, des grands alignements et des déplacements dans les objets PIE et partagés ont été corrigés. Des plantages potentiels lors de l'analyse des scripts de linkers et des erreurs dans la formation des sections .tbss, .strtab et .eh_frame ont été résolus.

 

Wild prend en charge Linux sur les architectures x86-64, AArch64 et RISC-V ; le support pour LoongArch64 et PowerPC64LE est pour l'instant considĂ©rĂ© comme initial. Le lieur peut ĂȘtre installĂ© Ă  partir d'archives prĂȘtes Ă  l'emploi, via cargo-binstall, Homebrew, Nix ou avec la commande cargo install --locked wild-linker. Le code source est disponible selon le choix de l'utilisateur sous les licences Apache 2.0 ou MIT.

 

Source : linux.org.ru

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster