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

Λογότυπο LLVM

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

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

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

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

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

Σε αυτή τη νέα έκδοση του LLVM 17.0 που παρουσιάζεται, υπάρχουν διάφορες σχετικές πτυχές που πρέπει να ληφθούν υπόψη, εκ των οποίων είναι, για παράδειγμα, βελτιώσεις στο backend X86, καλά έχει προσθέσειo υποστήριξη για επεκτάσεις αρχιτεκτονική συνόλου εντολών ISA SHA512, ISA SM3, ISA SM4 και ISA AVX-VNNI-INT16.

Εκτός από αυτό, τονίζει επίσης το βελτιώσεις στο δυνατότητες υποστήριξης για την αρχιτεκτονική RISC-V που έχουν επεκταθεί σημαντικά, έκτοτε προστέθηκε υποστήριξη για τον επεξεργαστή sifive-x280.

Μια άλλη από τις αλλαγές που μπορούμε να βρούμε είναι η Υλοποιήθηκε υποστήριξη για επεκτάσεις επεξεργαστή XTH*, καθώς και συμβατότητα με επεκτάσεις LSX, LASX, LVZ και LBT ISA στο πίσω μέρος της αρχιτεκτονικής LoongArch.

Βελτιωμένα backend για αρχιτεκτονικές AArch64, ARM, WebAssembly, MIPS, PowerPC, AMDGPU, διευρυμένες δυνατότητες σύνδεσης LLD και προστέθηκε μια νέα εντολή "πληροφορίες εγγραφής" στο πρόγραμμα εντοπισμού σφαλμάτων LLDB για την εμφάνιση όλων των γνωστών πληροφοριών σχετικά με μια εγγραφή .

Όσον αφορά τις βελτιώσεις στο Clang 17.0, επισημαίνεται ότι έχουν εφαρμοστεί τα χαρακτηριστικά που ορίζονται στο μελλοντικό C-standard C2x, όπως οι λέξεις-κλειδιά bool, static_assert, aligns, alignof και thread_local, καθώς και η δυνατότητα καθορισμού κενών αγκύλων «{ } » για αρχικοποίηση σε μηδενικές τιμές.

Ο κώδικαςo C παρέχει τη δυνατότητα προώθησης της έκφρασης "goto". μέσα σε μπλοκ "asm" μέσω έμμεσα επιλεγμένων ετικετών, προστέθηκε υποστήριξη για μια επέκταση C που επιτρέπει τη χρήση ενός τύπου αντί μιας έκφρασης ως πρώτου τελεστή στο "_Generic", επιπλέον του ότι επιτρέπει σταθερές εκφράσεις στη γλώσσα C για χρήση δομών, ενώσεων και πίνακες που δηλώνονται με το χαρακτηριστικό "const".

Σχετικά με τις βελτιώσεις που σχετίζονται με το πρότυπο C++20, αναφέρεται ότι τώρα Σε όλες τις πλατφόρμες εκτός των Windows, υπάρχει πλήρης υποστήριξη για το Coroutine, Επιπλέον, έχουν εφαρμοστεί πρόσθετες απαιτήσεις για λειτουργίες σύγκρισης σταθερών εκφράσεων.

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

Σχετικά με βελτιώσεις που πρέπει να γίνουν σχετικά με το πρότυπο C++23 , αναφέρεται ότι βρίσκεται στο τελικό στάδιο έγκρισης από τον ISO, αφού άλλαξε το εύρος του τύπου τελικής επιστροφής στις συναρτήσεις λάμδα να κοιτάξουμε πρώτα τα άγκιστρα και μετά το περιβάλλον κείμενο.

Του άλλες αλλαγές που ξεχωρίζουν:

  • Προστέθηκε η δυνατότητα ορισμού πολυδιάστατων πινάκων χρησιμοποιώντας
  • Κατά τη μεταγλώττιση εφαρμογών C++ χρησιμοποιώντας τη λειτουργία βελτιστοποίησης "-O0", η δημιουργία κώδικα για κλήσεις έχει βελτιωθεί.
  • Προστέθηκε υποστήριξη για τη μεταβλητή περιβάλλοντος NO_COLOR για την απενεργοποίηση του χρώματος εξόδου.
  • Τα εργαλεία στατικής ανάλυσης και διάγνωσης έχουν επεκταθεί σημαντικά, για παράδειγμα, προστέθηκαν νέοι υπογεγραμμένοι έλεγχοι υπερχείλισης ακεραίων, διόρθωση προτύπου λάμδα, εκφράσεις constexpr, συγκρίσεις μηδενικών δεικτών, χρήση μη αρχικοποιημένων δομών κ.λπ.
  • Η βιβλιοθήκη Libc++ συνεχίζει να παρέχει υποστήριξη για τις δυνατότητες των προτύπων C++20 και C++23, ενώ έχει ξεκινήσει επίσης η εργασία για την παροχή υποστήριξης για την προδιαγραφή C++26.
  • Προστέθηκε υποστήριξη για την έκφραση "απαιτείται cplusplus23" σε περιγραφές συνδέσεων μεταξύ αρχείων κεφαλίδας και λειτουργικών μονάδων.

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


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

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

*

*

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