Η έκδοση GCC 15.1 κάνει το άλμα στην έκδοση C23 και προσθέτει βελτιώσεις, βελτιστοποιήσεις και πολλά άλλα για την C++.

gcc

Μετά από ένα χρόνο έντονης ανάπτυξης, ανακοινώθηκε η κυκλοφορία της νέας έκδοσης του «GCC 15.1», η οποία τοποθετείται ως η πρώτη σταθερή έκδοση εντός του νέου κλάδου 15.x αυτής της δημοφιλούς σουίτας μεταγλωττιστών ανοιχτού κώδικα.

Αυτή η έκδοση όχι μόνο λανσάρει επίσημα τη νέα σειρά GCC 15, αλλά σηματοδοτεί και την έναρξη των προετοιμασιών για την ανάπτυξη της GCC 16, καθώς ο κλάδος 16.0 έχει διαιρεθεί παράλληλα και θα θέσει τις βάσεις για την επόμενη μεγάλη έκδοση, την GCC 16.1.

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

Μία από τις πιο αξιοσημείωτες αλλαγές σε αυτήν τη νέα έκδοση είναι ότι το GCC 15.1 υιοθετεί το πρότυπο C23 ως προεπιλογή για τη μεταγλώττιση κώδικα C, χρησιμοποιώντας την επιλογή -std=gnu23. Αυτή η ενημέρωση αντικαθιστά το προηγούμενο πρότυπο που χρησιμοποιούνταν από προεπιλογή, C17 (-std=gnu17), και εισάγει μια σειρά από νέες δυνατότητες του νέου προτύπου. Ανάμεσά τους είναι το η σταθερά nullptr, ο τύπος _BitInt(n), και οι λέξεις-κλειδιά bool, true και false, κάτι που θα μπορούσε να προκαλέσει διενέξεις με υπάρχοντα αναγνωριστικά σε παλαιότερο κώδικα.

Ένα άλλο νέο χαρακτηριστικό που ενσωματώνει το GCC 15.1 είναι το #embed οδηγία για την ενσωμάτωση δυαδικών δεδομένων, και χαρακτηριστικά όπως μη αλληλουχία και αναπαραγωγιμότητα, τα οποία παρέχουν μεγαλύτερο έλεγχο της σειράς εκτέλεσης και του προσδιορισμού συνεπών αποτελεσμάτων. Επιπλέον, έχουν υλοποιηθεί στοιχεία του μελλοντικού προτύπου C2Y, όπως μεταβλητές που δηλώνονται εντός των συνθηκών if, εύρη τιμών σε δηλώσεις case, φανταστικά επιθήματα i και j, και υποστήριξη για τελεστές ++ και — που εφαρμόζονται σε μιγαδικούς αριθμούς.

Βελτιώσεις στην C++ και τη μελλοντική C++26

Στην περίπτωση της γλώσσας C++, η νέα έκδοση της Το GCC 15.1 εφαρμόζει χαρακτηριστικά που συζητούνται για το πρότυπο C++26, καθώς εισάγονται νέα χαρακτηριστικά όπως ο τελεστής "friend", η χρήση του constexpr με παραλλαγές του τελεστή new και βελτιώσεις στη σύνταξη για δομημένους συνδέσμους και χαρακτηριστικά όπως το musttail για εγγυημένη αναδρομή ουράς.

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

Νέες προειδοποιήσεις και βελτιώσεις στην στατική ανάλυση

Το σύστημα Η στατική ανάλυση έλαβε οπτικό επανασχεδιασμό που επισημαίνει προβλήματα μέσω συμβόλων, Συμβουλές για τη μετεγκατάσταση στο C23 και μια νέα βιβλιοθήκη libgdiagnostics η οποία επιτρέπει την επαναχρησιμοποίηση της διαγνωστικής λογικής σε άλλα έργα. Εισάγεται επίσης υποστήριξη για τη δημιουργία αναφορών σε μορφή SARIF, διευκολύνοντας την ενσωμάτωση με σύγχρονα εργαλεία ανάλυσης κώδικα.

Στο Οι υπάρχουσες προειδοποιήσεις προστίθενται στις νέες, ως -Wanalyzer-απροσδιόριστος-συμπεριφορά-ptrdiff για την ανίχνευση αφαιρέσεων μεταξύ άσχετων δεικτών, –Λευκό κενό στο τέλος και λευκό κενό στο τέλος για να υποδείξει περιττό κενό χώρο, και –Προστατευτικό κοπής αλέσματος για την ανίχνευση σφαλμάτων στις προστασίες συμπερίληψης κεφαλίδων.

Βελτιστοποιήσεις και υποστήριξη

Μεταξύ των αξιοσημείωτων βελτιστοποιήσεων, Περιλαμβάνεται μια λειτουργία σταδιακής μεταγλώττισης για LTO (Βελτιστοποίηση Χρόνου Σύνδεσης), σχεδιασμένο για να επιταχύνει τις επαναμεταγλωττίσεις όταν οι αλλαγές είναι ελάχιστες. Επίσης η διανυσματοποίηση βρόχου βελτιώνεται, ακόμη και σε περιπτώσεις όπου το μέγεθος των πινάκων δεν είναι γνωστό κατά το χρόνο μεταγλώττισης, και αυξάνει την ταχύτητα μεταγλώττισης πολύ μεγάλων αρχείων.

Από την πλευρά της υποστήριξης, έχουν προστεθεί επεκτάσεις ARMv64 στο AArch8, υποστήριξη για νέες CPU όπως η Apple M3, Cortex-X925 και NVIDIA Grace, και επεκτείνει την πλατφόρμα MinGW. Η παραγωγή κώδικα για τις GPU AMD Radeon ενισχύεται με Πειραματική υποστήριξη για τις νέες σειρές GFX9, GFX10.3 και GFX11. Για την αρχιτεκτονική x86, ενεργοποιείται η υποστήριξη για το AVX10.2 και τις νέες εντολές AMX, ενώ η υποστήριξη για το Xeon Phi Knights διακόπτεται.

Επιπλέον, Το GCC 15.1 εισάγει έναν μεταγλωττιστή για το COBOL (gcobol), με υποστήριξη για αρχιτεκτονικές x86-64 και AArch64, και μια ενημερωμένη υλοποίηση της γλώσσας D (έκδοση 2.111.0). Έχει προστεθεί υποστήριξη για μη προσημασμένους ακέραιους αριθμούς στο Fortran και έχει προωθηθεί η υιοθέτηση των OpenMP 5.0 έως 6.0, συμπεριλαμβανομένων βελτιώσεων στη διαλειτουργικότητα και ενοποιημένης χρήσης μνήμης στις GPU.