Login
Newsletter
Werbung

Di, 22. April 2014, 18:10

Software::Entwicklung

GCC 4.9.0 freigegeben

Ein gutes Jahr nach GCC 4.8.0 haben die Entwickler nun Version 4.9.0 der freien Compiler-Suite veröffentlicht. Neben deutlichen Verbesserungen bei der Optimierung während des Linkens gehört auch eine Implementation von Go 1.2.1 zu den Neuerungen.

gnu.org

Neue GCC-Versionen erscheinen einmal im Jahr - an dieses Schema halten sich die Entwickler seit GCC 3.0 im Jahr 2001, lediglich GCC 3.2 verspätete sich um einige Monate. So steht jetzt nach 13 Monaten die Version 4.9.0 bereit. Gegenüber GCC 4.8 bringt die neue Suite zahlreiche Verbesserungen und erweiterte Funktionen.

AddressSanitizer, eine schnelle Funktion zum Erkennen von Speicherfehlern, ist jetzt auch auf ARM verfügbar. Neu ist UndefinedBehaviorSanitizer, eine schnelle Funktion zum Erkennen von (laut Sprachstandard von C und C++) undefiniertem Verhalten. Schaltet man sie ein, werden einige Konstrukte mit zusätzlichem Code ausgestattet, um undefiniertes Verhalten zur Laufzeit zu erkennen.

Viele Verbesserungen gab es bei der Link-Time Optimization (LTO), die wesentlich schneller wurde und weniger Speicher benötigt. So soll eine Debug-Version von Firefox beim Linken statt 15 GB RAM nur noch 3,5 GB benötigen und der Vorgang statt 1700 nur noch 300 Sekunden benötigen. Dazu trug auch das frühere Entfernen von virtuellen Methoden bei, wodurch die Objektdateien auch kleiner werden.

Weitere Optimierungen können beim Linken erreichen, dass mehr virtuelle Funktionen durch direkte Aufrufe ersetzt werden. Dazu wird die Typvererbung genauer analysiert. Auch die Optimierungen, die von zuvor ermittelten Feedback-Daten abhängen, wurden verbessert. Die Startzeit von großen Programmen kann durch einen zusätzlichen Lauf zur optimalen Anordnung von Funktionen deutlich gesenkt werden.

GCC 4.9 unterstützt Version 4.0 der OpenMP-Spezifikation für C und C++. Der Ada-Compiler verwendet jetzt standardmäßig den Sprachstandard 2012 statt 2005. Warnungen und Fehler können jetzt farbig ausgegeben werden. Außerdem wird Cilk Plus unterstützt, eine C- und C++-Erweiterung für parallele Verarbeitung.

Der C-Compiler wurde um Konstrukte von ISO C11 erweitert: atomare Typen, generische Auswahlen und Thread-lokaler Speicher. Damit ist die Unterstützung von C11 wie die von C99 bis auf optionale oder unklare Punkte komplett. Der C++-Compiler wurde um einige im Standard C++1y neu hinzugekommene Details erweitert, darunter Arrays variabler Länge, Ziffern-Trennzeichen und polymorphe Lambda-Ausdrücke. In der Standardbibliothek wurde die Unterstützung für C++11 verbessert, so fehlte bisher offenbar der <regex>-Header. Weitere Elemente des kommenden C++1y-Standards wurden hinzugefügt.

Außerdem bringt GCC 4.9.0 eine vollständige Implementation von Go 1.2.1 und verbessert die Unterstützung von Fortran weiter. Ferner werden zahlreiche neue CPU-Varianten unterstützt, für die man spezifisch optimierten Code erzeugen kann. Eine Liste aller Änderungen kann man im Änderungslog des Compilers finden. Der Quellcode von GCC 4.9.0 kann von zahlreichen Spiegel-Servern des GNU-Projektes heruntergeladen werden.

Werbung
Kommentare (Insgesamt: 22 || Alle anzeigen )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung