Zvonit

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 7. dubna 2019; kontroly vyžadují 23 úprav .
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 ) ( 2022-03-25 )
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 .

Přehled

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.

Historie vývoje

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

Poznámky

  1. Poznámky k vydání Clang 14.0.0 . Archivováno z originálu 1. dubna 2022. Staženo 14. dubna 2022.
  2. Diskuze o výslovnosti na mailing listu llvmdev Archivováno 2012-02-08 .
  3. Divacky, Roman [ANNOUNCE] clang/llvm umí zkompilovat bootovací jádro FreeBSD na i386/amd64 (downlink) . Archivováno z originálu 30. dubna 2012. 
  4. BuildingFreeBSDWithClang – FreeBSD Wiki . Získáno 17. března 2011. Archivováno z originálu 1. října 2012.
  5. Hornung, Alex llvm/clang ještě jednou (downlink) . Archivováno z originálu 30. dubna 2012. 
  6. DragonFlyBSD: zvonění . Získáno 17. března 2011. Archivováno z originálu 5. října 2012.
  7. Clang tým, clang: frontend rodiny jazyka C pro LLVM Archivováno 13. března 2011 na Wayback Machine
  8. Clang umí zkompilovat LLVM a Clang (downlink) . Blog projektu LLVM. Archivováno z originálu 30. dubna 2012. 
  9. Clang úspěšně se samo-hostitelé (downlink) . Blog projektu LLVM. Archivováno z originálu 30. dubna 2012. 
  10. Hlava změn hlavní řady HelenOS, 294 (sestupná linka) . Archivováno z originálu 30. dubna 2012. 
  11. Gregor, Doug Clang++ Builds Boost! (nedostupný odkaz) . Blog projektu LLVM. Archivováno z originálu 30. dubna 2012. 
  12. Davis, Brad Zprávy o stavu FreeBSD duben - červen 2010 (odkaz není dostupný) . Archivováno z originálu 30. dubna 2012. 
  13. [OZNÁMENÍ] Clang vytváří funkční linuxové jádro (bootuje do RL5 s SMP, sítě a X, vlastní hostitelé) Archivováno 7. září 2015.
  14. Stránka se sledováním chyb llvm bránících sestavení jádra Linuxu . Získáno 17. října 2011. Archivováno z originálu 9. června 2014.
  15. Gregor, Douglas Nová podpora funkcí C++0x v Clang . Seznam adres (26. ledna 2011). Staženo: 29. ledna 2011.
  16. Podpora C++ a C++'0x v Clang (downlink) . LLVM. Archivováno z originálu 30. dubna 2012. 
  17. Simonis, Volker Kompilace HotSpot VM s Clangem (downlink) (10. února 2011). - Zatímco celková kompatibilita GCC je vynikající a doba kompilace je působivá, výkon generovaného kódu stále chybí za poslední verzí GCC. ". Získáno 13. února 2011. Archivováno z originálu 30. dubna 2012. 
  18. Criswell, John [LLVMdev] Clang + oznámení o vydání SAFECode (odkaz není k dispozici) (18. srpna 2011). Získáno 25. srpna 2011. Archivováno z originálu dne 30. dubna 2012. 
  19. Budování LibreOffice pomocí Clang (downlink) (22. října 2011). Získáno 23. října 2011. Archivováno z originálu dne 30. dubna 2012. 
  20. Ledru, Sylvestre Obnova archivu Debianu s cinknutím (stahování) . Archivováno z originálu 18. června 2012. 
  21. Minix 3.2.0, Releases Clang je výchozí kompilátor (downlink) . Archivováno z originálu 18. června 2012. 
  22. Gerzo, Daniel Čtvrtletní zpráva o stavu FreeBSD leden-březen 2012 (odkaz není dostupný) . Archivováno z originálu 30. června 2012. 
  23. OpenNews: Předvedeno spuštění openSUSE s linuxovým jádrem vytvořeným pomocí Clang (downlink) . Získáno 16. července 2012. Archivováno z originálu 18. července 2012. 
  24. Du Toit, Stefanus Clang je funkce C++ 11 dokončena od *právě*! . Získáno 22. dubna 2013. Archivováno z originálu dne 24. září 2019.
  25. [https://web.archive.org/web/20170130114326/http://llvm.org/viewvc/llvm-project?view=revision&revision=194194 Archivováno 30. ledna 2017 na Wayback Machine [llvm-project] Revize 194194]
  26. Přestavba Debianu pomocí Clang 3.5.0 . sylvestre.ledru.info. Datum přístupu: 6. května 2016. Archivováno z originálu 19. dubna 2016.
  27. Nagy, Robert přepněte výchozí kompilátor na amd64 a i386 na clang . Seznam adres (26. července 2017). Staženo: 30. září 2017.
  28. Clang se nyní používá k sestavení Chrome pro Windows . Získáno 6. března 2018. Archivováno z originálu dne 5. března 2018.

Odkazy