- Clang
-
Clang Тип Разработчик Написана на Операционная система Последняя версия 3.1 (22 мая 2012[1])
Состояние Активное
Лицензия лицензия Университета Иллинойса (англ.)
Сайт Clang является фронт-эндом для языков программирования C, C++, Objective-C и Objective-C++ (англ.), использующим для оптимизации и кодогенерации фреймворк LLVM.
Целью проекта является создание замены GNU Compiler Collection (GCC). Разработка ведется согласно концепции open source; в проект вовлечены несколько крупнейших в разработке ПО корпораций, включая Google и Apple. Исходный код доступен на условиях BSD-подобной лицензии.
Содержание
Обзор
Clang — это компилятор для C-подобных языков, созданный специально для работы на базе LLVM. Комбинация Clang и LLVM предоставляет набор инструментов, позволяющих полностью заменить GCC. Благодаря архитектуре, основанной на библиотеках, Clang (как и LLVM) легко встраивается в другие приложения.
Одной из главных задач Clang является поддержка инкрементной компиляции, позволяющей более тесно интегрировать компилятор и графический интерфейс среды разработки, в отличие от GCC, который был создан для работы в классическом цикле «компиляция-линковка-отладка». В отличие от GCC, ориентированного преимущественно на кодогенерацию, Clang стремится предоставить универсальный фреймворк для парсинга, индексации, статического анализа и компиляции языков семейства Си. В частности, Clang не производит упрощений исходного кода на этапе парсинга (как это делает GCC), гарантируя точное воспроизведение исходного текста в AST.
В отличие от 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 Объявлено о замене GCC на CLang в базовой системе FreeBSD[21] 14 июля 2012 Продемонстрирован запуск openSUSE с ядром Linux, собранным при помощи Clang[22] Примечания
- ↑ Chris Lattner. LLVM 3.1 Release! (англ.) (22 May 2012). Архивировано из первоисточника 30 июня 2012. Проверено 5 июня 2012.
- ↑ Divacky, Roman [ANNOUNCE] clang/llvm can compile booting FreeBSD kernel on i386/amd64. Архивировано из первоисточника 1 мая 2012.
- ↑ BuildingFreeBSDWithClang — FreeBSD Wiki
- ↑ Hornung, Alex llvm/clang once more. Архивировано из первоисточника 1 мая 2012.
- ↑ DragonFlyBSD: clang
- ↑ Clang team, clang: a C language family frontend for LLVM
- ↑ Clang can compile LLVM and Clang. Блог проекта LLVM. Архивировано из первоисточника 1 мая 2012.
- ↑ Clang Successfully Self-Hosts. Блог проекта LLVM. Архивировано из первоисточника 1 мая 2012.
- ↑ HelenOS mainline changeset head,294. Архивировано из первоисточника 1 мая 2012.
- ↑ Gregor, Doug Clang++ Builds Boost!. Блог проекта LLVM. Архивировано из первоисточника 1 мая 2012.
- ↑ Davis, Brad FreeBSD Status Reports April - June, 2010. Архивировано из первоисточника 1 мая 2012.
- ↑ [ANNOUNCE] Clang builds a working Linux Kernel (Boots to RL5 with SMP, networking and X, self hosts)
- ↑ Страница отслеживания ошибок llvm, препятствующих сборке ядра Linux
- ↑ Gregor, Douglas New C++0x feature support in Clang. Список рассылки (26 January 2011). Проверено 29 января 2011.
- ↑ C++ and C++'0x Support in Clang. LLVM. Архивировано из первоисточника 1 мая 2012.
- ↑ Simonis, Volker Compiling the HotSpot VM with Clang (10 February 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. » Архивировано из первоисточника 1 мая 2012. Проверено 13 февраля 2011.
- ↑ Criswell, John [LLVMdev] Clang + SAFECode Release Announcement (18 august 2011). Архивировано из первоисточника 1 мая 2012. Проверено 25 августа 2011.
- ↑ Building LibreOffice with Clang (22 october 2011). Архивировано из первоисточника 1 мая 2012. Проверено 23 октября 2011.
- ↑ Ledru, Sylvestre Rebuild of the Debian archive with clang. Архивировано из первоисточника 19 июня 2012.
- ↑ Minix 3.2.0, Releases Clang is the default compiler. Архивировано из первоисточника 19 июня 2012.
- ↑ Gerzo, Daniel FreeBSD Quarterly Status Report January-March, 2012. Архивировано из первоисточника 30 июня 2012.
- ↑ OpenNews: Продемонстрирован запуск openSUSE с ядром Linux, собранным при помощи Clang. Архивировано из первоисточника 8 августа 2012.
Ссылки
Категории:- Программное обеспечение по алфавиту
- Компиляторы
- Компиляторы C
- Компиляторы C++
- Компиляторы Obj-C
- Программное обеспечение для Mac OS X
- Программное обеспечение для Linux
- Свободные компиляторы и интерпретаторы
Wikimedia Foundation. 2010.