Clang

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Clang
Maintainer Chris Lattner[1]
Entwickler The LLVM Team[2]
Aktuelle Version 3.4
(2. Januar 2014)
Betriebssystem Unix, GNU/Linux, Windows, Mac OS X, und andere
Programmier­sprache C++
Kategorie Compiler-Frontend
Lizenz UI/NCSAOSL (Freie Software)
clang.llvm.org

Clang [ˈklæŋ][3] ist ein Compiler-Frontend für die Programmiersprachen C, C++, Objective-C und Objective-C++. Es verfügt im Vergleich mit anderen Compiler-Frontends über umfangreichere und genauere statische und dynamische Analysemethoden, die die Fehlersuche erleichtern. Zudem ermöglicht es schnellere Übersetzungen der Quelltexte mit geringerem Speicherverbrauch und als Ergebnis oft kleinere ausführbare Programme. Clang wurde als Frontend für das Compiler-Backend LLVM entwickelt; durch den modularen Aufbau von Clang lassen sich seine Bestandteile aber auch in andere Produkte integrieren.[4]

Clang untersteht einer BSD-ähnlichen Lizenz. Anders als bei der GNU General Public License besteht bei der liberaleren BSD-Lizenz kein Zwang, alle Quelltexte von Programmen offenzulegen, die Clang oder Teile davon verwenden, was vor allem für kommerzielle Produkte oft von Interesse ist.

Einsatz des Compilers[Bearbeiten]

Das Clang-Entwicklungsprojekt ist eng mit dem LLVM-Projekt verzahnt. Es wurde als Ersatz für den GCC-Compiler-Frontend entwickelt. Seit September 2009 gilt Clang offiziell als stabil und produktiv verwendbar und findet sich mit LLVM Version 2.6 als fester Bestandteil im LLVM-Compiler-Paket.[5] Seit Version 2.7 wird die Programmiersprache C++ offiziell unterstützt.[6] Clang lässt sich aber auch ohne LLVM als rein statisches Programmanalyse- und Fehlerdiagnosewerkzeug, zum Beispiel beim Einsatz mit anderen Compilern, verwenden.[7]

Seit der Version 3.0 unterstützt das LLVM-Projekt den GCC-Compiler nicht mehr, sondern setzt Clang, oder alternativ das Dragonegg-PlugIn, verbindlich voraus.[8] Am 12. Mai 2012 kündigte das FreeBSD-Projekt den Umstieg auf Clang statt GCC als Standard-Compiler ab der Version 10.0 des Betriebssystems an.[9][10]

Auf dem Apple Macintosh ist Clang der Standard-Compiler für Google Chrome.[11] Clang ist zur statischen Code-Analyse in die Entwicklungsumgebung Xcode von Apple für die Programmiersprachen C, Objective-C und C++ integriert.

Vergleich mit GCC[Bearbeiten]

Neben GCC ist Clang ein oft eingesetzter Compiler im Open-Source-Umfeld. Er unterscheidet sich sowohl in technischer als auch lizenzrechtlicher Hinsicht von GCC.

Vorteile von Clang gegenüber GCC sind die Modularität und die BSD-ähnliche Lizenz. Durch die Modularität ist Clang im Vergleich zum GCC besser in anderen Programmen wie z. B. integrierten Entwicklungsumgebungen wiederverwendbar.

Clang ist oft schneller als gcc oder g++. Sowohl beim Verarbeiten der Syntax als auch der Maschinencodegenerierung besitzt er in der Regel einen Vorsprung in der Größenordnung von Faktor 2 oder mehr. Der Gesamt-Zeitgewinn hängt jedoch stark vom Szenario ab. Speziell unter Linux-Bedingungen ist dieser oftmals nicht so hoch wie zum Beispiel bei für Apple-Systeme typischen Umgebungen und Aufgaben.[12]

Versionsnummern[Bearbeiten]

Die Versionsnummern steigen bei LLVM und Clang in der Regel etwa im halbjährlichen Rhythmus um eine Nachkommastelle. Die LLVM- und Clang-Versionsnummern entsprechen in Apples integrierter Entwicklungsumgebung Xcode wiederum anderen Versionsnummern.[13]

Verlauf und Beziehung der Versionsnummerierung:

LLVM Clang Xcode
2.6 1.0 1.0
2.7 1.1 1.5
2.8 2.8 1.6
2.9 2.9 1.7
3.0 3.0 2.0
3.1 3.1 3.0
3.2 3.2 4.2
3.3 3.3 5.0
3.4 3.4 5.1
3.5 3.5 6.0

Entstehung[Bearbeiten]

Am 11.Juli 2007 wurde Clang unter einer Open-Source-Lizenz herausgegeben.

Auf der Konferenz BSDCan 2008 wurde Clang im Rahmen des Vortrages "LLVM and Clang: Next Generation Compiler Technology" vom LLVM-Projektleiter Chris Lattner vorgestellt. [14] [15] Danach, auf der Apple-Entwicklerkonferenz Worldwide Developers Conference 2009, wurde Clang durch die Vorträge von Chris Lattner sowie der Entwickler Doug Gregor und Ted Kremenek präsentiert. [16] [17]

Im Juni 2010 entschied Apple, Clang in die Entwicklungsumgebung Xcode zu integrieren.[18] [19] [20]

Im Rahmen eines Vortrags wurde Clang im Februar 2012 auch auf der Microsoft-Entwicklerkonferenz Going Native 2012 vorgestellt.

Am 12. Mai 2012 wurde angekündigt, dass das FreeBSD-Projekt mit Version 10 des Betriebssystems auf Clang statt des GCC als Standard-Compiler umsteigt. [21]

Einzelnachweise[Bearbeiten]

  1. The LLVM Compiler Infrastructure Project (englisch) – offizielle Webseite
  2. „Written by The LLVM Team“ (unterhalb der FAQ-Auflistung)
  3. Eric Christopher: [LLVMdev] simply wonder pronunciation of Clang. In: LLVMdev mailing list. 3. Juli 2008, abgerufen am 13. März 2013 (englisch): „We've been pronouncing it kl“
  4. http://clang.llvm.org/ Offizielle Präsenz von Clang
  5. LLVM 2.6 Release! (englisch) – Meldung bei lists.cs.uiuc.edu, vom 23. Oktober 2009
  6. clang: a C language family frontend for LLVM (englisch) – Projektseite bei LLVM; Stand: 18. Oktober 2010
  7. Expressive Diagnostics (englisch) – Seite bei LLVM; Stand: 27. November 2009
  8. [1] LLVM 3.0 trennt sich von GCC
  9. [2] FreeBSD Quarterly Status Report January-March, 2012
  10. [3] FreeBSD will Clang als Standard-Compiler
  11. [4] Clang als Standard-Compiler für Chrome auf Macintosh
  12. clang.llvm.org - Performance
  13. FYI: Version number change (englisch) – Beitrag bei Clang Developers, vom 25. Juni 2010
  14. http://www.bsdcan.org/2008/
  15. http://llvm.org/pubs/2008-05-17-BSDCan-LLVMIntro.pdf
  16. [5] Compiler State of the Union
  17. [6] (MOV-Datei; 268,69 MB) State of Clang (Video)
  18. https://developer.apple.com/technologies/tools/features.html
  19. [7] WWDC 2010
  20. [8] (MOV-Datei; 80,65 MB) libclang: Thinking Beyond the Compiler (Video)
  21. [9] News-Meldung bei Golem