Clang являє собою фронт-енд для мов програмування C, , Objective-C і , що використовує задля оптимізації та кодогенерування фреймворк LLVM.
Тип | компілятор |
---|---|
Розробники | Apple Inc., Google Inc. та інші |
Стабільний випуск | 14.0.1 (13 квітня, 2022 ) |
Платформа | кросплатформова програма, Linux, FreeBSD, NetBSD, OpenBSD, Minix 3, DragonFly BSD, Berkeley Software Distribution, x86, x86_64, RISC-V, ARM, PowerPC і WebAssembly |
Операційна система | крос-платформовий |
Мова програмування | |
Стан розробки | активний |
Ліцензія | BSD |
Репозиторій | github.com/llvm/llvm-project |
Вебсайт | clang.llvm.org |
|
Метою проекту є заміна фронт-енду цих мов з GNU Compiler Collection (GCC). Розробка спонсорується корпорацією Apple, початковий код розповсюджується у рамках BSD-подібної ліцензії.
Огляд
Clang — це новий компілятор для C-подібних мов, створений спеціально для роботи на базі LLVM. Комбінація Clang та LLVM надає набір інструментів, які дозволяють повністю замінити GCC. Завдяки архітектурі, основаній на бібліотеках, Clang (як і LLVM) легко влаштовується у інші застосування.
Однією з головних задач Clang є підтримка інкрементної компіляції, яка дозволяє більш тісно інтегрувати компілятор та графічний інтерфейс середовища розробки, на відміну від GCC, який був створений для роботи в класичному циклі «компіляція-лінкування-налагодження». У ході компіляції GCC здійснює спрощуюче перетворення вихідного коду, та якщо помилка компіляції виявляється на цій стадії або після неї, визначити джерело помилки у первісному коді стає важко. Окрім того, авторам середовищ розробки, заснованих на GCC, доводиться використовувати незалежні інструменти індексування коду для підтримки підсвітки коду та автодоповнення.
На відміну від GCC, Clang спочатку спроектований для максимального збереження інформації у процесі компіляції, у тому числі збереження «зовнішнього вигляду» вихідного коду. Ця особливість дозволяє Clang створювати розгорнуті контекстно-орієнтовані повідомлення про помилки, зрозумілі як для програмістів, так і для середовищ розробки. Модульний дизайн компілятора дозволяє застосовувати його у складі середовищ розробки для індексувания коду, підсвітки синтаксису і рефакторингу.
Clang підтримує більшість розповсюджених опцій GCC.
Історія розвитку
У таблиці надані тільки найбільш значущі події.
Дата | Подія |
---|---|
25 лютого 2009 | Clang/LLVM дозволяє скомпілювати ядро FreeBSD. Зараз увесь вихідний код FreeBSD — як ядро, так і програми користувача — можуть бути скомпільовані за допомогою Clang. |
16 березня 2009 | Clang/LLVM компілює працездатне ядро DragonFly BSD. |
23 жовтня 2009 | Clang 1.0 вперше випущений у складі LLVM 2.6. |
Грудень 2009 | Кодогенерація для мов C та Objective-C досягла промислової якості (підтримка C++ та Objective-C++ ще не завершена). Компілятор C++ може здійснювати лексичний розбір з GCC 4.2 та генерувати працездатний код для нетривіальних програм, та також компілює себе. |
2 лютого 2010 | Clang здійснив [en] (скомпілював працездатну версію clang+llvm). |
20 лютого 2010 | Вихідний код був змінений для успішної компіляції за допомогою Clang та пройшов усі регресивні тести для ядра та користувацьких програм на платформі IA-32. |
20 травня 2010 | Остання версія Clang успішно складає та проходить більшість тестів. |
10 червня 2010 | Clang та LLVM стають частиною FreeBSD (хоча компілятором за замовчуванням залишається GCC). |
25 жовтня 2010 | Clang/LLVM успішно компілює ядро Linux (частково). До повної підтримки лишається виправити кілька помилок у clang та позбутися деяких gnu-специфічних конструкцій у ядрі. |
Січень 2011 | Проведена попередня робота з підтримки чернетки стандарту , у розроблюваній версії Clang підтримуються деякі нові можливості. |
10 лютого 2011 | Clang успішно компілює віртуальну машину Java HotSpot. |
18 серпня 2011 | Неофіційна версія Clang з підтримкою , технологією відстежування можливих проблем при роботі з пам'яттю у розроблюваному застосуванні. |
22 жовтня 2011 | Забезпечена можливість збирання LibreOffice компілятором Clang. |
28 лютого 2012 | Clang 3.0 зміг скомпілювати понад 91 % пакетів Debian |
29 лютого 2012 | Clang став основним компілятором для Minix 3 |
12 травня 2012 | Clang/LLVM приходить на зміну використовуваному раніше GCC в FreeBSD |
14 липня 2012 | Продемонстровано запуск openSUSE із ядром Linux, зібраним із допомогою Clang. |
19 квітня 2013 | Оголошено про підтримку Clang'ом C++11. |
18 червня 2013 | Реліз Clang 3.3 підтримує 100 % можливостей C++11. |
7 листопада 2013 | Clang підтримує 100 % можливостей C++14. |
Примітки
- "clang" C Language Family Frontend for LLVM
- Divacky, Roman. [ANNOUNCE] clang/llvm can compile booting FreeBSD kernel on i386/amd64. Архів оригіналу за 30 квітня 2012. Процитовано 7 березня 2012.
- . Архів оригіналу за 1 жовтня 2012. Процитовано 7 березня 2012.
- Hornung, Alex. llvm/clang once more. Архів оригіналу за 30 квітня 2012. Процитовано 7 березня 2012.
- . Архів оригіналу за 5 жовтня 2012. Процитовано 7 березня 2012.
- Clang team, clang: a C language family frontend for LLVM [ 13 березня 2011 у Wayback Machine.]
- Clang can compile LLVM and Clang. Блог проекту LLVM. Архів оригіналу за 30 квітня 2012. Процитовано 7 березня 2012.
- Clang Successfully Self-Hosts. Блог проекту LLVM. Архів оригіналу за 30 квітня 2012. Процитовано 7 березня 2012.
- HelenOS mainline changeset head,294. Архів оригіналу за 30 квітня 2012. Процитовано 7 березня 2012.
- Gregor, Doug. Clang++ Builds Boost!. Блог проекту LLVM. Архів оригіналу за 30 квітня 2012. Процитовано 7 березня 2012.
- Davis, Brad. FreeBSD Status Reports April - June, 2010. Архів оригіналу за 30-04-2012. Процитовано 07-03-2012.
- . Архів оригіналу за 7 вересень 2015. Процитовано 7 березень 2012.
- . Архів оригіналу за 9 червня 2014. Процитовано 7 березня 2012.
- Gregor, Douglas (26 січня 2011). (Список розсилки). Архів оригіналу за 30 січень 2011. Процитовано 29 січня 2011.
- C++ and C++'0x Support in Clang. LLVM. Архів оригіналу за 30 квітня 2012. Процитовано 7 березня 2012.
- Simonis, Volker (10 лютого 2011). Compiling the HotSpot VM with Clang. Архів оригіналу за 30 квітня 2012. Процитовано 13 лютого 2011.
While the overall GCC compatibility is excellent and the compile times are impressive, the performance of the generated code is still lacking behind a recent GCC version.
- Criswell, John (18 серпня 2011). [LLVMdev] Clang + SAFECode Release Announcement. Архів оригіналу за 30 квітня 2012. Процитовано 25 серпня 2011.
- Building LibreOffice with Clang. 22 жовтня 2011. Архів оригіналу за 30 квітня 2012. Процитовано 23 жовтня 2011.
- Ledru, Sylvestre. Rebuild of the Debian archive with clang. Архів оригіналу за 18 червня 2012. Процитовано 30 травня 2012.
- Minix 3.2.0, Releases. Clang is the default compiler. Архів оригіналу за 18 червня 2012. Процитовано 30 травня 2012.
- Gerzo, Daniel (12 May 2012). FreeBSD Quarterly Status Report January-March, 2012 (Список розсилки). Архів оригіналу за 30 червня 2012. Процитовано 14 May 2012.
- . Архів оригіналу за 11 листопада 2014.
- Du Toit, Stefanus. . Архів оригіналу за 24 вересня 2019. Процитовано 7 вересня 2016.
Посилання
- Офіційна сторінка проекту [ 13 березня 2011 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Clang yavlyaye soboyu front end dlya mov programuvannya C C Objective C i Objective C sho vikoristovuye zadlya optimizaciyi ta kodogeneruvannya frejmvork LLVM ClangTip kompilyatorRozrobniki Apple Inc Google Inc ta inshiStabilnij vipusk 14 0 1 13 kvitnya 2022 2 roki tomu 2022 04 13 Platforma krosplatformova programa Linux FreeBSD NetBSD OpenBSD Minix 3 DragonFly BSD Berkeley Software Distribution x86 x86 64 RISC V ARM PowerPC i WebAssemblyOperacijna sistema kros platformovijMova programuvannya C Stan rozrobki aktivnijLicenziya BSDRepozitorij github com llvm llvm projectVebsajt clang llvm org Mediafajli u Vikishovishi Metoyu proektu ye zamina front endu cih mov z GNU Compiler Collection GCC Rozrobka sponsoruyetsya korporaciyeyu Apple pochatkovij kod rozpovsyudzhuyetsya u ramkah BSD podibnoyi licenziyi OglyadClang ce novij kompilyator dlya C podibnih mov stvorenij specialno dlya roboti na bazi LLVM Kombinaciya Clang ta LLVM nadaye nabir instrumentiv yaki dozvolyayut povnistyu zaminiti GCC Zavdyaki arhitekturi osnovanij na bibliotekah Clang yak i LLVM legko vlashtovuyetsya u inshi zastosuvannya Odniyeyu z golovnih zadach Clang ye pidtrimka inkrementnoyi kompilyaciyi yaka dozvolyaye bilsh tisno integruvati kompilyator ta grafichnij interfejs seredovisha rozrobki na vidminu vid GCC yakij buv stvorenij dlya roboti v klasichnomu cikli kompilyaciya linkuvannya nalagodzhennya U hodi kompilyaciyi GCC zdijsnyuye sproshuyuche peretvorennya vihidnogo kodu ta yaksho pomilka kompilyaciyi viyavlyayetsya na cij stadiyi abo pislya neyi viznachiti dzherelo pomilki u pervisnomu kodi staye vazhko Okrim togo avtoram seredovish rozrobki zasnovanih na GCC dovoditsya vikoristovuvati nezalezhni instrumenti indeksuvannya kodu dlya pidtrimki pidsvitki kodu ta avtodopovnennya Na vidminu vid GCC Clang spochatku sproektovanij dlya maksimalnogo zberezhennya informaciyi u procesi kompilyaciyi u tomu chisli zberezhennya zovnishnogo viglyadu vihidnogo kodu Cya osoblivist dozvolyaye Clang stvoryuvati rozgornuti kontekstno oriyentovani povidomlennya pro pomilki zrozumili yak dlya programistiv tak i dlya seredovish rozrobki Modulnij dizajn kompilyatora dozvolyaye zastosovuvati jogo u skladi seredovish rozrobki dlya indeksuvaniya kodu pidsvitki sintaksisu i refaktoringu Clang pidtrimuye bilshist rozpovsyudzhenih opcij GCC Istoriya rozvitkuU tablici nadani tilki najbilsh znachushi podiyi Data Podiya 25 lyutogo 2009 Clang LLVM dozvolyaye skompilyuvati yadro FreeBSD Zaraz uves vihidnij kod FreeBSD yak yadro tak i programi koristuvacha mozhut buti skompilovani za dopomogoyu Clang 16 bereznya 2009 Clang LLVM kompilyuye pracezdatne yadro DragonFly BSD 23 zhovtnya 2009 Clang 1 0 vpershe vipushenij u skladi LLVM 2 6 Gruden 2009 Kodogeneraciya dlya mov C ta Objective C dosyagla promislovoyi yakosti pidtrimka C ta Objective C she ne zavershena Kompilyator C mozhe zdijsnyuvati leksichnij rozbir z GCC 4 2 ta generuvati pracezdatnij kod dlya netrivialnih program ta takozh kompilyuye sebe 2 lyutogo 2010 Clang zdijsniv en skompilyuvav pracezdatnu versiyu clang llvm 20 lyutogo 2010 Vihidnij kod buv zminenij dlya uspishnoyi kompilyaciyi za dopomogoyu Clang ta projshov usi regresivni testi dlya yadra ta koristuvackih program na platformi IA 32 20 travnya 2010 Ostannya versiya Clang uspishno skladaye ta prohodit bilshist testiv 10 chervnya 2010 Clang ta LLVM stayut chastinoyu FreeBSD hocha kompilyatorom za zamovchuvannyam zalishayetsya GCC 25 zhovtnya 2010 Clang LLVM uspishno kompilyuye yadro Linux chastkovo Do povnoyi pidtrimki lishayetsya vipraviti kilka pomilok u clang ta pozbutisya deyakih gnu specifichnih konstrukcij u yadri Sichen 2011 Provedena poperednya robota z pidtrimki chernetki standartu C 0x u rozroblyuvanij versiyi Clang pidtrimuyutsya deyaki novi mozhlivosti 10 lyutogo 2011 Clang uspishno kompilyuye virtualnu mashinu Java HotSpot 18 serpnya 2011 Neoficijna versiya Clang z pidtrimkoyu tehnologiyeyu vidstezhuvannya mozhlivih problem pri roboti z pam yattyu u rozroblyuvanomu zastosuvanni 22 zhovtnya 2011 Zabezpechena mozhlivist zbirannya LibreOffice kompilyatorom Clang 28 lyutogo 2012 Clang 3 0 zmig skompilyuvati ponad 91 paketiv Debian 29 lyutogo 2012 Clang stav osnovnim kompilyatorom dlya Minix 3 12 travnya 2012 Clang LLVM prihodit na zminu vikoristovuvanomu ranishe GCC v FreeBSD 14 lipnya 2012 Prodemonstrovano zapusk openSUSE iz yadrom Linux zibranim iz dopomogoyu Clang 19 kvitnya 2013 Ogolosheno pro pidtrimku Clang om C 11 18 chervnya 2013 Reliz Clang 3 3 pidtrimuye 100 mozhlivostej C 11 7 listopada 2013 Clang pidtrimuye 100 mozhlivostej C 14 Primitki clang C Language Family Frontend for LLVM Divacky Roman ANNOUNCE clang llvm can compile booting FreeBSD kernel on i386 amd64 Arhiv originalu za 30 kvitnya 2012 Procitovano 7 bereznya 2012 Arhiv originalu za 1 zhovtnya 2012 Procitovano 7 bereznya 2012 Hornung Alex llvm clang once more Arhiv originalu za 30 kvitnya 2012 Procitovano 7 bereznya 2012 Arhiv originalu za 5 zhovtnya 2012 Procitovano 7 bereznya 2012 Clang team clang a C language family frontend for LLVM 13 bereznya 2011 u Wayback Machine Clang can compile LLVM and Clang Blog proektu LLVM Arhiv originalu za 30 kvitnya 2012 Procitovano 7 bereznya 2012 Clang Successfully Self Hosts Blog proektu LLVM Arhiv originalu za 30 kvitnya 2012 Procitovano 7 bereznya 2012 HelenOS mainline changeset head 294 Arhiv originalu za 30 kvitnya 2012 Procitovano 7 bereznya 2012 Gregor Doug Clang Builds Boost Blog proektu LLVM Arhiv originalu za 30 kvitnya 2012 Procitovano 7 bereznya 2012 Davis Brad FreeBSD Status Reports April June 2010 Arhiv originalu za 30 04 2012 Procitovano 07 03 2012 Arhiv originalu za 7 veresen 2015 Procitovano 7 berezen 2012 Arhiv originalu za 9 chervnya 2014 Procitovano 7 bereznya 2012 Gregor Douglas 26 sichnya 2011 Spisok rozsilki Arhiv originalu za 30 sichen 2011 Procitovano 29 sichnya 2011 C and C 0x Support in Clang LLVM Arhiv originalu za 30 kvitnya 2012 Procitovano 7 bereznya 2012 Simonis Volker 10 lyutogo 2011 Compiling the HotSpot VM with Clang Arhiv originalu za 30 kvitnya 2012 Procitovano 13 lyutogo 2011 While the overall GCC compatibility is excellent and the compile times are impressive the performance of the generated code is still lacking behind a recent GCC version Criswell John 18 serpnya 2011 LLVMdev Clang SAFECode Release Announcement Arhiv originalu za 30 kvitnya 2012 Procitovano 25 serpnya 2011 Building LibreOffice with Clang 22 zhovtnya 2011 Arhiv originalu za 30 kvitnya 2012 Procitovano 23 zhovtnya 2011 Ledru Sylvestre Rebuild of the Debian archive with clang Arhiv originalu za 18 chervnya 2012 Procitovano 30 travnya 2012 Minix 3 2 0 Releases Clang is the default compiler Arhiv originalu za 18 chervnya 2012 Procitovano 30 travnya 2012 Gerzo Daniel 12 May 2012 FreeBSD Quarterly Status Report January March 2012 Spisok rozsilki Arhiv originalu za 30 chervnya 2012 Procitovano 14 May 2012 Arhiv originalu za 11 listopada 2014 Du Toit Stefanus Arhiv originalu za 24 veresnya 2019 Procitovano 7 veresnya 2016 PosilannyaOficijna storinka proektu 13 bereznya 2011 u Wayback Machine