Publication du composeur Mold 3.0, développé par le développeur LLVM lld

La version 3.0 de l'assembleur Mold a été publiée. Elle peut servir de remplacement transparent et plus rapide au linker GNU sur les systèmes Linux. Le projet est développé par Rui Ueyama, l'auteur du linker LLVM lld. La caractéristique principale de Mold est sa vitesse d'édition des fichiers objet, nettement supérieure à celle des linkers GNU gold et LLVM lld (l'édition avec Mold s'effectue à une vitesse à peine deux fois plus lente que la simple copie de fichiers avec l'utilitaire cp). Le code est écrit en Rust et distribué sous licence MIT.

La réduction du temps d'édition permet d'améliorer considérablement la convivialité du développement de grands projets en réduisant le temps d'attente lors de la création des exécutables pendant le débogage et les tests des modifications. L'idée de créer Mold est née de la frustration liée à l'attente de la fin de l'édition après chaque modification du code, ainsi qu'à l'inefficacité des linkers existants sur des systèmes multicœurs et au désir d'essayer une architecture d'édition fondamentalement différente, sans recourir à des modèles excessivement complexes comme l'édition incrémentale.

La haute performance de l'édition d'un fichier exécutable à partir d'un grand nombre de fichiers objet préparés par le compilateur dans Mold est atteinte grâce à l'utilisation d'algorithmes plus rapides, à un parallélisme actif des opérations entre les cœurs CPU disponibles et à l'application de structures de données plus efficaces. Par exemple, Mold met en œuvre une technique d'exécution de calculs intensifs simultanément avec la copie de fichiers, un chargement anticipé des fichiers objet en mémoire, l'utilisation de tables de hachage rapides pour la résolution des symboles, le scan des tables de relocation dans un thread séparé et la dé-duplication des sections répétées dans différents fichiers.

La branche Mold 3.0 se distingue par la réécriture de la base de code de C++ (C++20) en Rust. Mold 3.0 peut être utilisé comme un remplacement transparent de Mold 2.42.1, la dernière version en C++, et prend en charge toutes les options et architectures cibles précédemment disponibles. Le passage à Rust a permis de protéger le projet contre les problèmes potentiels lors du traitement de fichiers objets corrompus : lorsque la version en C++ échouait en accédant à des zones mémoire en dehors du tampon, la version en Rust interrompt le travail au stade de la vérification des limites. La performance de l'implémentation en Rust est équivalente à celle de la version en C++.

Outre la migration vers Rust, l'objectif clé lors du développement de la branche 3.0 était d'améliorer la compatibilité avec GNU ld et de préparer le projet à être utilisé comme l'éditeur par défaut dans les distributions Linux. Le système de construction a été remplacé de CMake par Cargo, et le système de tests de ctest par cargo test. La bibliothèque oneTBB a été supprimée des dépendances.

Source : opennet.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