Работа с Clang

Поработал немного с Clang. Впечатление неоднозначное - есть моменты, которые не до конца понятны. Несомненный плюс Clang - это удобная интеграция со средствами разработки для анализа кода. Я даже сделал попытку перейти от использования среды Vim+GCC на Emacs+Clang.

Небольшое отступление: дело в том, что и за три года активной работы в Vim я так и не избавился от дискомфорта, вызываемого необходимостью переключаться между его Режимами. Для меня так и остались невостребованными большинство возможностей вимовского Нормального режима. В попытке изменить ситуацию я даже прикупил книгу Нэйла, но и она не помогла изменить моего отношения в этому режиму. Поэтому, начав переход на Clang, я решил сразу сменить и редактор. Выбор претендента был вполне очевиден. Моя работа над основным проектом за-за этого приостановилась больше чем на месяц - я все свободное время активно изучал возможности и тюниговал собственный конфиг Emacs. Увы, Emacs не оправдал надежды - в итоге я сейчас работаю над проектом в Qt Creator.

Но вернусь к Clang. При сборке моего проекта (без специальных опций) Clang дает даже небольшой прирост производительности. Всего несколько процентов, но результат стабильно повторяющийся. Но есть и претензии - в среде Mingw64 попытка собрать проект статически, без внешних библиотечных файлов, заканчивается ошибкой. Я пока не разобрался до конца с причинами, но есть подозрение что проблема в сборке самого Clang. Пока я на это не обращаю внимание - ведь совсем недавно он вобще не собирался под Mingw64. Надеюсь эта проблема тоже будет решена, а пока я использую Clang для статического анализа кода.

Есть еще изменения в проекте. В качестве системы контроля версий теперь используется Git. У него оказались преимущества, которых я не нашел в Mercurial, которым пользовался раньше. Кроме того, после перехода на Git внешние библиотеки я стал хранить в составе проекта. Это позволяет для сборки использовать mingw64 из базовой поставки msys2. Несомненно это плюс, так как пакеты Msys2 оперативно обновляются с выходом новый версий, и уже нет необходимости перенастраивать всю среду разработки при обновлении версии компилятора.