WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте
Clang
Тип Компилятор
Разработчик Apple и другие
Написана на C++
Операционная система Кроссплатформенное программное обеспечение
Аппаратная платформа кроссплатформенность
Последняя версия 7.0.0 (19 сентября 2018 [1])
Состояние Активное
Лицензия лицензия Университета Иллинойса (англ.)
Сайт clang.llvm.org

Clang (произносится «клэнг»[2]) является фронтендом для языков программирования C, C++, Objective-C, Objective-C++ (англ.) и OpenCL C, использующимся совместно с фреймворком LLVM. Clang транслирует исходные коды в байт-код LLVM, затем фреймворк производит оптимизации и кодогенерацию.

Целью проекта является создание замены GNU Compiler Collection (GCC). Разработка ведётся согласно концепции open source в рамках проекта LLVM.

В проекте участвуют работники нескольких корпораций, в том числе Google и Apple. Исходный код доступен на условиях BSD-подобной лицензии.

Обзор

Clang — это транслятор для C-подобных языков, созданный специально для работы на базе LLVM. Комбинация Clang и LLVM представляет собой полноценный компилятор и предоставляет набор инструментов, позволяющих полностью заменить GCC. Благодаря архитектуре, основанной на библиотеках, Clang (как и LLVM) легко встраивается в другие приложения.

Одной из главных задач Clang является поддержка инкрементной компиляции, позволяющей более тесно интегрировать компилятор и графический интерфейс среды разработки, в отличие от GCC, который был создан для работы в классическом цикле «компиляция-линковка-отладка». В отличие от GCC, ориентированного преимущественно на кодогенерацию, Clang стремится предоставить универсальный фреймворк для парсинга, индексации, статического анализа и компиляции языков семейства Си. В частности, Clang не производит упрощений исходного кода на этапе парсинга (как это делает GCC), гарантируя точное воспроизведение исходного текста в абстрактное синтаксическое дерево.

В отличие от GCC, Clang изначально спроектирован для максимального сохранения информации в ходе процесса компиляции, в том числе сохранения «внешнего вида» исходного кода. Эта особенность позволяет Clang создавать развернутые контекстно-ориентированные сообщения об ошибках, понятные как для программистов, так и для сред разработки. Модульный дизайн компилятора позволяет использовать его в составе среды разработки для индексирования кода, подсветки синтаксиса и переработки кода.

Clang поддерживает большинство распространенных опций GCC.

История развития

В таблице представлены только наиболее значительные события.

Дата Событие
25 февраля 2009Clang/LLVM позволяют скомпилировать ядро FreeBSD[3][4]. Сейчас весь исходный код FreeBSD — как ядро, так и пользовательские программы — может быть скомпилирован с помощью Clang.
16 марта 2009Clang/LLVM компилирует работоспособное ядро DragonFly BSD[5][6].
23 октября 2009Clang 1.0 впервые выпущен в составе LLVM 2.6.
Декабрь 2009Кодогенерация для языков C и Objective-C достигла промышленного качества (поддержка C++ и Objective-C++ ещё не завершена). Компилятор C++ может осуществлять лексический разбор libstdc++ из GCC 4.2 и генерировать работоспособный код для нетривиальных программ[7], а также компилирует себя[8].
2 февраля 2010Clang осуществил self-hosting (скомпилировал работоспособную версию clang+llvm)[9].
20 февраля 2010Исходный код HelenOS был изменён для успешной компиляции с помощью Clang и прошёл все регрессионные тесты для ядра и пользовательских программ на платформе IA-32[10].
20 мая 2010Последняя версия Clang успешно собирает Boost и проходит большинство тестов[11].
10 июня 2010Clang и LLVM становятся частью FreeBSD (хотя компилятором по умолчанию остаётся GCC)[12].
25 октября 2010Clang/LLVM успешно компилирует ядро Linux (частично)[13]. До полной поддержки остаётся исправить несколько ошибок в clang[14] и избавиться от некоторых gnu-специфичных конструкций в ядре.
Январь 2011Проведена предварительная работа по поддержке черновика стандарта C++0x, в разрабатываемой версии Clang поддерживаются некоторые новые возможности[15][16].
10 февраля 2011Clang успешно компилирует виртуальную машину Java HotSpot[17].
18 августа 2011Неофициальная версия Clang с поддержкой SafeCode, технологией отслеживания возможных проблем при работе с памятью в разрабатываемом приложении[18].
22 октября 2011Обеспечена возможность сборки LibreOffice компилятором Clang[19].
28 февраля 2012Clang 3.0 смог скомпилировать более 91 % пакетов Debian[20].
29 февраля 2012Clang стал основным компилятором для Minix 3[21].
12 мая 2012Объявлено о замене GCC на Clang в базовой системе FreeBSD[22].
14 июля 2012Продемонстрирован запуск openSUSE с ядром Linux, собранным при помощи Clang[23].
19 апреля 2013Объявлено о поддержке Clang’ом стандарта языка C++11[24].
18 июня 2013Релиз Clang 3.3 поддерживает 100 % возможностей C++11.
07 ноября 2013Clang поддерживает 100 % возможностей C++14[25].
11 сентября 2014 С помощью Clang 3.5 можно пересобрать 94,3 % архива Debian. Доля неудач при сборках снизилась с января 2013 г. на 1,2 % на релиз, в основном вследствие повышения совместимости с флагами GCC[26].
13 марта 2017 Clang 4.0.0 Релиз.
26 июля 2017Clang становится компилятором по умолчанию в OpenBSD 6.2.[27].
7 сентября 2017 Clang 5.0.0 Релиз.
5 марта 2018Clang становится компилятором по умолчанию сборок Google Chrome для всех поддерживаемых платформ.[28]
8 марта 2018 Clang 6.0.0 Релиз.
19 сентября 2018 Clang 7.0.0 Релиз

