Έχει δημοσιευτεί μια έκδοση του Mold linker, η οποία μπορεί να χρησιμοποιηθεί ως ταχύτερη και διαφανής αντικατάσταση του GNU linker σε συστήματα Linux. Το έργο αναπτύσσεται από τον συγγραφέα του συνδέσμου LLVM lld. Το βασικό χαρακτηριστικό του Mold είναι η πολύ υψηλή ταχύτητα σύνδεσης αρχείων αντικειμένων, ξεπερνώντας σημαντικά τους συνδέσμους GNU gold και LLVM lld (η σύνδεση στο Mold εκτελείται με ταχύτητα που είναι μόνο δύο φορές πιο αργή από την απλή αντιγραφή αρχείων με το βοηθητικό πρόγραμμα cp). Ο κώδικας είναι γραμμένος σε C++ (C++20) και διανέμεται με την άδεια AGPLv3.
Στη νέα έκδοση:
- Προστέθηκε υποστήριξη για Βελτιστοποίηση Χρόνου Σύνδεσης (LTO). Οι βελτιστοποιήσεις LTO διαφέρουν ως προς το ότι λαμβάνουν υπόψη την κατάσταση όλων των αρχείων που εμπλέκονται στη διαδικασία δημιουργίας, ενώ οι παραδοσιακές λειτουργίες βελτιστοποίησης βελτιστοποιούν κάθε αρχείο ξεχωριστά και δεν λαμβάνουν υπόψη τις συνθήκες κλήσης των συναρτήσεων που ορίζονται σε άλλα αρχεία. Προηγουμένως, όταν ανιχνεύονταν αρχεία με ενδιάμεσο κώδικα (IR) GCC ή LLVM, καλούνταν οι αντίστοιχοι σύνδεσμοι ld.bfd ή ld.lld, αλλά τώρα το Mold επεξεργάζεται αρχεία IR ανεξάρτητα και χρησιμοποιεί το Linker Plugin API, το οποίο χρησιμοποιείται επίσης στους συνδέσμους GNU ld και GNU gold. Η ταχύτητα όταν είναι ενεργοποιημένο το LTO είναι μόνο ελαφρώς μεγαλύτερη από άλλες εφαρμογές σύνδεσης, καθώς ο περισσότερος χρόνος αφιερώνεται στην εκτέλεση βελτιστοποιήσεων κώδικα αντί για τη σύνδεση.
- Προστέθηκε υποστήριξη για την αρχιτεκτονική RISC-V (RV64) στις πλατφόρμες κεντρικού υπολογιστή και στόχου.
- Προστέθηκε η επιλογή "--emit-relocs" για να ενεργοποιηθεί η αντιγραφή των τμημάτων μετεγκατάστασης από αρχεία εισόδου σε αρχεία εξόδου για επακόλουθη εφαρμογή βελτιστοποιήσεων στο στάδιο μετά τη σύνδεση.
- Προστέθηκε η επιλογή "--shuffle-sections" για να τυχαιοποιήσει τη σειρά των ενοτήτων πριν καθορίσει τις διευθύνσεις τους στον εικονικό χώρο διευθύνσεων.
- Προστέθηκαν οι επιλογές "--print-dependencies" και "--print-dependencies=full" για την εξαγωγή πληροφοριών εξάρτησης μεταξύ αρχείων εισόδου σε μορφή CSV, οι οποίες μπορούν να χρησιμοποιηθούν, για παράδειγμα, για την ανάλυση των λόγων για την συμπερίληψη ορισμένων αρχείων αντικειμένων κατά τη σύνδεση ή κατά την εκτέλεση εργασιών για την ελαχιστοποίηση των εξαρτήσεων μεταξύ αρχείων.
- Προστέθηκαν οι επιλογές "--warn-once" και "--warn-textrel".
- Καταργήθηκε η εξάρτηση από το libxxhash.
Πηγή: opennet.ru
