Login
Newsletter
Werbung

Mo, 22. April 2013, 15:12

Software::Entwicklung

Clang unterstützt C++11 vollständig

Das LLVM-Projekt hat bekannt gegeben, dass der Compiler Clang jetzt den vollständigen Sprachumfang des Standards C++11 unterstützt. Auch der kommende C++-Standard, der als Prototyp in Clang implementiert ist, ist bereits weit gediehen.

Clang ist ein Compiler-Frontend für C, C++ und Objective C, das seit LLVM Version 2.6 ein fester Bestandteil des Compiler-Pakets ist. Clang verspricht gegenüber GCC schnellere Übersetzungsläufe mit geringerem Speicherverbrauch und besseren Fehlermeldungen und als Ergebnis oftmals auch kleinere ausführbare Programme. Clang ist im Gegensatz zu GCC von anderen Programmen, die Syntaxanalyse benötigen, wiederverwendbar, und der von ihm generierte abstrakte Syntaxbaum ist anderen Programmen zugänglich und soll anders als der von GCC alle relevanten Informationen enthalten. Die BSD-Lizenz, unter der Clang vertrieben wird, wird von diversen Projekten zudem als liberaler und damit geeigneter als die von GCC erachtet. Vor allem die BSD-Projekte machen sich deshalb stark dafür, Clang künftig als Standardcompiler für ihre Systeme zu nutzen.

Der neueste Meilenstein von Clang heißt C++11. Der aktuelle Standard der Programmiersprache C++ wird jetzt vollständig unterstützt, wie die Entwickler mitteilen. Damit hat Clang möglicherweise GCC überholt, der in der vor einem Monat erschienenen Version 4.8.0 noch zwei kleine Lücken in der Unterstützung von C++11 aufweist. Von diesen soll aber zumindest eine in GCC 4.8.1 geschlossen werden.

Die C++-Unterstützung in Clang ist seit Revision 179861 komplett, wenn auch noch nicht offiziell veröffentlicht. Zu ihr zählen die [[attribute]]-Syntax, erbende Konstruktoren und thread_local-Variablen.

Die nächste Version des C++-Standards ist bereits in Arbeit. Der Entwurf dazu, der möglicherweise offiziell zu C++14 wird, trägt den Arbeitstitel C++1y. Die Clang-Entwickler erwarten, dass sich die Grundzüge der Spezifikation nicht mehr ändern werden. Die zu erwartenden Neuerungen in C++1y sind demnach verallgemeinerte Lamba-Ausdrücke, automatische Erkennung des Return-Typs einer Funktion durch den Compiler, wenn als Typ auto angegeben wird, und eine Erweiterung von constexpr. Letztere ist mit einer Inkompatibilität verbunden, die es erfordert, ein bisher implizites const explizit hinzuschreiben. Das ist aber auch in heutigem Code schon möglich und sinnvoll. Prototypen der neuen Funktionalität wurden in Clang implementiert und sollen bald ins offizielle Versionsverwaltungssystem von Clang Einzug halten. Somit wird Clang wahrscheinlich der erste Compiler mit experimenteller C++1y-Unterstützung.

Werbung
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung