Πρώτη σταθερή έκδοση του Mold builder που αναπτύχθηκε από την LLVM lld

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

Το Mold είναι γραμμένο σε C++ (C++20) και διανέμεται με την άδεια AGPLv3, η οποία είναι συμβατή με GPLv3 αλλά όχι GPLv2, καθώς απαιτεί το άνοιγμα των αλλαγών κατά την ανάπτυξη υπηρεσιών δικτύου. Αυτή η επιλογή οφείλεται στην επιθυμία απόκτησης χρηματοδότησης ανάπτυξης - ο συγγραφέας είναι πρόθυμος να πουλήσει τα δικαιώματα στον κώδικα για εκ νέου αδειοδότηση βάσει μιας επιτρεπόμενης άδειας, όπως το MIT, ή να παράσχει μια ξεχωριστή εμπορική άδεια για όσους δεν είναι ικανοποιημένοι με την AGPL.

Το Mold υποστηρίζει όλες τις δυνατότητες του GNU linker και είναι πολύ γρήγορο, συνδέοντας μόνο με τη μισή ταχύτητα από την απλή αντιγραφή αρχείων με cp. Για παράδειγμα, κατά την κατασκευή του Chrome 96 (μέγεθος κώδικα 1.89 GB), χρειάζονται 8 δευτερόλεπτα για τη δημιουργία εκτελέσιμων αρχείων εντοπισμού σφαλμάτων c σε έναν υπολογιστή 53 πυρήνων με χρήση GNU gold, 11.7 δευτερόλεπτα για το LLVM lld και μόνο 2.2 δευτερόλεπτα για το Mold (26 φορές πιο γρήγορα από χρυσός GNU). Κατά τη σύνδεση του Clang 13 (3.18 GB), το GNU gold διαρκεί 64 δευτερόλεπτα, το LLVM lld διαρκεί 5.8 δευτερόλεπτα και το Mold χρειάζεται 2.9 δευτερόλεπτα. Κατά τη σύνδεση του Firefox 89 (1.64 GB), το GNU gold διαρκεί 32.9 δευτερόλεπτα, το LLVM lld διαρκεί 6.8 δευτερόλεπτα και το Mold χρειάζεται 1.4 δευτερόλεπτα.

Πρώτη σταθερή έκδοση του Mold builder που αναπτύχθηκε από την LLVM lld

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

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

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο