Το GCC 11.1 έχει ήδη κυκλοφορήσει, αυτά είναι τα πιο σημαντικά νέα και αλλαγές

Μετά από ένα χρόνο ανάπτυξης, Κυκλοφόρησε η νέα έκδοση του GCC 11.1 compiler suite, η πρώτη σημαντική κυκλοφορία στον νέο κλάδο GCC 11.x. Σύμφωνα με το νέο σχήμα αρίθμησης έκδοσης, η έκδοση 11.0 χρησιμοποιήθηκε κατά τη διάρκεια της ανάπτυξης και λίγο πριν από την κυκλοφορία του GCC 11.1, ένας κλάδος του GCC 12.0 είχε ήδη διαμορφωθεί για να σχηματίσει την επόμενη μεγάλη έκδοση του GCC 12.1.

Το GCC 11.1 ξεχωρίζει για τη μετάβαση στην προεπιλεγμένη μορφή αρχείου εντοπισμού σφαλμάτων DWARF 5, η προεπιλεγμένη συμπερίληψη του προτύπου C ++ 17 ("-std = gnu ++ 17"), σημαντικές βελτιώσεις στη συμβατότητα με το πρότυπο C ++ 20, πειραματική υποστήριξη για το C ++ 23, βελτιώσεις που σχετίζονται με το μελλοντικό πρότυπο τη γλώσσα C (C2x), νέες βελτιστοποιήσεις απόδοσης.

GCC 11.1 Κύρια νέα χαρακτηριστικά

Η προεπιλεγμένη λειτουργία για τη γλώσσα C ++ αλλάζει για χρήση του προτύπου C ++ 17, αντί του C ++ 14 που προτάθηκε προηγουμένως. Είναι δυνατή η επιλεκτική απενεργοποίηση της νέας συμπεριφοράς C ++ 17 κατά την επεξεργασία προτύπων που χρησιμοποιούν άλλα πρότυπα ως παράμετρος (-fno-new-ttp-matching).

Προστέθηκε υποστήριξη για επιτάχυνση υλικού του εργαλείου AddressSanitizer, το οποίο σας επιτρέπει να προσδιορίσετε τα γεγονότα της πρόσβασης σε περιοχές μνήμης που έχουν απελευθερωθεί, υπερβαίνοντας τα όρια του εκχωρημένου buffer και ορισμένους άλλους τύπους σφαλμάτων κατά την εργασία με τη μνήμη. Επί του παρόντος, η επιτάχυνση υλικού είναι διαθέσιμη μόνο για την αρχιτεκτονική AArch64 και επικεντρώνεται στη χρήση του κατά τη σύνταξη του πυρήνα Linux.

Μια άλλη καινοτομία που παρουσιάζεται είναι η βελτιστοποιήσεις και βελτιώσεις μεταξύ διαδικασιών, καθώς προστέθηκε ένα νέο IPA-modref pass (-fipa-modref) για παρακολούθηση ανεπιθύμητων ενεργειών στις κλήσεις λειτουργίας και βελτίωση της ακρίβειας της ανάλυσης. Εκτός επίσης α βελτιωμένη εφαρμογή της κάρτας IPA-ICF (-fipa-icf), η οποία μειώνει την κατανάλωση μνήμης συλλογής και αυξάνει τον αριθμό των ενοποιημένων λειτουργιών για τις οποίες συγχωνεύονται ταυτόσημα μπλοκ κώδικα.

El μηχανή βελτιστοποίησης με γνώμονα το προφίλ (PGO), βελτιωμένη λειτουργία "-fprofile-Values" παρακολουθώντας περισσότερες παραμέτρους για έμμεσες κλήσεις.

επίσης Επισημαίνεται η συνεχής εφαρμογή του προτύπου OpenMP 5.0 (Άνοιγμα πολλαπλής επεξεργασίας), στην οποία πρόσθεσε την αρχική υποστήριξη για την οδηγία ανάθεσης και τη δυνατότητα χρήσης μη ομοιόμορφων βρόχων στο OpenMP builds. Υποστηρίζεται τώρα η μεταβλητή περιβάλλοντος OMP_TARGET_OFFLOAD.

