Sviluppatori di FreeBSD piano per la rimozione di GCC 4.2.1 dai sorgenti del sistema base di FreeBSD. I componenti di GCC saranno rimossi prima del rilascio della ramificazione di FreeBSD 13, che includerà solo il compilatore Clang. GCC potrà essere installato dai porti, dove è disponibile , e , nonché quelli già classificati come obsoleti , , e .
Alle architetture che dipendono da GCC e non possono passare a Clang, verrà proposta l'adozione di strumenti esterni, installati dai porti. In preparazione alla rimozione di GCC dal sistema base, sono previsti miglioramenti nell'integrazione del sistema di build del sistema base con strumenti esterni. Ad esempio, per l'architettura amd64 è già stata aggiunta la possibilità di compilare utilizzando gcc 6.4 dai porti nel sistema di integrazione continua, che può essere utilizzata come base per la migrazione di altre architetture.
Ricordiamo che a partire da FreeBSD 10, il sistema base per le architetture i386, AMD64 e ARM è stato convertito all'uso predefinito del compilatore Clang e della libreria libc++ sviluppata dal progetto LLVM. GCC e libstdc++ per le architetture indicate non vengono più compilati come parte del sistema base, ma continuano ad essere forniti di default per le architetture powerpc, mips, mips64 e sparc64, e possono essere installati durante la ricompilazione specificando i flag WITH_GCC e WITH_GNUCXX. La fornitura della versione obsoleta GCC 4.2.1 è stata dovuta a restrizioni di licenza.
FreeBSD non ha potuto passare a una versione più recente di GCC, poiché a partire dal rilascio 4.2.2, GCC è stato alla licenza GPLv3 e l'integrazione di GCC 4.2.2 era ostacolata dall'incompatibilità dei componenti runtime di GCC con la licenza BSD. Successivamente, in GCC 4.4 si è verificata questa incompatibilità , ma l'aggiunta di componenti al sistema base di FreeBSD con licenza GPLv3 è stata a causa delle contraddizioni con e la volontà di non imporre ulteriori restrizioni agli utenti, come il divieto di .
Il processo di rimozione di GCC dal sistema di base sarà suddiviso in diverse fasi e durerà 9 mesi, dando agli sviluppatori delle architetture legate a GCC (powerpc, mips, mips64 e sparc64) il tempo necessario per effettuare la migrazione a Clang o passare all'uso di strumenti esterni. La prima fase inizierà il 31 agosto e porterà all'esclusione di gcc 4.2.1 dalla build nel sistema di integrazione continua, oltre alla cessazione dell'uso del flag «-Werror» per le piattaforme legate a GCC e alla disattivazione per impostazione predefinita della build di GCC durante l'esecuzione di «make universe».
Il 31 dicembre 2019, la build GCC sarà disabilitata per impostazione predefinita, ma potrà essere ripristinata specificando determinati flag. Il 31 marzo 2020, GCC sarà rimosso dal repository SVN, e il 31 maggio saranno rimosse da SVN tutte le piattaforme non coperte dal sistema di integrazione continua, che non supportano LLVM o non sono state migrate all'uso di strumenti di build esterni. Il 31 luglio 2020 avverrà la rimozione finale da SVN di tutte le piattaforme rimanenti che richiedono l'uso di strumenti esterni, ma non sono supportate negli script di creazione delle release.
Fonte: opennet.ru
