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.
(Bild:Â GNU Compiler Collection, Lizenz GNU Free Documentation License [1] )
Rund 13 Monate nach der Veröffentlichung [2] des letzten gröĂeren Releases ist die Version 4.9 der GNU Compiler Collection (GCC) erschienen. Das neue Release [3] 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 [4] 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 [5] 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 [6], 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 [7]. Downloads gibt es auf den FTP-Servern [8] des GNU-Projekts.
Siehe dazu auch:
- GNU Compiler Collection (GCC) [9] im heise Software-Verzeichnis
URL dieses Artikels:
https://www.heise.de/-2174613
Links in diesem Artikel:
[1] https://gnu.org/licenses/fdl.html
[2] https://www.heise.de/news/GCC-4-8-mit-Unterstuetzung-fuer-64-Bit-ARM-1829259.html
[3] http://gcc.gnu.org/ml/gcc/2014-04/msg00195.html
[4] https://www.heise.de/hintergrund/Die-wichtigsten-Neuerungen-von-OpenMP-4-0-1915844.html
[5] https://www.heise.de/news/GCC-ist-C-11-Feature-Complete-1874903.html
[6] http://cilkplus.org/
[7] http://gcc.gnu.org/gcc-4.9/changes.html
[8] http://www.gnu.org/order/ftp.html
[9] http://www.heise.de/download/gnu-compiler-collection-gcc.html
Copyright © 2014 Heise Medien