Per l'implementazione in Fedora 33 le regole di applicazione dei compilatori nella distribuzione, in base alle quali il compilatore per la costruzione di un pacchetto potrà essere scelto in base alle raccomandazioni e alle preferenze del progetto principale (upstream). Attualmente, in Fedora è rigidamente prescritto di utilizzare GCC per la compilazione di tutti i pacchetti, tranne nei casi in cui un pacchetto possa essere compilato solo con Clang/LLVM.
La motivazione per offrire la possibilità di compilazione con Clang è che alcuni progetti, ad esempio, e , durante lo sviluppo utilizzano Clang come compilatore principale e le compilazioni basate su di esso sono più ampiamente testate. Usare Clang per tali pacchetti permetterà di evitare l'emergere di errori durante la compilazione in GCC, oltre alla necessità di concordare le correzioni di tali errori con il progetto principale. La compilazione con GCC influisce positivamente sulla mantenimento della portabilità del codice sviluppato con Clang, ma crea un maggiore carico per i manutentori e ritarda la pubblicazione degli aggiornamenti (ad esempio, Mozilla l'utilizzo del marchio Firefox in caso di applicazione di patch di terze parti, pertanto è necessario prima ottenere l'inclusione delle patch nel codice principale e rilasciare l'aggiornamento solo dopo la disponibilità delle correzioni nel upstream).
Si osserva che sarebbe logico utilizzare Clang per i pacchetti per i quali questo compilatore è più adatto e viene utilizzato nel progetto principale. Per tali pacchetti, sarebbe possibile ridurre il carico di manutenzione se la preparazione dei pacchetti fosse gestita dai rappresentanti del progetto principale. Se la compilazione del pacchetto è affidata a un rappresentante della comunità, si propone di permettere al manutentore di scegliere il compilatore. Per i pacchetti i cui progetti principali non hanno preferenze per un compilatore specifico, si raccomanda di mantenere lo status quo (compilare in GCC come in precedenza). L'autore della proposta è Jeff Law di Red Hat, che è uno dei manutentori di GCC e Binutils.
Fonte: opennet.ru
