Zvonit | |
---|---|
Typ | Kompilátor |
Autor | Chris Lattner |
Vývojář | Apple a další |
Zapsáno v | C++ |
Operační systém | Multiplatformní software |
První vydání | 26. září 2007 |
Hardwarová platforma | multiplatformní |
Nejnovější verze | 14.0.0 [1] (25. března 2022 ) |
Stát | Aktivní |
Licence | Licence University of Illinois |
webová stránka | clang.llvm.org |
Mediální soubory na Wikimedia Commons |
Clang (vyslovuje se "klang" [2] ) je front -end pro programovací jazyky C , C++ , Objective-C , Objective - C++ a OpenCL C , používaný ve spojení s rámcem LLVM . Clang překládá zdrojové kódy do bajtkódu LLVM , poté framework provádí optimalizace a generuje kód .
Cílem projektu je vytvořit náhradu za GNU Compiler Collection ( GCC ). Vývoj probíhá podle open source konceptu v rámci projektu LLVM.
Clang 12, poslední vydaný v dubnu 2021, má plnou podporu pro všechny publikované standardy C++ až po C++17 , implementuje většinu funkcí C++20 a přidává částečnou podporu pro nadcházející standard C++23 . Počínaje verzí V6.0.0 kompiluje Clang C++ pomocí výchozího dialektu GNU C++14 , který zahrnuje funkce ze standardu C++14 a podle rozšíření GNU.
Na projektu se podílejí zaměstnanci několika korporací, včetně Google a Apple . Zdrojový kód je dostupný pod licencí podobnou BSD .
Clang je překladač pro jazyky podobné C, navržený speciálně pro běh nad LLVM. Kombinace Clang a LLVM je kompletní kompilátor a poskytuje sadu nástrojů, které zcela nahradí GCC. Díky své architektuře založené na knihovnách lze Clang (jako LLVM) snadno vložit do jiných aplikací.
Jedním z hlavních cílů Clangu je podpora přírůstkové kompilace, která umožňuje těsnější integraci kompilátoru a grafického rozhraní vývojového prostředí , na rozdíl od GCC, které bylo vytvořeno pro práci v klasickém cyklu kompilace-odkaz-ladění. Na rozdíl od GCC, který je primárně zaměřen na generování kódu , Clang si klade za cíl poskytnout univerzální rámec pro analýzu , indexování, statickou analýzu a kompilaci jazyků rodiny C. Clang zejména neanalyzuje zdrojový kód (jak to dělá GCC), čímž zajišťuje, že je zdrojový kód věrně reprodukován do abstraktního stromu syntaxe .
Na rozdíl od GCC je Clang od základu navržen tak, aby během procesu kompilace uchoval co nejvíce informací, včetně zachování „vzhledu a dojmu“ zdrojového kódu. Tato funkce umožňuje Clangu vytvářet bohaté, kontextově citlivé chybové zprávy, které jsou srozumitelné jak pro programátory, tak pro vývojová prostředí. Modulární design kompilátoru umožňuje jeho použití jako součást vývojového prostředí pro indexování kódu, zvýrazňování syntaxe a refaktorování kódu .
Clang podporuje většinu běžných možností GCC.
V tabulce jsou uvedeny pouze nejvýznamnější události.
datum | událost |
---|---|
25. února 2009 | Clang/LLVM vám umožňuje zkompilovat jádro FreeBSD [3] [4] . Veškerý zdrojový kód FreeBSD, jak jádro, tak uživatelské programy, lze nyní zkompilovat pomocí Clang. |
16. března 2009 | Clang/LLVM zkompiluje funkční jádro DragonFly BSD [5] [6] . |
23. října 2009 | Clang 1.0 byl poprvé vydán jako součást LLVM 2.6. |
prosince 2009 | Generování kódu pro C a Objective-C dosáhlo průmyslové kvality (podpora pro C++ a Objective-C++ ještě není dokončena). Kompilátor C++ dokáže analyzovat libstdc++ z GCC 4.2 a generovat funkční kód pro netriviální programy [7] a také se sám zkompiluje [8] . |
2. února 2010 | Clang se sám hostuje (zkompiloval pracovní verzi clang+llvm) [9] . |
20. února 2010 | Zdrojový kód HelenOS byl upraven pro úspěšnou kompilaci s Clangem a prošel všemi regresními testy pro jádro a uživatelské programy na platformě IA-32 [10] . |
20. května 2010 | Nejnovější verze Clang úspěšně staví Boost a projde většinou testů [11] . |
10. června 2010 | Clang a LLVM se stávají součástí FreeBSD (ačkoli GCC zůstává výchozím kompilátorem) [12] . |
25. října 2010 | Clang/LLVM úspěšně zkompiluje linuxové jádro (částečně) [13] . Do plné podpory zbývá opravit pár chyb v clang [14] a zbavit se některých konstrukcí specifických pro gnu v jádře. |
ledna 2011 | Byly provedeny předběžné práce na podpoře návrhu standardu C++0x , některé nové funkce jsou podporovány ve vývojové verzi Clang [15] [16] . |
10. února 2011 | Clang úspěšně zkompiluje virtuální stroj Java HotSpot [17] . |
18. srpna 2011 | Neoficiální verze Clang s podporou SafeCode , technologie pro sledování možných problémů s pamětí ve vyvíjené aplikaci [18] . |
22. října 2011 | Je poskytována možnost sestavit LibreOffice s kompilátorem Clang [19] . |
28. února 2012 | Clang 3.0 dokázal zkompilovat přes 91 % balíčků Debianu [20] . |
29. února 2012 | Clang se stal výchozím kompilátorem pro Minix 3 [21] . |
12. května 2012 | Oznámeno nahrazení GCC za Clang na základním systému FreeBSD [22] . |
14. července 2012 | Předvedeno spuštění openSUSE s linuxovým jádrem vytvořeným pomocí Clang [23] . |
19. dubna 2013 | Byla oznámena podpora Clang pro jazykový standard C++11 [24] . |
18. června 2013 | Vydání Clang 3.3 podporuje 100 % funkcí C++11. |
7. listopadu 2013 | Clang podporuje 100 % funkcí C++14 [25] . |
11. září 2014 | S Clang 3.5 lze přestavět 94,3 % archivu Debianu. Míra selhání sestavení se od ledna 2013 snížila o 1,2 % na vydání, a to především díky zvýšené kompatibilitě s příznaky GCC [26] . |
13. března 2017 | Vydání Clang 4.0.0 . |
26. července 2017 | Clang se stává výchozím kompilátorem v OpenBSD 6.2. [27] . |
7. září 2017 | Vydání Clang 5.0.0 . |
5. března 2018 | Clang se stává výchozím kompilátorem sestavení Google Chrome pro všechny podporované platformy. [28] |
8. března 2018 | Vydání Clang 6.0.0 . |
19. září 2018 | Vydání Clang 7.0.0 |
20. března 2019 | Vydání Clang 8.0.0 |
19. září 2019 | Vydání Clang 9.0.0 |
24. března 2020 | Vydání Clang 10.0.0 |
6. ledna 2021 | Vydání Clang 11.0.0 |
14. dubna 2021 | Vydání Clang 12.0.0 |
4. října 2021 | Vydání Clang 13.0.0 |
25. března 2022 | Vydání Clang 14.0.0 |