Примечания

  1. ↑ Download LLVM releases
  2. ↑ Обсуждение произношения названия на рассылке llvmdev Архивировано 8 февраля 2012 года.
  3. ↑ Divacky, Roman [ANNOUNCE] clang/llvm can compile booting FreeBSD kernel on i386/amd64. Архивировано 30 апреля 2012 года.
  4. ↑ BuildingFreeBSDWithClang — FreeBSD Wiki
  5. ↑ Hornung, Alex llvm/clang once more. Архивировано 30 апреля 2012 года.
  6. ↑ DragonFlyBSD: clang
  7. ↑ Clang team, clang: a C language family frontend for LLVM
  8. ↑ Clang can compile LLVM and Clang. Блог проекта LLVM. Архивировано 30 апреля 2012 года.
  9. ↑ Clang Successfully Self-Hosts. Блог проекта LLVM. Архивировано 30 апреля 2012 года.
  10. ↑ HelenOS mainline changeset head,294. Архивировано 30 апреля 2012 года.
  11. ↑ Gregor, Doug Clang++ Builds Boost!. Блог проекта LLVM. Архивировано 30 апреля 2012 года.
  12. ↑ Davis, Brad FreeBSD Status Reports April - June, 2010. Архивировано 30 апреля 2012 года.
  13. ↑ [ANNOUNCE] Clang builds a working Linux Kernel (Boots to RL5 with SMP, networking and X, self hosts) Архивировано 7 сентября 2015 года.
  14. ↑ Страница отслеживания ошибок llvm, препятствующих сборке ядра Linux
  15. ↑ Gregor, Douglas New C++0x feature support in Clang. Список рассылки (26 January 2011). Проверено 29 января 2011.
  16. ↑ C++ and C++'0x Support in Clang. LLVM. Архивировано 30 апреля 2012 года.
  17. ↑ 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. ». Проверено 13 февраля 2011. Архивировано 30 апреля 2012 года.
  18. ↑ Criswell, John [LLVMdev] Clang + SAFECode Release Announcement (18 august 2011). Проверено 25 августа 2011. Архивировано 30 апреля 2012 года.
  19. ↑ Building LibreOffice with Clang (22 october 2011). Проверено 23 октября 2011. Архивировано 30 апреля 2012 года.
  20. ↑ Ledru, Sylvestre Rebuild of the Debian archive with clang. Архивировано 18 июня 2012 года.
  21. ↑ Minix 3.2.0, Releases Clang is the default compiler. Архивировано 18 июня 2012 года.
  22. ↑ Gerzo, Daniel FreeBSD Quarterly Status Report January-March, 2012. Архивировано 30 июня 2012 года.
  23. ↑ OpenNews: Продемонстрирован запуск openSUSE с ядром Linux, собранным при помощи Clang. Архивировано 8 августа 2012 года.
  24. ↑ Du Toit, Stefanus Clang is C++11 feature complete as of *just now*!.
  25. ↑ [llvm-project] Revision 194194
  26. ↑ Rebuild of Debian using Clang 3.5.0. sylvestre.ledru.info. Проверено 6 мая 2016.
  27. ↑ Nagy, Robert switch the default compiler on amd64 and i386 to clang. Список рассылки (26 July 2017). Проверено 30 сентября 2017.
  28. ↑ Clang is now used to build Chrome for Windows. Проверено 6 марта 2018.

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2026
WikiSort.ru - проект по пересортировке и дополнению контента Википедии