Разработчици на FreeBSD план за премахване на GCC 4.2.1 от изходния код на основната система FreeBSD. Компонентите на GCC ще бъдат премахнати до разклонението на клон FreeBSD 13, в който ще бъде включен само компилаторът Clang. GCC, ако желаете, може да бъде инсталиран от портове, в които се предлага , и , а също така вече преведените в категорията на остарелите , , и .
На архитектурите, които са зависими от 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, тази несъвместимост , но добавянето на компоненти с лиценз 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.ru
