Das alljährliche große Release der GNU Compiler Collection umfasst unter anderem Neuerungen bei der Unterstützung von Programmiersprachen- und Programmierstandards sowie zahlreiche Optimierungen.
Ziemlich genau ein Jahr nach der Freigabe von GCC 4.9 ist nun die Version 5.1 der GNU Compiler Collection erschienen. Über das eine Jahr hinweg sind etliche Neuerungen hinzugekommen, zum Beispiel initialer Support für die Just-in-time-Kompilierung über die neue libgccjit-Bibliothek. Beginnend mit Version 5.x folgt das Projekt einem neuen Versionierungsschema, das vorsieht, dass Vorschauvarianten einer Hauptversion mit 0.1 (z. B. 5.0.1) ausgezeichnet werden und das erste stabile Release eines Zweiges eine „.1“ (z.B. 5.1) angehängt bekommt.
Der C-Compiler unterstützt nun standardmäßig den ISO-C11-Standard (GNU11) und nicht mehr C89 (GNU89). Die letztjährige Ausgabe konnte den derzeit aktuellen Sprachstandard noch nicht vollständig bedienen. Mit den Neuerungen von C++14 kann die GNU Compiler Collection auch schon in Auszügen umgehen.
Den Standard zur Shared-Memory-Programmierung OpenMP 4.0 unterstützt GCC 5.0 nun für C, C++ und Fortran. Initial gibt es hier Support für Offloading, also das Auslagern von Rechneraufgaben, wenn Beschleuniger und beziehungsweise oder zusätzliche Recheneinheiten angesprochen werden. Und auch die künftigen Intel Xeon Phi MICs werden jetzt schon rudimentär unterstützt.
Spracherweiterung, Optimierungen und Plattformen
Erstmals kann GCC mit Intels Cilk Plus umgehen. Dabei handelt es sich um eine C/C++-Spracherweiterung zur parallelen Daten- und Task-Verarbeitung. Sie ergänzt C und C++ um die drei Schlüsselworte cilk_for, cilk_spawn und cilk_sync , die die Entwicklung parallelisierter Anwendungen erleichtern sollen. Speziell in Multicore-Umgebungen sollen so optimierte Applikationen von einer höheren Performance profitieren können. Darüber hinaus enthält die Erweiterung eine eigene Array-Notation für die Datenparallelisierung und eine spezielle Semantik, die das Debugging in der gewohnten Umgebung erleichtern soll.
Interprozedurale Optimierungen finden sich durch das neue Identical Code Folding (ICF) zur Vereinheitlichung identischer Funktionen. Des Weiteren wurden virtuelle Tabellen zur Umsetzung von dynamischem Binding überarbeitet, und es werden schreibgeschützte Variablen automatisch aufgespürt und optimiert. Außerdem wurden Speichernutzung und Verbindungszeiten beim Einsatz von Link-Time Optimizations (LTO) verbessert. Es geht hier um Optimierungen, die der Compiler durchführen kann, nachdem einzelne Module kompiliert wurden und die zum fertigen Programm gelinkt werden.
Weitere Neuerungen entnimmt man der Webseite „Changes, New Features, and Fixes“, die auch auf die Unterstützung neuer Plattformen eingeht beziehungsweise anzeigt, wo es hierin Überarbeitungen gegeben hat. Downloads gibt es auf den FTP-Servern des GNU-Projekts. (ane)