Clang

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
Clang

DragonFull.png
Basisdaten

Maintainer Chris Lattner[1]
Entwickler The LLVM Team[2]
Aktuelle Version 11.0.0[3][4]
(12. Oktober 2020)
Betriebssystem Unix, GNU/Linux, Windows, macOS, und andere
Programmiersprache C++
Kategorie Compiler-Frontend
Lizenz Apache-Lizenz 2.0 (Freie Software)
clang.llvm.org

Clang [klæŋ][5] ist ein Compiler-Frontend für die Programmiersprachen C, C++, Objective-C und Objective-C++. Es verfügt im Vergleich zu 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.[6]

Clang unterliegt 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 proprietäre Produkte oft von Interesse ist.

Einsatz des Compilers[Bearbeiten | Quelltext bearbeiten]

Das Clang-Entwicklungsprojekt ist eng mit dem LLVM-Projekt verzahnt. Es wurde als Ersatz für das 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.[7] Ab Version 2.7 wird die Programmiersprache C++ offiziell unterstützt.[8] Clang lässt sich aber auch ohne LLVM als rein statisches Programmanalyse- und Fehlerdiagnosewerkzeug, zum Beispiel beim Einsatz mit anderen Compilern, verwenden.[9]

Ab der Version 3.0 unterstützt das LLVM-Projekt den GCC-Compiler nicht mehr, sondern setzt Clang, oder alternativ das Dragonegg-PlugIn, verbindlich voraus.[10] 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.[11][12]

Auf dem Apple Macintosh sowie seit Oktober 2014 auch auf Linux ist Clang der Standard-Compiler für Google Chrome.[13][14] Clang ist zur statischen Code-Analyse in die Entwicklungsumgebung Xcode von Apple für die Programmiersprachen C, Objective-C und C++ integriert.[15]

Vergleich mit GCC[Bearbeiten | Quelltext 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.

Ein Vorteil von Clang gegenüber GCC ist die Modularität. Durch die Modularität ist Clang im Vergleich zum GCC besser in anderen Programmen wie z. B. integrierten Entwicklungsumgebungen wiederverwendbar.

Die BSD-ähnliche Lizenz macht es einfacher, Clang zusammen mit anderer Software als Gesamtpaket zu veröffentlichen.

Clang ist bei der Verarbeitung der Syntax und der Maschinencodegenerierung in einigen Fällen schneller als gcc oder g++. Der Gesamt-Zeitgewinn hängt jedoch sehr 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.[16]

Versionsnummern[Bearbeiten | Quelltext bearbeiten]

Die Versionsnummern steigen bei LLVM und Clang in der Regel etwa im halbjährlichen Rhythmus um eine Nachkommastelle. Seit Juni 2010 hat Clang immer die gleiche Versionsnummer wie das dazugehörige LLVM.[17] Die LLVM- und Clang-Versionsnummern entsprechen in Apples integrierter Entwicklungsumgebung Xcode wiederum anderen, nämlich auf von Apple erstellten Branches mit eigenen Versionsnummern (z. B. clang-700.0.72 basiert auf LLVM 3.7.0), in die Apple auch Backports von Fehlerbehebungen neuerer Versionen mit einfließen lässt.[18][19]

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 (clang-500.2.75) 5.0
3.4 3.4 (clang-503.0.38) 5.1
3.5 3.5 (clang-600.0.51) 6.0.1
3.6 3.6 (clang-602.0.53) 6.4
3.7 3.7 (clang-700.0.72) 7.0
3.8 3.8 (clang-703.0.29) 7.3

Entstehung[Bearbeiten | Quelltext 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.[20][21] 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.[22][23]

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

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. The LLVM Compiler Infrastructure Project (englisch) – offizielle Webseite
  2. „Written by The LLVM Team“ (unterhalb der FAQ-Auflistung)
  3. LLVM 11.0.0 Release. 12. Oktober 2020 (abgerufen am 12. Oktober 2020).
  4. Download LLVM releases. 12. Oktober 2020 (abgerufen am 12. Oktober 2020).
  5. Eric Christopher: [LLVMdev] simply wonder pronunciation of Clang. (Nicht mehr online verfügbar.) In: LLVMdev mailing list. 3. Juli 2008, archiviert vom Original am 8. Februar 2012; abgerufen am 11. Mai 2020 (englisch): „We've been pronouncing it kl“
  6. clang.llvm.org Offizielle Präsenz von Clang
  7. LLVM 2.6 Release! (Memento des Originals vom 11. Januar 2012 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/lists.cs.uiuc.edu (englisch) – Meldung bei lists.cs.uiuc.edu, vom 23. Oktober 2009
  8. clang: a C language family frontend for LLVM (englisch) – Projektseite bei LLVM; Stand: 18. Oktober 2010
  9. Expressive Diagnostics (englisch) – Seite bei LLVM; Stand: 27. November 2009
  10. LLVM 3.0 trennt sich von GCC
  11. FreeBSD Quarterly Status Report January-March, 2012
  12. FreeBSD will Clang als Standard-Compiler
  13. LLVM Project Blog: Using clang for Chrome production builds on Linux
  14. Clang als Standard-Compiler für Chrome auf Macintosh
  15. Running the analyzer within Xcode abgerufen am 20. September 2019.
  16. clang.llvm.org - Clang vs GCC
  17. FYI: Version number change (englisch) – Beitrag bei Clang Developers, vom 25. Juni 2010
  18. Xcode clang version record (englisch) – Manuell gepflegte Liste von XCode clang versionen in XCode
  19. Xcode Version Information (englisch) – XCode Build- und Versionsnummern
  20. bsdcan.org
  21. llvm.org (PDF)
  22. Compiler State of the Union
  23. State of Clang (Video) (MOV-Datei; 268,69 MB)