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

Δημοσιεύτηκε μια έκδοση του συνδέσμου Mold, η οποία μπορεί να χρησιμοποιηθεί ως ταχύτερη, διαφανής αντικατάσταση για τη σύνδεση GNU σε συστήματα Linux. Το έργο αναπτύχθηκε από τον συγγραφέα του συνδέσμου LLVM lld. Ένα βασικό χαρακτηριστικό του Mold είναι η πολύ υψηλή ταχύτητα σύνδεσης αρχείων αντικειμένων, αισθητά μπροστά από τους συνδέσμους GNU gold και LLVM lld (η σύνδεση στο Mold εκτελείται με ταχύτητα μόλις μισή από την απλή αντιγραφή αρχείων με το βοηθητικό πρόγραμμα cp). Ο κώδικας είναι γραμμένος σε C++ (C++20) και διανέμεται με την άδεια AGPLv3.

Στη νέα έκδοση:

  • Προστέθηκε υποστήριξη για βελτιστοποίηση στο στάδιο σύνδεσης (LTO, Link Time Optimization). Οι βελτιστοποιήσεις LTO διαφέρουν λαμβάνοντας υπόψη την κατάσταση όλων των αρχείων που εμπλέκονται στη διαδικασία δημιουργίας, ενώ οι παραδοσιακές λειτουργίες βελτιστοποίησης βελτιστοποιούν κάθε αρχείο ξεχωριστά και δεν λαμβάνουν υπόψη τις προϋποθέσεις για την κλήση συναρτήσεων που ορίζονται σε άλλα αρχεία. Ενώ προηγουμένως, όταν βρίσκονταν αρχεία ενδιάμεσου κώδικα (IR) GCC ή LLVM, καλούνταν οι αντίστοιχοι σύνδεσμοι ld.bfd ή ld.lld, τώρα το Mold επεξεργάζεται αρχεία IR ανεξάρτητα και χρησιμοποιεί το Linker Plugin API, που χρησιμοποιείται επίσης στο GNU ld και στο GNU χρυσοί συνδετήρες. Όταν είναι ενεργοποιημένο, το LTO είναι οριακά πιο γρήγορο από άλλα προγράμματα σύνδεσης, επειδή τον περισσότερο χρόνο αφιερώνεται στην εκτέλεση βελτιστοποιήσεων κώδικα αντί για τη σύνδεση.
  • Προστέθηκε υποστήριξη για την αρχιτεκτονική RISC-V (RV64) στις πλατφόρμες κεντρικού υπολογιστή και στόχου.
  • Προστέθηκε η επιλογή "--emit-relocs" για να ενεργοποιηθεί η αντιγραφή των τμημάτων μετεγκατάστασης από αρχεία εισόδου σε αρχεία εξόδου για επακόλουθη εφαρμογή βελτιστοποιήσεων στο στάδιο μετά τη σύνδεση.
  • Προστέθηκε η επιλογή "--shuffle-sections" για να τυχαιοποιήσει τη σειρά των ενοτήτων πριν καθορίσει τις διευθύνσεις τους στον εικονικό χώρο διευθύνσεων.
  • Προστέθηκαν οι επιλογές "--print-dependencies" και "--print-dependencies=full" για έξοδο σε μορφή CSV πληροφοριών σχετικά με εξαρτήσεις μεταξύ αρχείων εισόδου, οι οποίες, για παράδειγμα, μπορούν να χρησιμοποιηθούν για την ανάλυση των λόγων σύνδεσης κατά τη σύνδεση ορισμένων αρχείων αντικειμένων ή κατά την εκτέλεση εργασιών ελαχιστοποίησης εξαρτήσεων μεταξύ αρχείων.
  • Προστέθηκαν οι επιλογές "--warn-once" και "--warn-textrel".
  • Καταργήθηκε η εξάρτηση από το libxxhash.

Πηγή: opennet.ru

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