Το GCC 12.1 έχει ήδη κυκλοφορήσει, μάθετε τα νέα του και την 35η επέτειό του

Λογότυπο GNU GCC

Το λανσάρισμα του τη νέα έκδοση του μεταγλωττιστή GCC (Συλλογή μεταγλωττιστή GNU) Το 12.1 είχε ήδη κυκλοφορήσει και όπως συμβαίνει με όλες τις μεγάλες εκδόσεις του GCC, αυτή η κυκλοφορία θα φέρει πολλές προσθήκες, βελτιώσεις, διορθώσεις σφαλμάτων και νέες δυνατότητες, καθώς αυτόν τον μήνα (23 Μαΐου), το έργο θα γιορτάσει 35 χρόνια από τη δημιουργία της πρώτης κυκλοφορίας.

Το GCC 12 είναι ήδη ο μεταγλωττιστής συστήματος για το Fedora 36 και το GCC 12 θα είναι επίσης διαθέσιμο στο Red Hat Enterprise Linux σε Red Hat Developer Toolset (έκδοση 7) ή Red Hat GCC Toolset (εκδόσεις 8 και 9).

Οι προγραμματιστές του GCC είναι περήφανοι που ανακοινώνουν μια άλλη σημαντική έκδοση του GCC, την 12.1.

Φέτος γιορτάζουμε την 35η επέτειο της πρώτης beta έκδοσης του GCC
Και αυτόν τον μήνα θα γιορτάσουμε 35 χρόνια από την κυκλοφορία του GCC 1.0!

Αυτή η έκδοση διακόπτει την υποστήριξη για τη μορφή εντοπισμού σφαλμάτων STABS και
εισάγει υποστήριξη για τη μορφή εντοπισμού σφαλμάτων CTF [1]. Η C και η C++
οι διεπαφές συνεχίζουν να εξελίσσονται με διευρυμένη υποστήριξη για λειτουργίες
στα επερχόμενα πρότυπα C2X και C++23 και στη Βιβλιοθήκη C++ Standard
βελτιώνει την υποστήριξη για τα πειραματικά μέρη των C++20 και C++23.
Η διεπαφή Fortran είναι πλέον πλήρως συμβατή με το TS 29113 για διαλειτουργικότητα με το C.

Τι νέο υπάρχει στο GCC 12.1;

Σε αυτήν τη νέα έκδοση Έχουν υλοποιηθεί αρκετές προτάσεις, όπως για τις γλώσσες C και C++, προστέθηκαν μια ενσωματωμένη συνάρτηση __buildin_dynamic_object_size για να προσδιορίσετε το μέγεθος ενός αντικειμένου, συμβατό με παρόμοια λειτουργία του Clang.

Προστέθηκε υποστήριξη για το χαρακτηριστικό "μη διαθέσιμο" για τις γλώσσες C και C++ (για παράδειγμα, μπορείτε να επισημάνετε συναρτήσεις που θα οδηγήσουν σε σφάλμα κατά τη χρήση), καθώς και να προσθέσετε υποστήριξη για τις οδηγίες προεπεξεργασίας "#elifdef" και "#elifndef" για τις γλώσσες C και C++.

Σημειώνεται επίσης ότι το Επισήμανση "-Wbidi-chars" για προειδοποίηση σε περίπτωση κακής χρήσης χαρακτήρων UTF-8, αλλάζοντας τη σειρά εμφάνισης αμφίδρομου κειμένου, καθώς και τη σημαία "-Warray-compare" για την έκδοση προειδοποίησης όταν προσπαθείτε να συγκρίνετε δύο τελεστές που αναφέρονται σε πίνακες.

Επιπλέον, το iΕφαρμογή των προτύπων OpenMP 5.0 και 5.1 Το (Open Multi-Processing), το οποίο ορίζει API και μεθόδους για την εφαρμογή μεθόδων παράλληλου προγραμματισμού σε συστήματα πολλαπλών πυρήνων και υβριδικών (CPU + GPU / DSP) με κοινόχρηστη μνήμη και μονάδες διανυσματοποίησης (SIMD), συνεχίστηκε.

