Clang
| Clang
| |
|---|---|
| [[Datei:Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)|150px]] | |
| Basisdaten
| |
| Hauptentwickler | Chris Lattner<ref name="home">The LLVM Compiler Infrastructure Project (englisch) – offizielle Webseite</ref> |
| Entwickler | The LLVM Team<ref>„Written by The LLVM Team“ (unterhalb der FAQ-Auflistung)</ref> |
| Erscheinungsjahr | Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value) |
| Aktuelle Version | Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value) (Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)) |
| Aktuelle Vorabversion | Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value) (Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)) |
| Betriebssystem | Unix, GNU/Linux, Windows, macOS, und andere |
| Programmiersprache | C++ |
| Kategorie | Compiler-Frontend |
| Lizenz | Apache-Lizenz 2.0 (Freie Software) |
| clang.llvm.org | |
Clang [<templatestyles src="IPA/styles.css" />]<ref>Eric Christopher: [LLVMdev] simply wonder pronunciation of Clang. In: LLVMdev mailing list. 3. Juli 2008, archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am 8. Februar 2012; abgerufen am 11. Mai 2020 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)): „We've been pronouncing it kl“</ref> 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.
Clang wurde als Frontend für das Compiler-System LLVM entwickelt. Durch den modularen Aufbau von Clang lassen sich seine Bestandteile aber auch in andere Produkte integrieren.<ref name="clang">clang.llvm.org Offizielle Präsenz von Clang</ref>
Clang unterliegt einer BSD-ähnlichen Lizenz. Anders als bei der GNU General Public License besteht bei der liberaleren Apache-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
Die Software Clang 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.<ref>lists.cs.uiuc.edu: <templatestyles src="Webarchiv/styles.css" />LLVM 2.6 Release! ( vom 11. Januar 2012 im Internet Archive) (englisch)</ref> Ab Version 2.7 wird die Programmiersprache C++ offiziell unterstützt.<ref>clang: a C language family frontend for LLVM (englisch) – Projektseite bei LLVM; Stand: 18. Oktober 2010</ref> Clang lässt sich aber auch ohne LLVM als rein statisches Programmanalyse- und Fehlerdiagnosewerkzeug, zum Beispiel beim Einsatz mit anderen Compilern, verwenden.<ref>Expressive Diagnostics (englisch) – Seite bei LLVM; Stand: 27. November 2009</ref>
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.<ref name="LLVM mit Clang">LLVM 3.0 trennt sich von GCC</ref> 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.<ref>FreeBSD Quarterly Status Report January-March, 2012</ref><ref>FreeBSD will Clang als Standard-Compiler</ref>
Auf dem Apple Macintosh sowie seit Oktober 2014 auch auf Linux ist Clang der Standard-Compiler für Google Chrome.<ref>LLVM Project Blog: Using clang for Chrome production builds on Linux</ref><ref>Clang als Standard-Compiler für Chrome auf Macintosh</ref> Clang ist zur statischen Code-Analyse in die Entwicklungsumgebung Xcode von Apple für die Programmiersprachen C, Objective-C und C++ integriert.<ref>Running the analyzer within Xcode abgerufen am 20. September 2019.</ref>
Vergleich mit GCC
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. Beispielsweise basieren die neueren Compiler des Embarcadero C++ Builder auf Clang.
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.<ref>clang.llvm.org: <templatestyles src="Webarchiv/styles.css" />Comparing clang to other open source compilers ( vom 22. Januar 2018 im Internet Archive) (englisch)</ref>
Versionsnummern
Die Versionsnummern steigen bei LLVM und Clang in der Regel etwa im halbjährlichen Rhythmus. Seit Juni 2010 entspricht die Clang-Versionsnummer der zugehörigen LLVM-Version.<ref>FYI: Version number change (englisch) – Beitrag bei Clang Developers, vom 25. Juni 2010</ref> Mit Version 18 wurde das Benennungsschema an das von GCC angepasst, in dem die erste stabile Version einer Version mit der Minor-Version 1 beginnt, während die Minor-Version 0 für den Entwicklungszweig verwendet wird, der nach der Veröffentlichung der vorherigen Hauptversion für weitere Entwicklungen genutzt wird.<ref>RFC: Name the first release from a branch N.1.0 instead of N.0.0. 1. Dezember 2023, abgerufen am 6. März 2024 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
Veröffentlichte Versionen
| Datum | Version |
|---|---|
| 24.12.2013 | 3.4.0 |
| 02.09.2014 | 3.5.0 |
| 25.02.2015 | 3.6.0 |
| 28.08.2015 | 3.7.0 |
| 03.03.2016 | 3.8.0 |
| 01.09.2016 | 3.9.0 |
| 09.03.2017 | 4.0.0 |
| 05.09.2017 | 5.0.0 |
| 02.03.2018 | 6.0.0 |
| 17.09.2018 | 7.0.0 |
| 18.03.2019 | 8.0.0 |
| 19.09.2019 | 9.0.0 |
| 24.03.2020 | 10.0.0 |
| 12.10.2020 | 11.0.0 |
| 15.04.2021 | 12.0.0 |
| 04.10.2021 | 13.0.0 |
| 25.03.2022 | 14.0.0 |
| 06.09.2022 | 15.0.0 |
| 17.03.2023 | 16.0.0 |
| 19.09.2023 | 17.0.0 |
| 06.03.2024 | 18.1.0 |
| 17.09.2024 | 19.1.0 |
| 04.03.2025 | 20.1.0 |
| 26.08.2025 | 21.1.0 |
| 24.02.2026 | 22.1.0 |
Entstehung
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.<ref>bsdcan.org</ref><ref>llvm.org (PDF; 5,8 MB) </ref> 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.<ref>Compiler State of the Union</ref><ref>State of Clang (Video) (MOV-Datei; 268,69 MB)</ref>
Im Rahmen eines Vortrags wurde Clang im Februar 2012 auch auf der Microsoft-Entwicklerkonferenz Going Native 2012 vorgestellt.
Einzelnachweise
<references responsive />