Clang
| Розробник(и) | Apple |
|---|---|
| Стабільний випуск | 3.0 (1 грудня 2011 [1]) |
| Написано на | C++ |
| Операційна система | Кросплатформенне програмове забезпечення |
| Стан розробки | Активне |
| Тип | Компілятор |
| Ліцензія | BSD |
| Сайт | clang.llvm.org |
Clang являє собою фронт-енд для мов програмування C, C++, Objective-C и en:Objective-C++, що використовує задля оптимізації та кодогенерування фреймворк LLVM.
Метою проекту є заміна фронт-енду цих мов з 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.[2][3] Зараз увесь вихідний код FreeBSD — як ядро, так і програми користувача — можуть бути зкомпільовані за допомогою Clang. |
| 16 березня 2009 | Clang/LLVM компілює працездатне ядро DragonFly BSD.[4][5] |
| 23 жовтня 2009 | Clang 1.0 вперше випущений у складі LLVM 2.6. |
| Грудень 2009 | Кодогенерація для мов C та Objective-C досягла промислової якості (підтримка C++ та Objective-C++ ще не завершена). Компілятор C++ може здійснювати лексичний розбір libstdc++ з GCC 4.2 та генерувати працездатний код для нетривіальних програм,[6] та також компілює себе.[7] |
| 2 лютого 2010 | Clang здійснив self-hosting (зкомпілював працездатну версію clang+llvm).[8] |
| 20 лютого 2010 | Вихідний код HelenOS був змінений для успішної компіляції за допомогою Clang та пройшов усі регресивні тести для ядра та користувацьких програм на платформі IA-32.[9] |
| 20 травня 2010 | Остання версія Clang успішно складає Boost та проходить більшість тестів.[10] |
| 10 червня 2010 | Clang та LLVM стають частиною FreeBSD (хоча компілятором за замовчуванням залишається GCC).[11] |
| 25 жовтня 2010 | Clang/LLVM успішно компілює ядро Linux (частково).[12] До повної підтримки лишається виправити кілька помилок у clang[13] та позбутися деяких gnu-специфічних конструкцій у ядрі. |
| Січень 2011 | Проведена попередня робота з підтримки чернетки стандарту C++0x, у розробляємої версії Clang підтримуються деякі нові можливості.[14][15] |
| 10 лютого 2011 | Clang успішно компілює віртуальну машину Java HotSpot.[16] |
| 18 серпня 2011 | Неоффційна версія Clang з підтримкою SafeCode, технологією відстежування можливих проблем при роботі з пам'ятю у розробляємому застосуванні .[17] |
| 22 жовтня 2011 | Забезпечена можливість збирання LibreOffice компілятором Clang.[18] |
| 28 лютого 2012 | Clang 3.0 зміг зкомпілювати більше 91% пакетів Debian[19] |
| 29 лютого 2012 | Clang став основним компілятором для Minix 3 [20] |
| 12 травня 2012 | Clang/LLVM приходить на зміну використовуваному раніше GCC в FreeBSD [21] |
Примітки [ред.]
- ↑ Chris Lattner. (2011-12-01). «LLVM 3.0 Release!» (англійською). Процитовано 2012-03-07.
- ↑ Divacky, Roman. «[ANNOUNCE] clang/llvm can compile booting FreeBSD kernel on i386/amd64».
- ↑ BuildingFreeBSDWithClang - FreeBSD Wiki
- ↑ Hornung, Alex. «llvm/clang once more».
- ↑ DragonFlyBSD: clang
- ↑ Clang team, clang: a C language family frontend for LLVM
- ↑ «Clang can compile LLVM and Clang». Блог проекту LLVM.
- ↑ «Clang Successfully Self-Hosts». Блог проекту LLVM.
- ↑ «HelenOS mainline changeset head,294».
- ↑ Gregor, Doug. «Clang++ Builds Boost!». Блог проекту LLVM.
- ↑ Davis, Brad. «FreeBSD Status Reports April - June, 2010».
- ↑ [ANNOUNCE] Clang builds a working Linux Kernel (Boots to RL5 with SMP, networking and X, self hosts)
- ↑ Сторінка відстежування помилок llvm, які не дозволяють зібрати ядро Linux
- ↑ Gregor, Douglas (26 January 2011). «New C++0x feature support in Clang». mailing list. Процитовано 29 січня 2011.
- ↑ «C++ and C++'0x Support in Clang». LLVM.
- ↑ Simonis, Volker (10 February 2011). «Compiling the HotSpot VM with Clang». Процитовано 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 august 2011). «[LLVMdev] Clang + SAFECode Release Announcement». Процитовано 25 серпня 2011.
- ↑ «Building LibreOffice with Clang». 22 october 2011. Процитовано 23 жовтня 2011.
- ↑ Ledru, Sylvestre. «Rebuild of the Debian archive with clang».
- ↑ Minix 3.2.0, Releases. «Clang is the default compiler».
- ↑ Gerzo, Daniel (12 May 2012). «FreeBSD Quarterly Status Report January-March, 2012». mailing list. Процитовано 14 May 2012.