Επίσης το βελτιωμένη εφαρμογή της προδιαγραφής παράλληλου προγραμματισμού OpenACC 2.6, ορίζοντας τα μέσα για τη μεταφόρτωση λειτουργιών σε GPU και εξειδικευμένους επεξεργαστές όπως το NVIDIA PTX και προσθήκη υποστήριξης για τις εκτεταμένες οδηγίες Intel AVX512-FP16 και τον τύπο _Float16 στο backend δημιουργίας κώδικα x86.

Το front-end Fortran παρέχει πλήρη υποστήριξη για την προδιαγραφή TS 29113, η οποία περιγράφει τις δυνατότητες διασφάλισης φορητότητας μεταξύ του κώδικα Fortran και C.

Καταργήθηκε η υποστήριξη για τη μορφή αποθήκευσης πληροφοριών εντοπισμού σφαλμάτων "STABS" που δημιουργήθηκε τη δεκαετία του 1980.

Προστέθηκε υποστήριξη για την επέκταση __builtin_shufflevector(vec1, vec2, index1, index2,…) που είχε προστεθεί προηγουμένως στο Clang, η οποία παρέχει μία μόνο κλήση για την εκτέλεση κοινών διανυσματικών λειτουργιών τυχαίας αναπαραγωγής και τυχαίας αναπαραγωγής.

Όταν χρησιμοποιείτε το επίπεδο βελτιστοποίησης "-O2", η διανυσματοποίηση είναι ενεργοποιημένη από προεπιλογή (οι λειτουργίες -ftree-vectorize και -fvect-cost-model=very-cheap είναι ενεργοποιημένες). Το "πολύ φθηνό" μοντέλο επιτρέπει τη διανυσματοποίηση μόνο εάν ο διανυσματικός κώδικας μπορεί να αντικαταστήσει πλήρως τον διανυσματικό βαθμωτό κώδικα.

Προστέθηκε η λειτουργία "-ftrivial-auto-var-init". για να ενεργοποιήσετε τη ρητή προετοιμασία μεταβλητών στη στοίβα για να εντοπίσετε προβλήματα και να αποκλείσετε ευπάθειες που σχετίζονται με τη χρήση μη αρχικοποιημένων μεταβλητών.

Προστέθηκε το υλοποίηση των συναρτήσεων C που είναι ενσωματωμένες στον μεταγλωττιστή (Intrinsics) για ατομική φόρτωση και αποθήκευση δεδομένων στη μνήμη, με βάση τη χρήση εκτεταμένων οδηγιών ARM (ls64). Προστέθηκε υποστήριξη για την επιτάχυνση των λειτουργιών memcpy, memmove και memset χρησιμοποιώντας την επέκταση ARM mopoption.

Προστέθηκε μια νέα λειτουργία επαλήθευσης "-fsanitize=shadow-call-stack" ( ShadowCallStack ), που είναι προς το παρόν διαθέσιμο μόνο για την αρχιτεκτονική AArch64 και λειτουργεί κατά τη μεταγλώττιση κώδικα με την επιλογή "-fixed-r18". Η λειτουργία παρέχει προστασία από την επανεγγραφή της διεύθυνσης επιστροφής της συνάρτησης σε περίπτωση υπερχείλισης buffer στοίβας. Η ουσία της προστασίας είναι να αποθηκεύσετε τη διεύθυνση επιστροφής σε μια ξεχωριστή στοίβα "σκιάς" μετά τη μεταφορά του ελέγχου στη συνάρτηση και να ανακτήσετε αυτήν τη διεύθυνση πριν την έξοδο από τη συνάρτηση.

πηγή: https://gcc.gnu.org/pipermail


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

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

*

*

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