Το Mold 1.1 έχει ήδη κυκλοφορήσει, μάθετε τα νέα αυτού του σύγχρονου Linker ανώτερου από το GNU gold και το LLVM

Πριν από αρκετές ημέρες ανακοινώθηκε η κυκλοφορία της νέας έκδοσης του σύγχρονου Linker Mold 1.1, που μπορεί να χρησιμοποιηθεί ως ταχύτερη διαφανής αντικατάσταση για τον σύνδεσμο GNU σε συστήματα Linux.

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

Σχετικά με το Mold

Μούχλα υποστηρίζει όλες τις δυνατότητες του GNU linker και έχει πολύ υψηλή απόδοση, αφού οι σύνδεσμοι που κάνει είναι μόνο δύο φορές πιο γρήγοροι από την απλή αντιγραφή αρχείων με το βοηθητικό πρόγραμμα cp.

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

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

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

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

Οι κύριες καινοτομίες του Mold 1.1

Σε αυτή τη νέα έκδοση του Mold 1.1 που παρουσιάζεται, επισημαίνεται ότι το υποστήριξη για βελτιστοποίηση σταδίου σύνδεσης (LTO, Link Time Optimization).

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

Παλαιότερα, όταν αντιμετώπιζαν αρχεία ενδιάμεσου κώδικα (IR) GCC ή LLVM, επικαλούνταν οι κατάλληλοι σύνδεσμοι ld.bfd ή ld.lld, αλλά τώρα το Mold χειρίζεται μόνο του αρχεία IR και χρησιμοποιεί το API πρόσθετου Linker, που χρησιμοποιείται επίσης στο GNU ld και Χρυσοί σύνδεσμοι GNU. Η ταχύτητα όταν είναι ενεργοποιημένο το LTO είναι οριακά μόνο μεγαλύτερη από άλλα προγράμματα σύνδεσης, καθώς ο περισσότερος χρόνος αφιερώνεται στη βελτιστοποίηση του κώδικα και όχι στη σύνδεση.

Τονίζεται επίσης ότι προστέθηκαν επιλογές “–print-dependencies” και “–print-dependencies=full” pΓια να δημιουργήσετε πληροφορίες σε μορφή CSV σχετικά με τις εξαρτήσεις μεταξύ αρχείων εισόδου, τα οποία μπορούν, για παράδειγμα, να χρησιμοποιηθούν για την ανάλυση των λόγων σύνδεσης κατά τη σύνδεση ορισμένων αρχείων αντικειμένων ή κατά την εργασία για την ελαχιστοποίηση των εξαρτήσεων μεταξύ των αρχείων.

Μια άλλη αλλαγή που ξεχωρίζει από τη νέα έκδοση είναι ότι το υποστήριξη για την αρχιτεκτονική RISC-V (RV64) στις πλατφόρμες υποδοχής και στόχου.

Εκτός από αυτό, μπορούμε επίσης να το βρούμε πρόσθεσε την επιλογή «–emit-relocs» για να ενεργοποιηθεί η αντιγραφή των ενοτήτων μετεγκατάστασης διευθύνσεων από τα αρχεία εισόδου έως τα τελικά αρχεία για περαιτέρω βελτιστοποιήσεις που θα εφαρμοστούν στο στάδιο μετά τη σύνδεση.

Από τις άλλες αλλαγές που ξεχωρίζουν:

  • Προστέθηκε η επιλογή «–shuffle-sections» για τυχαία ταξινόμηση της σειράς των ενοτήτων πριν από τον καθορισμό των διευθύνσεών τους στον εικονικό χώρο διευθύνσεων.
  • Προστέθηκαν οι επιλογές «–warn-once» και «–warn-textrel».
  • Καταργήθηκε η εξάρτηση από το libxxhash.

Τελικά αν ενδιαφέρεστε να μάθετε περισσότερα γι 'αυτό, μπορείτε να ελέγξετε τις λεπτομέρειες στο παρακάτω σύνδεσμο.

Πώς να εγκαταστήσετε το Mould;

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

git clone https://github.com/rui314/mold.git
cd mold
git checkout v1.1.1
make -j$(nproc) CXX=clang++
sudo make install

Για να μάθετε τη χρήση του καλουπιού, μπορείτε να συμβουλευτείτε την τεκμηρίωση σε αυτόν τον σύνδεσμο.


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.