Η νέα έκδοση του LLVM 9.0 έχει ήδη κυκλοφορήσει και αυτά είναι τα νέα της

LLVM

Μετά από έξι μήνες ανάπτυξης παρουσιάστηκε η έναρξη της νέας έκδοσης του έργου LLVM 9.0, που είναι ένα συμβατό κιτ εργαλείων GCC (μεταγλωττιστές, βελτιστοποιητές και δημιουργίες κώδικα), το οποίο συγκεντρώνει προγράμματα σε έναν ενδιάμεσο κώδικα bit εικονικών οδηγιών τύπου RISC (εικονική μηχανή χαμηλού επιπέδου με σύστημα βελτιστοποίησης πολλαπλών επιπέδων).

Έχει σχεδιαστεί για τη βελτιστοποίηση του χρόνου μεταγλώττισης, ο χρόνος δέσμευσης, ο χρόνος εκτέλεσης σε οποιαδήποτε γλώσσα προγραμματισμού που ο χρήστης θέλει να ορίσει. Αρχικά εφαρμόστηκε για τη μεταγλώττιση C και C ++, Ο αγνωστικός σχεδιασμός της γλώσσας LLVM και η επιτυχία του έργου έχουν γεννήσει μια μεγάλη ποικιλία γλωσσών, συμπεριλαμβανομένων των Objective-C, Fortran, Ada, Haskell, Java bytecode, Python, Ruby, ActionScript, GLSL, Clang, Rust, Gambas και άλλων.

Ο παραγόμενος ψευδοκώδικας μπορεί να μετατραπεί χρησιμοποιώντας τον μεταγλωττιστή JIT σε οδηγίες μηχανής απευθείας κατά την εκτέλεση του προγράμματος.

Σημαντικά νέα χαρακτηριστικά του LLVM 9.0

Μεταξύ των νέων χαρακτηριστικών του LLVM 9.0 βρείτε υποστήριξη για την κατάργηση της ετικέτας πειραματικής ανάπτυξης από την πλατφόρμα RISC-V, Υποστήριξη C ++ για OpenCL.

Μια άλλη καινοτομία που ξεχωρίζει είναι η ικανότητα διαχωρισμού του προγράμματος σε δυναμικά φορτωμένα μέρη στο LLD και την εφαρμογή του «asm goto» που χρησιμοποιείται στον κώδικα πυρήνα Linux.

Επιπλέον, επισημαίνεται επίσης ότι το Libc ++ ήρθε με υποστήριξη για το WASI (Διασύνδεση συστήματος WebAssembly) και η LLD εισήγαγαν την αρχική υποστήριξη για δυναμική σύνδεση WebAss Assembly. Προστέθηκε η υλοποίηση της έκφρασης ειδικά για το GCC «asm goto», η οποία σας επιτρέπει να μεταβείτε από ένα συναρμολογημένο ενσωματωμένο μπλοκ σε μια ετικέτα σε κώδικα C.

Αυτή η δυνατότητα είναι απαραίτητη για τη δημιουργία του πυρήνα Linux σε λειτουργία »CONFIG_JUMP_LABEL = y« χρησιμοποιώντας Clang σε συστήματα x86_64. Λαμβάνοντας υπόψη τις αλλαγές που έχουν προστεθεί σε προηγούμενες εκδόσεις, ο πυρήνας Linux μπορεί τώρα να ενσωματωθεί σε Clang για την αρχιτεκτονική x86_64 (προηγουμένως, υποστηρίχθηκε μόνο για αρχιτεκτονικές arm, aarch64, ppc32, ppc64le και mips.

Προστέθηκε υποστήριξη για οδηγίες BTI (Branch Target Indicator) και PAC (Pointer Authentication Code) για αρχιτεκτονική AArch64. Σημαντικά βελτιωμένη υποστήριξη για πλατφόρμες MIPS, RISC-V και PowerPC.

Επιπλέον, Τα έργα Android και ChromeOS έχουν ήδη στραφεί στη χρήση του Clang για τη δημιουργία του πυρήνα και η Google δοκιμάζει το Clang ως τους κύριους πυρήνες πλατφόρμας κατασκευής για τα τρέχοντα συστήματα Linux.

Στο μέλλον, κατά τη διαδικασία σύνταξης του πυρήνα, θα είναι δυνατή η χρήση άλλων στοιχείων LLVM, συμπεριλαμβανομένων LLD, llvm-objcopy, llvm-ar, llvm-nm και llvm-objdump.

Προστέθηκε μια πειραματική συνάρτηση κατάτμησης στον σύνδεσμο LLD, ο οποίος επιτρέπει σε ένα πρόγραμμα να χωριστεί σε πολλά μέρη, καθένα από τα οποία τοποθετείται σε ξεχωριστό αρχείο ELF. Αυτή η δυνατότητα σάς επιτρέπει να εκτελέσετε το κύριο μέρος του προγράμματος, το οποίο, ανάλογα με τις ανάγκες, θα φορτώσει τα υπόλοιπα στοιχεία στη διαδικασία (για παράδειγμα, μπορείτε να επιλέξετε το ενσωματωμένο πρόγραμμα προβολής PDF ως ξεχωριστό αρχείο, το οποίο θα ληφθεί μόνο όταν ο χρήστης ανοίγει το αρχείο PDF).

Από την άλλη πλευρά, οι πολυάριθμες βελτιώσεις στο backend ξεχωρίζουν επίσης. για αρχιτεκτονικές X86, AArch64, ARM, SystemZ, MIPS, AMDGPU και PowerPC.

Για παράδειγμα, η υποστήριξη για τις οδηγίες SVE2 και MTE (Memory Tagging Extensions) έχει προστεθεί για την αρχιτεκτονική AArch64, υποστήριξη για την αρχιτεκτονική Armv8.1-M και την αρχιτεκτονική MVE έχουν προστεθεί στο backend ARM.

Στην περίπτωση του AMDGPU, προστέθηκε υποστήριξη για την αρχιτεκτονική GFX10 (Navi), η προεπιλογή είναι ενεργοποιημένη για να καλεί μια συνάρτηση και να περάσει το ενεργοποιημένο συνδυασμένο DPP (Data Primitives-Parallel).

Το πρόγραμμα εντοπισμού σφαλμάτων LLDB παρουσίασε χρωματική επισήμανση των ιχνών προς τα πίσω. πρόσθετη υποστήριξη για DWARF4 debug_types και DWARF5 debug_info blocks;

Τα βοηθητικά προγράμματα llvm-objcopy και llvm-strip έχουν προσθέσει υποστήριξη για εκτελέσιμα αρχεία και αντικείμενα μορφής COFF.

Το backend για την αρχιτεκτονική RISC-V σταθεροποιείται, το οποίο δεν είναι πλέον τοποθετημένο ως πειραματικό και έχει δημιουργηθεί από προεπιλογή. Πλήρης υποστήριξη για δημιουργία κώδικα για παραλλαγές σετ εντολών RV32I και RV64I με επεκτάσεις MAFDC.

πηγή: http://releases.llvm.org/


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

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

*

*

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