Новость из категории: Информация

Clang и LLVM: настоящее и итоги

Содержание:
1. Матчасть;
2. Предыстория;
3. Настоящее и итоги (Вы читаете данный раздел).
Clang и LLVM: настоящее и итоги

Итак, кто заинтересован в развитии Clang? И на www.llvm.org, и на clang.llvm.org выкладываются материалы с собраний разработчиков - собственно, там выступают не только сами разработчики Clang/LLVM, но и его пользователи. В списках участников указано, какую компанию, корпорацию или университет они представляют. Видим крупных игроков: Apple, Google, Adobe, Sun, AMD, NVIDIA, Cray, DreamWorks Animation, VMWare, ARM. Смотрю слайды к прошлогоднему собранию, к докладу «Состояние Clang». Снова - большие и красивые графики сравнения с GCC в скорости. «Быстрее в три раза!», «Быстрее на 30 процентов!». Поддержка нужной Apple специфики. Порицание GCC: «Диагностика GCC зачастую не приносит пользы. Вводит в заблуждение, выражена невразумительно, не точна». Далее приводятся почти те же примеры, что и в слайдах времен рождения Clang.

Очевидно, что крупные компании заинтересованы в Clang/ LLVM, а в первую очередь - конечно же, Apple, которая покамест еще использует GCC в своей среде разработки XCode. Как вы думаете, какая версия GCC включена в XCode? Там их две: 4.0 и 4.2. Это не «исходные» GCC, а измененные в Apple. Однако не в этом суть. Почему не используются новые версии GCC? GCC начиная с версии 4.3 сменила лицензию с GPLv2 на GPLv3. Насколько я понимаю, Apple не может использовать лицензированный таким образом GCC в своей XCode без того, чтобы не лицензировать XCode тоже под GPL (в AppleInsider есть об этом статья - http://appleinsider.com/articles/08/06/20/apples_other_open_secret_the_llvm_complier)

Так получилось, что крупные компании увидели реку свободного ПО и вошли в её могучие воды, но поняли, что не совсем по пути. Вышли на берег и задумались, а можно ли как-то иначе? Выход был найден - тоже реки, тоже с открытым кодом, но с такими лицензиями, где в перспективе деньгам течь привольнее. Пошло повальное увлечение лицензией Apache и другими BSD-подобными. В общем, что угодно - только не «вирусная GPL».

Так получилось, что статья - не столько о технических возможностях компилятора, сколько о его месте в мире программирования. Сейчас, кроме того, что Clang/LLVM быстрее справляется с компиляцией и выводит сообщения об ошибках в другом формате, иных плюсов для разработки программ, не связанных со спецификой ПО от Apple, я не вижу. Впрочем, если стоять на почве практицизма, эти два плюса - весомый аргумент в пользу Clang.

Пробовать Clang в работе можно уже сейчас, скачав из SVN-хранилища с официального сайта. Для сборки из исходников потребуется около 4 гигабайт свободного места на диске и некоторое количество времени - сколько именно, сказать не могу, ибо многократно прерывал компиляцию, отрываясь по делам. Однако, если вам лень делать сборку, можно - и это здорово! -использовать LLVM в режиме онлайн, со странички http://llvm.org/demo/index.cgi. Забиваем в поле редактора исходник, делаем нужные настройки и нажимаем кнопку Compile source code. На выходе получаем код на ассемблере. Отмечу, что в этой онлайн-забаве в качестве фронтэнда используется не Clang, а GCC. И компилируются, конечно, не большие проекты, а ма-ленькие примеры.

Clang и LLVM: настоящее и итоги

Если же собрать Clang/LLVM из исходников, то вам, кроме полноценного компилятора, будет доступна любопытная и иногда полезная утилита Static Analyzer (запускается командой scan-build, подробнее читайте на http://clang-analyzer.llvm.org/scan-build.html), которая в графической форме, в виде HTML, предоставляет результаты своего анализа кода (предупреждения об утечках и тому подобном).

Итог

Замечательно, что растет такой добротный конкурент, именно конкурент, для GCC. Даже в среде хакеров ядра Linux зачастую слышен ропот на разработчиков GCC - мол, не прислушиваются к нуждам народа, слишком самодостаточны, а компилятор выдает глючный код.

Не знаю, какой путь развития лучше именно для GCC: идти на поводу у конкретных нужд или создавать проект ради проекта. Но вот уже в новой версии GCC - 4.6 - заявлено (кроме всего прочего) об ускорении процесса сборки на 10% (на примере сборки самого GCC C для платформы x86-64) и немало новинок в поддержке C++0x - грядущего стандарта C++. В Clang поддержка C++0x гораздо скромнее.

Станет ли Clang через пару лет столь же привычным в дистрибутивах UNIX-подобных систем, как нынче GCC? Увидим, но мне кажется, что станет.

Рейтинг статьи

Оценка
0/5
голосов: 0
Ваша оценка статье по пятибальной шкале:
 
 
   

Поделиться

Похожие новости

Комментарии

^ Наверх