Release of Mold 3.0 linker, που αναπτύχθηκε από την LLVM lld

Ο σύνδεσμος Mold 3.0 έχει κυκλοφορήσει και μπορεί να χρησιμοποιηθεί ως ταχύτερη και διαφανής αντικατάσταση του συνδέσμου GNU. Linux-συστήματα. Το έργο αναπτύσσεται από τον Rui Ueyama, τον δημιουργό του συνδέσμου LLVM lld. Το βασικό χαρακτηριστικό του Mold είναι η εξαιρετικά υψηλή ταχύτητα σύνδεσής του, η οποία ξεπερνά σημαντικά τους συνδέσμους GNU gold και LLVM lld (η σύνδεση στο Mold είναι μόνο η μισή ταχύτητα από την απλή αντιγραφή αρχείων με το βοηθητικό πρόγραμμα cp). Ο κώδικας είναι γραμμένος σε Rust και διανέμεται με την άδεια MIT.

Η μείωση του χρόνου σύνδεσης βελτιώνει σημαντικά την χρηστικότητα μεγάλων έργων, μειώνοντας τον χρόνο αναμονής κατά τη δημιουργία εκτελέσιμων αρχείων, ενώ παράλληλα γίνεται εντοπισμός σφαλμάτων και δοκιμή αλλαγών. Το κίνητρο για τη δημιουργία του Mold προήλθε από την απογοήτευση που ένιωθε κανείς όταν έπρεπε να περιμένει την ολοκλήρωση της σύνδεσης μετά από κάθε αλλαγή κώδικα, την κακή απόδοση των υπαρχόντων συνδέσμων σε συστήματα πολλαπλών πυρήνων και την επιθυμία να δοκιμαστεί μια θεμελιωδώς διαφορετική αρχιτεκτονική σύνδεσης χωρίς να καταφύγει σε υπερβολικά πολύπλοκα μοντέλα, όπως η σταδιακή σύνδεση.

Η υψηλή απόδοση της μεταγλώττισης ενός εκτελέσιμου αρχείου από μεγάλο αριθμό αρχείων αντικειμένων που έχουν προετοιμαστεί από μεταγλωττιστή στο Mold επιτυγχάνεται με τη χρήση ταχύτερων αλγορίθμων, την ενεργή παραλληλοποίηση των λειτουργιών μεταξύ των διαθέσιμων πυρήνων της CPU και τη χρήση πιο αποτελεσματικών δομών δεδομένων. Για παράδειγμα, η Mold εφαρμόζει τεχνικές για την εκτέλεση εντατικών υπολογισμών ταυτόχρονα με την αντιγραφή αρχείων, την προληπτική φόρτωση αρχείων αντικειμένων στη μνήμη, τη χρήση πινάκων γρήγορης κατακερματισμού κατά την επίλυση συμβόλων, τη σάρωση πινάκων μετεγκατάστασης σε ξεχωριστό νήμα και την κατάργηση διπλότυπων συγχωνευμένων ενοτήτων σε διαφορετικά αρχεία.

Ο κλάδος Mold 3.0 είναι αξιοσημείωτος για την επανεγγραφή του κώδικα από C++ (C++20) σε Rust. Το Mold 3.0 μπορεί να χρησιμοποιηθεί ως διαφανής αντικατάσταση του Mold 2.42.1, της τελευταίας έκδοσης C++, και υποστηρίζει όλες τις προηγουμένως διαθέσιμες επιλογές και αρχιτεκτονικές-στόχους. Η μετάβαση στο Rust κατέστησε δυνατή την προστασία του έργου από πιθανά προβλήματα κατά τον χειρισμό κατεστραμμένων αρχείων αντικειμένων—σε περιπτώσεις όπου η έκδοση C++ παρουσίασε σφάλμα λόγω πρόσβασης εκτός ορίων, η υλοποίηση του Rust σταματά στο στάδιο ελέγχου ορίων. Η απόδοση της υλοποίησης Rust είναι εφάμιλλη με την έκδοση C++.

Εκτός από τη μετεγκατάσταση στο Rust, ένας βασικός στόχος στην ανάπτυξη του κλάδου 3.0 ήταν η βελτίωση της συμβατότητας με το GNU ld και η προετοιμασία του έργου για χρήση ως προεπιλεγμένος σύνδεσμος σε διανομές. LinuxΤο σύστημα κατασκευής έχει αντικατασταθεί με το Cargo και το σύστημα δοκιμών έχει αντικατασταθεί με το cargo test, αντικαθιστώντας το ctest. Η βιβλιοθήκη oneTBB έχει αφαιρεθεί από τις εξαρτήσεις.

Πηγή: opennet.ru

Αγοράστε αξιόπιστη φιλοξενία για ιστότοπους με προστασία DDoS, διακομιστές VPS VDS 🔥 Αγοράστε αξιόπιστη φιλοξενία ιστοσελίδων με προστασία DDoS, διακομιστές VPS VDS | ProHoster