Η αποφοίτηση πραγματοποιήθηκε στις 4 Αυγούστου Wild 0.10 — ένα δωρεάν πρόγραμμα σύνδεσης γραμμένο σε Rust και σχεδιασμένο κυρίως για γρήγορη δημιουργία προγραμμάτων σε LinuxΟ σύνδεσμος εκτελεί το τελικό στάδιο της δημιουργίας: συνδυάζει αρχεία αντικειμένων και βιβλιοθήκες σε ένα τελικό εκτελέσιμο ή κοινόχρηστη βιβλιοθήκη. Το Wild μπορεί να χρησιμοποιηθεί ως αντικατάσταση για τα GNU ld, LLD και Mold, αν και ο δηλωμένος τελικός στόχος των προγραμματιστών είναι η σταδιακή σύνδεση. δεν έχει ακόμη εφαρμοστεί.
Μία από τις κύριες καινοτομίες ήταν η υποστήριξη παραμέτρων --gdb-index και --no-gdb-indexΌταν αυτή η λειτουργία είναι ενεργοποιημένη, το Wild δημιουργεί μια ενότητα .gdb_index στο αρχείο εξόδου με ένα ευρετήριο πληροφοριών εντοπισμού σφαλμάτων. Αυτό επιτρέπει στο GDB να βρίσκει πιο γρήγορα τα απαραίτητα σύμβολα σε μεγάλα προγράμματα χωρίς να χρειάζεται να δημιουργήσει το ευρετήριο ξεχωριστά μετά την κατασκευή. Η υλοποίηση υποστηρίζει την έκδοση 9 της μορφής GDB Index. Οι λειτουργίες σάρωσης, συγχώνευσης και εγγραφής του ευρετηρίου έχουν παραλληλιστεί.
Η δημιουργία σεναρίων από συνθέτες έχει επεκταθεί σημαντικά. Έχει προστεθεί υποστήριξη για:
- Ενότητες /ΑΠΟΡΡΙΨΗ/ για να αποκλείσετε περιττές ενότητες εισόδου.
- Τίτλοι προσαρμοσμένων προγραμμάτων PHDRS.
- συναρτήσεις SIZEOF_HEADERS, DEFINED και SEGMENT_START;
- η λέξη-κλειδί AT και η συνάρτηση LOADADDR.
- υποθετικές εκφράσεις με τριαδικό τελεστή;
- Εντολές SORT, SORT_BY_NAME και SORT_BY_ALIGNMENT;
- σύμβολο __bss_start;
- πρότυπα για τη συμπλήρωση τμημάτων εξόδου·
- Εντολές OUTPUT_FORMAT και OUTPUT_ARCH;
- αρκετούς σχετικούς μετρητές της τρέχουσας διεύθυνσης.
Δεν έχει επιτευχθεί ακόμη πλήρης συμβατότητα με το GNU ld. Για παράδειγμα, ορισμένες λειτουργίες της εντολής MEMORY, οι ενότητες OVERLAY και ορισμένες μέθοδοι για την τοποθέτηση ενοτήτων παραμένουν ημιτελείς. Οι προγραμματιστές εργάζονται πάνω σε αυτό ξεχωριστά. πίνακας δυνατοτήτων που απαιτούνται για τη σύνδεση πυρήνα Linux.
Η απόδοση έχει βελτιωθεί κατά την αποθήκευση των αποτελεσμάτων δημιουργίας σε Btrfs και VFAT. Το Wild χρησιμοποιεί πλέον αυτόματα τη λειτουργία --no-mmap-output-file και δεν αντιγράφει το αρχείο εξόδου στη μνήμη. Σε μια δοκιμή που διεξήγαγε ο προγραμματιστής για τη σύνδεση Zed σε Btrfs, ο χρόνος μειώθηκε από περίπου 2,6–2,8 σε 1,5–1,8 δευτερόλεπτα. Ωστόσο, ο συντάκτης της αλλαγής προειδοποιεί ότι ακόμη και μετά τη βελτιστοποίηση, το Btrfs παραμένει σημαντικά πιο αργό από το tmpfs σε αυτό το σενάριο. Για το Ext4 και το XFS, η χρήση του mmap, από την άλλη πλευρά, αποδείχθηκε πιο πλεονεκτική.
Το Wild συνεχίζει να μεταφέρεται σε άλλες μορφές και πλατφόρμες. Μια πειραματική έκδοση για το WebAssembly μπορεί ήδη να συνδέσει μια σειρά προγραμμάτων, ενώ μια μεταφορά για το Mach-O μπορεί να συνδέσει βασικά εκτελέσιμα αρχεία. Έχουν ξεκινήσει εργασίες σε πλατφόρμες-στόχους 32-bit, οι οποίες θα πρέπει να απλοποιήσουν περαιτέρω τη χρήση του Wild στην ανάπτυξη ενσωματωμένων συστημάτων. Έχει επίσης προστεθεί η αρχική επεξεργασία αρχείων αντικειμένων PowerPC64 ELFv2 και η υποστήριξη Mach-O συνεχίζει να αναπτύσσεται, συμπεριλαμβανομένων αρχείων καθολικών αντικειμένων και άμεσης σύνδεσης με δυναμικές βιβλιοθήκες. Αυτές οι θύρες δεν θα πρέπει να θεωρούνται ακόμη έτοιμες για καθημερινή χρήση.
Ο σύνδεσμος libwild μπορεί πλέον να δέχεται αρχεία εισόδου και να αποθηκεύει τα αποτελέσματα απευθείας στη μνήμη. Αυτό επιτρέπει σε άλλα προγράμματα να ενσωματώνουν το Wild χωρίς απαραίτητα να δημιουργούν ενδιάμεσα αρχεία στο δίσκο. Επιπλέον, η βιβλιοθήκη δεν παρακάμπτει πλέον την καθολική ομάδα νημάτων Rayon και η υποστήριξη για συμπίεση Zstandard μπορεί να απενεργοποιηθεί κατά τη στιγμή της δημιουργίας.
Αυτή η έκδοση περιλαμβάνει πολυάριθμες διορθώσεις για τα x86-64, AArch64, RISC-V και LoongArch64. Αυτές οι διορθώσεις περιλαμβάνουν σφάλματα χειρισμού TLS, PLT, LTO, συμπιεσμένες πληροφορίες εντοπισμού σφαλμάτων, μεγάλες ευθυγραμμίσεις και μετεγκαταστάσεις σε PIE και κοινόχρηστα αντικείμενα. Διορθώνονται επίσης πιθανά σφάλματα κατά την ανάλυση σεναρίων σύνδεσης και σφάλματα που δημιουργούν ενότητες .tbss, .strtab και .eh_frame.
Άγρια στηρίγματα Linux Στις αρχιτεκτονικές x86-64, AArch64 και RISC-V, η υποστήριξη για LoongArch64 και PowerPC64LE αναφέρεται αυτήν τη στιγμή ως αρχική. Ο σύνδεσμος μπορεί να εγκατασταθεί από προκατασκευασμένα αρχεία, μέσω cargo-binstall, Homebrew, Nix ή με την εντολή cargo install --locked wild-linker. Ο πηγαίος κώδικας διανέμεται κατά την κρίση του χρήστη. Άδειες Apache 2.0 ή MIT.
Πηγή: linux.org.ru
