zurück zum Artikel

Viele Compiler-Neuerungen in GCC 4.9

Alexander Neumann

Das alljĂ€hrliche Major-Release der GNU Compiler Collection bringt etliche Neuerungen bei der UnterstĂŒtzung von Programmiersprachen- und Programmierstandards sowie zahlreiche Optimierungen mit.

GNU Free Documentation License

(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.

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.

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:


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