Viele Compiler-Neuerungen in GCC 4.9
Das alljährliche Major-Release der GNU Compiler Collection bringt etliche Neuerungen bei der Unterstützung von Programmiersprachen- und Programmierstandards sowie zahlreiche Optimierungen mit.
- Alexander Neumann
Rund 13 Monate nach der Veröffentlichung des letzten größeren Releases ist die Version 4.9 der GNU Compiler Collection (GCC) erschienen. Das neue Release enthält zahlreiche funktionale Neuerungen oder Verbesserungen zur Optimierung des kompilierten Codes, aber auch auf Programmiersprachenseite oder bei der Aktualisierung auf neue Programmierstandards hat sich einiges getan.
Sprachen und Standards
So wird mit OpenMPÂ 4.0 die im letzten Sommer freigegebene letzte Version des offenen Standards zur Shared-Memory-Programmierung unterstĂĽtzt. OpenMPÂ 4.0 fĂĽhrte neue Konstrukte fĂĽr die Nutzung von Beschleunigern und Coprozessoren sowie Direktiven zum Abbruch paralleler Berechnungen ein. AuĂźerdem lassen sich nun eigene Datentypen fĂĽr die Reduktion spezifizieren.
An der Unterstützung des derzeit aktuellen C++11-Standards haben die GCC-Entwickler ebenfalls gefeilt, so wurde am im Sprachstandard vorgeschriebenen Umgang mit regulären Ausdrücken gearbeitet. Seit der Version 4.8.1 ist die GNU Compiler Collection bei C++11 "feature-complete". Außerdem wurden mit GCC 4.9 erste Bemühungen unternommen, die mit mit C++14 vorgesehenen Neuerungen zu unterstützen. Ebenfalls neu im Boot ist Cilk Plus, eine von Intel eingebrachte C++-Spracherweiterung zur parallelen Daten- und Task-Verarbeitung, mit der GCC nun in Ansätzen umgehen kann.
Der C-Compiler kann nun Sprachkonstrukte von C11 wie atomare Typen, generische Auswahlen und Thread-lokalen Speicher bedienen. Die Unterstützung des ISO-Standards ist anscheinend bis auf einige wenige Ausnahmen weitgehend fertig. Bei der Programmiersprache Ada nutzt GCC nun den neuesten Sprachstandard Ada 2012, GCC 4.8 war noch auf Ada 2005 ausgerichtet. Fortran 2003 lässt sich jetzt mit Finalization verwenden, das schon andere Compiler zur Verfügung stellen. Aufgewertet wurde Googles Programmiersprache Go, deren Version 1.2.1 die GCC-Entwickler implementiert haben.
Optimierungen
Die Funktion Address Sanitizer zum Aufspüren von Speicherfehlern war bei GCC 4.8 allein x86- und x86-64-Systemen vorbehalten, nun ist sie auch auf ARM-Geräten einsetzbar. Ganz neu ist hingegen Undefined Behavior Sanitizer (UBSan). Mit der Funktion lässt sich undefiniertes Verhalten zur Laufzeit nach den C- und C++-Standards erkennen.
Ăśberarbeitet haben die Entwickler die Link Time Optimizations (LTOs). Hier kommt es aufgrund der Verbesserungen zu einer Reduzierung der Speicherbelegung und der beim Kompilieren aufgewendeten Zeit. Auf Intels x86-64- und IA-32-Systemen gibt es auĂźerdem schon Support fĂĽr die neuen AVX-512-Instruktionen
Weitere Neuerungen entnimmt man am besten der von den Entwicklern zusammengetragenen Liste der Ă„nderungen. Downloads gibt es auf den FTP-Servern des GNU-Projekts.
Siehe dazu auch:
- GNU Compiler Collection (GCC) im heise Software-Verzeichnis