Η εφαρμογή των προδιαγραφών παράλληλου προγραμματισμού OpenACC 2.6 που παρέχονται για τις γλώσσες C, C ++ και Fortran, η οποία καθορίζει εργαλεία για εκφόρτωση λειτουργιών σε GPU και εξειδικευμένους επεξεργαστές όπως το NVIDIA PTX, έχει βελτιωθεί.

Για τις γλώσσες της οικογένειας C, έχει εφαρμοστεί ένα νέο χαρακτηριστικό "no_stack_protector", σχεδιασμένο για να επισημαίνει λειτουργίες για τις οποίες δεν πρέπει να είναι ενεργοποιημένη η προστασία στοίβας ("-fstack-protector"). Το χαρακτηριστικό "malloc" έχει επεκταθεί με υποστήριξη για τον εντοπισμό ζευγών κλήσεων για εκχώρηση και ελεύθερη μνήμη, το οποίο χρησιμοποιείται στο στατικό πρόγραμμα ανάλυσης για την ανίχνευση τυπικών σφαλμάτων μνήμης (διαρροές μνήμης, χρήση μετά δωρεάν, διπλές κλήσεις προς ελεύθερη λειτουργία κ.λπ.) και προειδοποιήσεις μεταγλωττιστή "-Wmismatched-dealloc", "-Wmismatched- new-delete" και " -Ελεύθερη-χωρίς-αντικείμενο-αντικείμενο "αναφορές ασυνεπείς πράξεις εκτόπισης και εκτόνωσης.

Κατά τη δημιουργία πληροφοριών εντοπισμού σφαλμάτων, η μορφή DWARF 5 χρησιμοποιείται από προεπιλογή, η οποία, σε σύγκριση με προηγούμενες εκδόσεις, επιτρέπει τη δημιουργία δεδομένων εντοπισμού σφαλμάτων που είναι 25% πιο συμπαγή. Η πλήρης υποστήριξη DWARF 5 απαιτεί binutils τουλάχιστον την έκδοση 2.35.2.

Βελτιωμένες δυνατότητες λειτουργίας ThreadSanitizer (-fsanitize = νήμα), αφού ναιε προσθέτει υποστήριξη για εναλλακτικούς χρόνους εκτέλεσης και περιβάλλοντα, καθώς και υποστήριξη για το εργαλείο εντοπισμού σφαλμάτων Kernel Concurrency Sanitizer (KCSAN) για την ανίχνευση δυναμικών συνθηκών αγώνα εντός του πυρήνα Linux. Προστέθηκαν νέες επιλογές "–param tsan-difference-volatile" και "–param tsan-instrument-func-entry-exit".

Το vectorizer παρέχει τη λογιστική του συνόλου του περιεχομένου της συνάρτησης και την πρόσθετη επεξεργασία των δυνατοτήτων που σχετίζονται με τις διασταυρώσεις και αναφορές σε προηγούμενα μπλοκ στο διάγραμμα ροής ελέγχου (CFG).

Ο βελτιστοποιητής έχει τη δυνατότητα να μετατρέψει μια σειρά λειτουργιών υπό όρους σε μια έκφραση αλλαγής, στην οποία συγκρίνεται η ίδια μεταβλητή. Στο μέλλον, η έκφραση αλλαγής μπορεί να κωδικοποιηθεί χρησιμοποιώντας οδηγίες δοκιμής bit (για τον έλεγχο αυτής της μετατροπής, έχει προστεθεί η επιλογή "-fbit-testing").

Για το C ++, ένα μέρος των αλλαγών και των καινοτομιών που προτείνονται στο πρότυπο C ++ 20 έχουν εφαρμοστεί, συμπεριλαμβανομένων των εικονικών συναρτήσεων "consteval virtual", ψευδο-καταστροφέων για τον τερματισμό του κύκλου ζωής των αντικειμένων, χρησιμοποιώντας την κλάση enum και τον υπολογισμό το μέγεθος ενός πίνακα στην έκφραση "νέο".

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


Το περιεχόμενο του άρθρου συμμορφώνεται με τις αρχές μας συντακτική ηθική. Για να αναφέρετε ένα σφάλμα κάντε κλικ Aquí.

Γίνε ο πρώτος που θα σχολιάσει

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

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

*

*

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