Lt304888.ru

Туристические услуги

Clang

14-10-2023

Clang
Тип

Компилятор

Разработчик

Apple

Написана на

C++

Операционная система

Кроссплатформенное программное обеспечение

Последняя версия

3.1 (22 мая 2012 [1])

Состояние

Активное

Лицензия

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 Объявлено о замене GCC на CLang в базовой системе FreeBSD [21]

Примечания

  1. LLVM 3.1 Release!  (англ.) (22 May 2012). Проверено 5 июня 2012.
  2. [ANNOUNCE] clang/llvm can compile booting FreeBSD kernel on i386/amd64.
  3. BuildingFreeBSDWithClang - FreeBSD Wiki
  4. llvm/clang once more.
  5. DragonFlyBSD: clang
  6. clang: a C language family frontend for LLVM
  7. Clang can compile LLVM and Clang. Блог проекта LLVM.
  8. Clang Successfully Self-Hosts. Блог проекта LLVM.
  9. HelenOS mainline changeset head,294.
  10. Clang++ Builds Boost!. Блог проекта LLVM.
  11. FreeBSD Status Reports April - June, 2010.
  12. [ANNOUNCE] Clang builds a working Linux Kernel (Boots to RL5 with SMP, networking and X, self hosts)
  13. Страница отслеживания ошибок llvm, препятствующих сборке ядра Linux
  14. New C++0x feature support in Clang. Список рассылки (26 January 2011). Проверено 29 января 2011.
  15. C++ and C++'0x Support in Clang. LLVM.
  16. 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.
  17. [LLVMdev] Clang + SAFECode Release Announcement (18 august 2011). Проверено 25 августа 2011.
  18. Building LibreOffice with Clang (22 october 2011). Проверено 23 октября 2011.
  19. Rebuild of the Debian archive with clang.
  20. Clang is the default compiler.
  21. FreeBSD Quarterly Status Report January-March, 2012.

Ссылки

  • Официальная страница проекта

Clang.

© 2020–2023 lt304888.ru, Россия, Волжский, ул. Больничная 49, +7 (8443) 85-29-01