Software::Entwicklung
GCC 10 freigegeben
Die GNU Compiler Collection GCC ist in Version 10 erschienen. In dieser Version gibt es verbesserte Unterstützung des C++20-Standards, verbesserter statischer Code-Analyse und Optimierung sowie vielen weiteren Neuerungen.
gnu.org
GCC 10 erscheint genau im Zeitplan ein Jahr nach
GCC 9. Wie immer seit einigen Jahren wird mit der Unterversionsnummer 1 statt 0 begonnen, so dass jetzt genau genommen
GCC 10.1 vorliegt. Die Neuerungen gegenüber GCC 9 umfassen neue eingebaute Funktionen wie
__builtin_roundeven
, neue Kommandozeilenoptionen zur Steuerung der Compilierung sowie verbesserte Optimierung während der Compilierung, des Linkens und mit Hilfe von Profilen.
Die bedeutendste neue Option ist wahrscheinlich -fanalyzer
, mit der die neu hinzugekommene statische Code-Analyse eingeschaltet wird. Ihre genaue Funktionsweise wird über zahlreiche weitere Optionen gesteuert. Statische Code-Analyse ist eine Analyse des Quellcodes, die fragwürdige Stellen finden soll. Während die Compiler Syntaxfehler, Konstrukte mit undefiniertem Verhalten und unsauberen Code finden können, geht eine statische Code-Analyse noch darüber hinaus und sucht nach Stellen, die erfahrungsgemäß oft falsch sind, findet Probleme mit der Speicherverwaltung und anderes mehr. Die Analyse wird statisch genannt, weil sie den Code nur betrachtet, aber nicht ausführt. Da die Analyse deutlich mehr Zeit benötigt als eine normale Compilierung, schaltet man sie normalerweise nur ein, wenn man sie braucht.
GCC unterstützt jetzt Version 2.6 von OpenACC und neue Funktionen, die zu OpenMP 5.0 hinzukamen. Noch wird aber nicht der volle Umfang von OpenMP 5.0 erreicht. Ferner kann man nun mit OpenMP und OpenACC die Berechnungen auf AMD Radeon (GCN) GPUs abwälzen, wobei aber nur die Fiji-Generation und VEGA 10/VEGA 20 unterstützt werden.
Für alle C-verwandten Sprachen bietet GCC 10.1 das neue Attribut access
für Funktionen und Typen. Die Compilerwarnungen wurden erweitert. Bezeichner dürfen bereits seit einiger Zeit Zeichen enthalten, die über ASCII hinausgehen. Nun können diese Zeichen auch direkt statt in der UCN-Ssyntax (\uNNNN
oder \UNNNNNNNN
) geschrieben werden.
Der C-Compiler kennt jetzt bereits einige Konstrukte, die in den kommenden C2X-Standard einfließen werden. Die Option -fno-common
wurde standardmäßig eingeschaltet, was den Zugriff auf globale Variablen effizienter macht. Der C++-Compiler erhielt neue Funktionalität aus C++20 und weitere Verbesserungen. Auch der Fortran-Compiler erhielt einige Verbesserungen. Eine große Zahl von Erweiterungen floss in die verschiedenen Architekturen ein, wobei nur die wenigsten davon x86 betreffen. Hier gab es vor allem Unterstützung für optimierte Instruktionen für Intel Cooperlake- und Tigerlake-CPUs. Alle Details zur neuen Version sind im Änderungs-Dokument zusammengestellt.