Эксперимент по пересборке Debian с использованием Clang показал неожиданно хорошие результаты
Сильвестр Ледрю (Sylvestre Ledru) провёл эксперимент по пересборке архива пакетов Debian GNU/Linux с использованием компилятора Clang, развиваемого в рамках проекта LLVM. Целью эксперимента была оценка пригодности Clang для сборки большого числа разнородного кода на языках C, C++ и Objective-C. Таким образом планировалось оценить, сможет ли Clang на текущей стадии развития выступать в роли альтернативы GCC при сборке пакетов в Debian. Интерес также представляли расширенные возможности Clang по выводу информации о возможных ошибках и недоработках, учёт которых позволил бы повысить общее качество кодовой базы.Результаты эксперимента превзошли ожидания: из 15658 пакетов проблемы со сборкой в Clang 3.0 были выявлены только для 1381 пакета (8.8 %), что соизмеримо с числом проблем, возникавших в прошлом при переходе на более новые ветки GCC. Сильвестр Ледрю признался, что ожидал столкнуться с большим числом ошибок и проблем, непосредственно вызванных использованием Clang, но к своему удивлению обнаружил, что большинство проблем сборки оказались связаны с разницей в поддерживаемых стандартах языка Си, различиями в интерпретации или спорными моментами. В итоге, Сильвестр сделал вывод, что Clang уже достаточно стабилен и функционален для сборки большинства пакетов Debian, даже если для многих пакетов потребуются внести небольшие правки для обеспечения корректной компиляции. Из наиболее часто встречающихся проблем сборки в Clang 3.0 отмечены: отсутствие необходимых символов на этапе связывания (439 пакетов), неверный поиск в шаблонах классов (85) и сбой в работе сборочной утилиты xutils-dev (84).
Для сравнения была предпринята попытка пересборки с использованием прошлой версии Clang - 2.9. В результате был отмечен значительный прогресс в развитии Clang: версией 2.9 не удалось собрать 14.5% пакетов, в то время как для версии 3.0 несобранными остались только 8.8%. Кроме того, отмечаются такие достижения Clang, как обеспечение пересборки Chromium/Chrome и LibreOffice, замена gcc на clang в базовой системе FreeBSD, а также решение компании Apple по использованию Clang по умолчанию в Xcode, основном инструментарии разработки приложений для Mac OS X и iOS.
Судя по всему в следующие несколько лет, обладая лучшими средствами для статического анализа кода, Clang может заменить gcc/g++ в качестве компилятора C/C++ в некоторых дистрибутивах Linux и BSD-системах. Тем не менее, в обозримом будущем GCC останется основным компилятором Debian, так как одним из основных требований проекта является обеспечение надлежащей поддержки всех архитектур Debian, которых насчитывается 11 официальных и 6 неофициальных. В то время как Clang в полной мере пока поддерживает только архитектуры X86-32, X86-64 и ARM.
© OpenNet