GCC будет удалён из основного состава FreeBSD

Разработчики FreeBSD представили план удаления GCC 4.2.1 из исходных текстов базовой системы FreeBSD. Компоненты GCC будут удалены до ответвления ветки FreeBSD 13, в состав которой будет входить только компилятор Clang. GCC при желании можно будет поставить из портов, в которых предлагается GCC 9, 7 и 8, а также уже переведённые в разряд устаревших выпуски GCC 4.8, 5, 6 и 7.

Архитектурам, которые завязаны на GCC и не могут перейти на Clang, будет предложено перейти на внешний инструментарий, устанавливаемый из портов. В рамках подготовки к удалению GCC из базовой системы планируется провести работу по улучшению интеграции системы сборки базовой системы с внешними инструментариями. Например, для архитектуры amd64 в систему непрерывной интеграции уже добавлена возможность сборки с использованием gcc 6.4 из портов, которая может быть использована в качестве основы для перевода других архитектур.

Напомним, что начиная с FreeBSD 10 базовая система для архитектур i386, AMD64 и ARM была переведена на поставку по умолчанию компилятора Clang и развиваемой проектом LLVM библиотеки libc++. GCC и libstdc++ для указанных архитектур перестали собираться как часть базовой системы, но продолжили поставляться по умолчанию для архитектур powerpc, mips, mips64 и sparc64, а также могли быть установлены при пересборке с указанием флагов WITH_GCC и WITH_GNUCXX. Поставка устаревшей версии GCC 4.2.1 была обусловлена лицензионными ограничениями.

FreeBSD не мог перейти на более новую версию GCC, так как начиная с выпуска 4.2.2 GCC был переведен на лицензию GPLv3 и интеграции GCC 4.2.2 мешала несовместимость runtime-компонентов GCC с лицензией BSD. Позднее, в версии GCC 4.4 данная несовместимость была устранена, но добавление в базовую систему FreeBSD компонентов под лицензией GPLv3 было признано невозможным из-за противоречий с целями проекта FreeBSD и нежеланием налагать дополнительные ограничения на пользователей, такие как запрет тивоизации.

Процесс избавления от GCC в базовой системе будет разделён на несколько этапов и продлится 9 месяцев, что даст разработчикам привязанных к GCC архитектур (powerpc, mips, mips64 и sparc64) время на то, чтобы выполнить миграцию на Clang или перейти на использование внешнего инструментария. Первый этап стартует 31 августа и приведёт к исключению gcc 4.2.1 из сборки в системе непрерывной интеграции, а также к прекращению применения флага »-Werror» для привязанных к GCC платформ и отключению по умолчанию сборки GCC при выполнении «make universe».

31 декабря 2019 года сборка GCC будет отключена по умолчанию, но пока сможет быть возвращена при указании определённых флагов. 31 марта 2020 года GCC будет удалён из SVN-репозитория, а 31 мая из SVN будут удалены все платформы, не охваченные системой непрерывной интеграции, не поддерживающие LLVM или не переведённые на использование внешнего сборочного инструментария. 31 июля 2020 года будет выполнено финальное удаление из SVN всех остающихся платформ, требующих использование внешнего инструментария, но не поддерживаемых в скриптах формирования релизов.

©  OpenNet