Проекты LLVM и FreeBSD отметили важную веху в своём развитии - в дерево исходных текстов ветки FreeBSD-CURRENT, на базе которой формируется релиз FreeBSD 10, для архитектур i386 и amd64 приняты изменения (http://lists.freebsd.org/pipermail/svn-src-head/2012-Novembe... включающие по умолчанию использование компилятора Clang (http://clang.llvm.org/) и набора runtime-библиотек, развиваемых проектом LLVM. Исполняемые файлы cc, cpp и c++ отныне являются ссылками на clang. Clang задействован как для пересборки базовой системы, так и для сборки портов. Сборка с использованием GCC теперь представлена в качестве опции.
Таким образом, FreeBSD теперь по умолчанию использует С/C++ стек, поставляемый целиком под лицензией BSD. Напомним, что начиная с выпуска FreeBSD 9.0 в базовую систему был интегрирован Clang и набор сопутствующих библиотек, тем не менее по умолчанию как и раньше использовался GCC 4.2.1. Проект FreeBSD был вынужден использовать вышедшую 5 лет назад устаревшую версию набора компиляторов GCC 4.2.1 так как начиная с версии 4.2.2, GCC был переведен (http://www.opennet.ru/opennews/art.shtml?num=12364) на лицензию GPLv3, мешающую интеграции новых версии GCC во FreeBSD. Формально основным препятствием интеграции GCC 4.2.2 была несовместимость runtime-компонентов GCC с лицензией BSD. В версии GCC 4.4 были введены (http://www.opennet.ru/opennews/art.shtml?num=21376) дополнительные условия лицензирования, убирающие некоторые ограничения лицензии GPLv3 для Runtime-компонентов GCC.
Тем не менее наличие в базовой системе FreeBSD компонентов под лицензией GPLv3 остаётся невозможным (http://www.freebsdfoundation.org/press/2007Aug-newsletter.sh... из-за противоречий с целями проекта FreeBSD (http://www.freebsd.org/doc/faq/introduction.html#FreeBSD-goals) и нежеланием возлагать дополнительные ограничения на пользователей. В частности, при поставке в составе FreeBSD новых версий GCC, на пользователей FreeBSD автоматически распространялись бы и дополнительные ограничения GPLv3, такие как запрет тивоизации (http://ru.wikipedia.org/wiki/%D0%A2%D0%B.... Из других причин миграции на Clang отмечается желание задействовать реализованные в Clang дополнительные техники оптимизации и диагностики проблем, например, позволяющие автоматизировать выявление фактов разыменования указателей и других ошибок, связанных с некорректной работой с памятью.
Сборка ядра, базовой системы и большинство портов с использованием Clang признана (http://wiki.freebsd.org/BuildingFreeBSDWithClang) стабильной. Поддержка архитектур Mips, PowerPC, ARM и Sparc64 находится в стадии разработки. Несмотря на переход на Сlang, в портах ещё можно встретить приложения, которые не могут быть собраны с Clang. Как правило это очень старые программы, которые часто не собираются и с новыми версиями GCC. При сборке подобных портов следует использовать опцию "USE_GCC=any".
Дополнительно, можно отметить выход (http://lists.freebsd.org/pipermail/freebsd-stable/2012-Novem... третьего кандидата в релизы FreeBSD 9.1. Финальный релиз запланирован (http://www.freebsd.org/releases/9.1R/schedule.html)на 12 ноября. Тестовая версия доступна (ftp://ftp.freebsd.org/pub/FreeBSD/releases/ISO-IMAGES/9.1/) для платформ amd64 (ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/), i386 (ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/i386/), powerpc64 (ftp://ftp.freebsd.org/pub/FreeBSD/releases/powerpc/powerpc64/), ia64 (ftp://ftp.freebsd.org/pub/FreeBSD/releases/ia64/ia64/) и sparc64 (ftp://ftp.freebsd.org/pub/FreeBSD/releases/sparc64/sparc64/). Установочные сборки доступны в виде образов bootonly, DVD и Memstick для USB Flash.
URL: http://lists.freebsd.org/pipermail/freebsd-current/2012-Nove...
Новость: http://www.opennet.ru/opennews/art.shtml?num=35237