Login
Newsletter
Werbung

Do, 3. Mai 2018, 11:54

Software::Entwicklung

GCC 8.1 erschienen

Ein Jahr nach GCC 7.1 haben die Entwickler nun Version 8.1 der freien Compiler-Suite veröffentlicht. GCC 8.1 verbessert viele Fehlermeldungen, kann zusätzliche Warnungen ausgeben und unterstützt experimentell C++17 sowie Teile von C++2a.

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 ein Jahr nach GCC 7.1 die Version 8.1 bereit. Seit einigen Jahren umfasst die Versionierung von GCC nur noch zwei Nummern statt drei, wobei Versionen, die auf .0 enden, weggelassen werden.

GCC 8 verbessert die Code-Generierung weiter. Für alle Architekturen wirksam sind dabei die generellen Verbesserungen im Code-Optimierer, darunter die Heuristik, wann eine Funktion inline gemacht wird, und die profilgesteuerte Optimierung. Programmschleifen können in manchen Fällen stärker optimiert werden. Eine neue Option kann Code einfügen, der Sprungziele im Code auf Gültigkeit prüft. Dies kann den Code sicherer machen, kostet aber genauso sicher Geschwindigkeit. Eine weitere neue Option macht die Erkennung von Stack-Überläufen zuverlässig und erhöht damit ebenfalls die Sicherheit auf Kosten der Geschwindigkeit. Fälschlich deklarierte Funktionsattribute werden jetzt einheitlicher behandelt und resultieren in Warnungen. Weitere Verbesserungen gab es im gcov-Programm, im AddressSanitizer und im Undefined Behavior Sanitizer.

Bei den Programmiersprachen liegen die größten Änderungen von GCC 8.1 in C und C++. Zahlreiche neue Kommandozeilenoptionen schalten zusätzliche Warnungen ein und die Meldungen wurden besser verständlich gemacht. Der C++Compiler unterstützt mit einer Option die noch im Entwurf befindliche Spezifikation C++2a. Von den zahlreichen Neuerungen dieses Sprachstandards ist aktuell etwa ein Drittel implementiert. Die Unterstützung für das im letzten Jahr publizierte C++17 ist weiterhin experimentell. Der Standard für GCC 8 ist weiter C++14. Die C++-Standardbibliothek erhielt entsprechende Erweiterungen und eine neue Funktion std::random_device::entropy(), die den Entropiezähler des Kernels ausliest, sofern es einen gibt.

Zahlreiche Verbesserungen gab es bei der Heterogeneous System Architecture Intermediate Language (HSAIL). Der Fortran-Compiler kommt mit libfortran 5 und implementiert nun eine der wichtigsten Eigenschaften von Fortran 2003, parametrisierte abgeleitete Typen. Die maximale Dimension von Arrays ist jetzt 15 wie von Fortran 2008 gefordert. Der Go-Compiler wurde auf den Stand von Go 1.10.1 gebracht. Der Garbage Collector darin ist jetzt vollständig parallelisiert und die vollständig implementierte Escape-Analyse kann viele Allozierungen auf dem Stack statt auf dem Heap vornehmen, was deutlich schneller geht.

Daneben bringt GCC 8 viele architekturspezifische Änderungen, vor allem für Architekturen, die mit A beginnen. Bei 64 Bit ARM (AArch64) wird jetzt Armv8.4-A unterstützt, daneben wurden viele optionale Instruktionen von Armv8.3-A und früher implementiert. ARC erhielt Unterstützung für schnelle Interrupts, nackte Funktionen, die Instruktion sjli und einiges mehr. Bei ARM lässt sich genauer einstellen, für welche CPU Code generiert werden soll. Der Linker produziert bei Armv6 und Armv7-R für Big Endian-Systeme jetzt das BE8-Format. Das frühere BE32-Format kann mit einer Option wieder hergestellt werden. AVR erhielt Unterstützung für weitere Prozessoren und Interrupt-Routinen laufen schneller.

Daneben erhielt GCC 8.1 weitere Änderungen, eine genaue Aufstellung kann man im Änderungslog des Compilers finden. Der Quellcode von GCC 8.1 kann von zahlreichen Spiegel-Servern des GNU-Projektes heruntergeladen werden.

Werbung
Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung