14-10-2023
Тип | |
---|---|
Разработчик | |
Написана на | |
Операционная система | |
Последняя версия |
3.1 (22 мая 2012 [1]) |
Состояние |
Активное |
Лицензия | |
Сайт |
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 | Объявлено о замене GCC на CLang в базовой системе FreeBSD [21] |
Clang.