Clang |
Автор: admin Просмотров: 7256 Комментарии:
Добавлен: 8 апреля 2016
Обновлено: 19.04.2016 - 10:26
Компилятор-фронтенд для языков программирования C, C++, Objective-C, Objective-C++, OpenMP, OpenCL и CUDA. Он использует LLVM в качестве своего бэкенда и является частью цикла выпуска LLVM.
Clang разработан в качестве полноценной замены GCC. Этот Open Source проект спонсируют Apple, Microsoft, Google, ARM, Sony, Intel и AMD. Исходный код Clang доступен под лицензией NCSA Open Source License, пермиссивной лицензией на программное обеспечение.
Проект Clang включает фронтенд Clang, статический анализатор кода, и несколько инструментов анализа кода.
Предпосылки
Начиная с 2005 года, компания Apple расширила использование LLVM в ряде коммерческих систем, включая iPhone и Xcode 3.1 SDK.
Одним из первых случаев использования LLVM был OpenGL код компилятора для OS X , который преобразует OpenGL вызовы в более фундаментальные вызовы для графических процессоров (GPU), которые не поддерживают определенные функции. Это позволило компании Apple поддерживать весь API OpenGL на компьютерах с чипсетами Intel Graphics Media Accelerator (GMA), увеличивая производительность на этих машинах. На достаточно фуркциональных графических процессорах, код компилируется , чтобы в полной мере использоваться на своем аппаратном обеспечении, но на машинах GMA, LLVM компилирует один и тот же код OpenGL в подпрограммах, чтобы убедиться, что он продолжает работать должным образом.
LLVM первоначально предназначался для использования как фронтенд для GCC, но GCC, как оказалось вызывает некоторые проблемы для разработчиков LLVM и Apple. Исходный код GCC слишком большой и громоздкий, чтобы работать с ним. Как выразился один старый разработчик GCC, пытаться заставить бегемота танцевать, не очень весело.
Программное обеспечение Apple широко использует Objective-C, но фронтенд Objective-C для GCC не имеет особого значения для разработчиков GCC. Кроме этого, GCC не укладывается в гладкий IDE от Apple. Наконец, GCC лицензирован по GPLv3, что требует от разработчиков распространяющих расширения или модификации GCC, делать исходный код открытым. Тогда как LLVM имеет лицензию BSD и может распространятся как проприетарное программное обеспечение.
Aplle разработал новый фронтенд с нуля, с поддержкой C, Objective-C и C++. В июле 2007 года были открыты исходники Clang.
Дизайн Clang
Clang предназначен специально для работы поверх LLVM. Сочетание Clang и LLVM обеспечивает большинство необходимых инструментов для замены всего стека GCC. Поэтому он построен с конструкцией на основе библиотек, и как все остальные LLVM, Clang легко встраивать в приложения. Это одна из причин , почему большинство реализаций OpenCL построены с Clang и LLVM.
Одной из основных задач Clang является создание архитектуры на основе библиотек, чтобы позволить компилятору быть более тесно связанным с инструментами, которые взаимодействуют с исходным кодом, такими как графический интерфейс IDE. В отличие от Clang, GCC работает в классическом стиле «компиляция-линковка-отладка», и связать его с другими инструментами не всегда легко. Например, GCC использует шаг под названием "fold", что является ключом к общему процессу компиляции, который имеет побочный эффект перевода дерева кода в форму, которая не выглядит очень похожей на оригинальный исходный код. Если обнаружена ошибка во время или после шага "fold", это может затруднить обратный перевод. Кроме того, производители, использующие стек GCC в пределах ИСР используют отдельные инструменты для индексирования кода, чтобы обеспечить такие функции как подсветка синтаксиса и автозаполнение.
Clang предназначен, чтобы сохранить больше информации во время процесса компиляции, чем GCC, и сохранить общую форму исходного кода. Цель всего этого чтобы упростить отображение ошибок в исходном коде. Сообщения об ошибках от Clang также более подробнее и конкретнее, а также более машиночитаемые, поэтому ИСР может индексировать вывод компилятора в процессе компиляции. Модульная конструкция компилятора может предложить индексирование исходного кода, проверка синтаксиса и другие возможности обычно связанные с быстрой разработкой веб-приложений. Дерево синтаксического анализа больше подходит для поддержки автоматизированного рефакторинга кода, поскольку оно представляет исходный код программы непосредственно.
Clang это компилятор только для C и C-подобных языков, включая C, C++, Objective-C, Objective-C++, OpenCL и CUDA. Для других языков, в том числе Java, Fortran и Ada, LLVM остается зависимым от GCC или других фронтенд компиляторов. Во многих случаях Clang можно использовать или выгружать для GCC, когда это необходимо, без каких либо инструментов в целом. Clang поддерживает большинство из наиболее часто используемых опций GCC.
Производительность и совместимость с GCC
Clang разрабатывался с высокой степенью совместимости с GCC. Интерфейс командной строки похожий и имеет многие флаги и опции GCC. В Clang реализовано множество расширений GNU и включено по умолчанию. Clang реализует множество встроенных функций компилятора GCC исключительно для совместимости. Например, Clang реализует atomic intrinsics, которые соответствуют встроенным функциям именно с C11 atomics, Clang также реализует GCC's __sync_* intrinsics для совместимости с GCC и libstdc ++. Clang поддерживает ABI совместимость с объектным кодом от GCC. In practice Clang can often be used as a drop-in replacement for GCC.
Разработчики Clang намерены сократить потребление памяти и увеличить скорость компиляции по сравнению с конкурирующими компиляторами, например GCC. В октябре 2007 года они сообщили что Clang собрал библиотеки Carbon в два раза быстрее чем GCC, используя при этом около одной шестой объема памяти и диска. По состоянию на середину 2014 года, производительность выполнения улучшилась до точки, где Clang выигрывает более трети контрольных показателей.
Хотя есть ещё несколько тестов, где производительность скомпилированной программы от Clang отстаёт от GCC. Clang всё ещё находиться в процессе активной разработки, с надеждой на дальнейшее улучшение.
https://en.wikipedia.org/wiki/Clang
------------------------
ТРИО теплый пол отзыв
Заработок на сокращении ссылок
Earnings on reducing links
Код PHP на HTML сайты
Категория: Компиляторы
Лицензия:
University of Illinois/NCSA Open Source License
Интерфейс консольный
Язык программирования:
C++
Сайт проекта
Скачать Clang
Комментарии |
Информация Комментирование данной новости запрещено. |