Per la realizzazione su Fedora 33 le regole per l'applicazione dei compilatori nella distribuzione, secondo le quali il compilatore per la costruzione del pacchetto può essere scelto in base alle raccomandazioni e preferenze del progetto principale (upstream). Attualmente, in Fedora è rigidamente prescritto l'uso di GCC per la costruzione di tutti i pacchetti, tranne nei casi in cui il pacchetto può essere costruito solo con Clang/LLVM.
Il motivo per fornire la possibilità di costruire utilizzando Clang è che alcuni progetti, ad esempio, e , durante lo sviluppo utilizzano Clang come compilatore principale e le costruzioni basate su di esso sono più ben testate. L'uso di Clang per tali pacchetti permetterà di evitare il recupero di errori che emergono durante la costruzione con GCC, così come il coordimento delle correzioni di questi errori con il progetto principale. La costruzione con GCC ha un impatto positivo sul mantenimento della portabilità del codice sviluppato con Clang, ma crea un carico maggiore per i manutentori e ritarda la pubblicazione degli aggiornamenti (ad esempio, Mozilla è necessario utilizzare il marchio Firefox quando si applicano patch di terze parti, perciò è importante prima ottenere l'inclusione delle patch nel ramo principale e rilasciare l'aggiornamento solo dopo che sono stati apportati i correttivi upstream).
Si osserva che sarebbe logico utilizzare Clang per i pacchetti per i quali questo compilatore è più adatto e utilizzato nel progetto principale. Per tali pacchetti si potrebbe ridurre il carico di manutenzione se la preparazione dei pacchetti fosse gestita dai rappresentanti del progetto principale. Se la compilazione del pacchetto è effettuata da un rappresentante della comunità, si dovrebbe offrire al maintainers la possibilità di scegliere il compilatore. Per i pacchetti i cui progetti principali non mostrano preferenze per un particolare compilatore, si raccomanda di mantenere lo status quo (compilando in GCC come prima). L'autore della proposta è Jeff Law di Red Hat, che è uno dei maintainers di GCC e Binutils.
Fonte: opennet.ru
