Résumé: La principale raison du passage de GCC à Clang est l'incompatibilité de la licence GPL v3 de GCC avec les objectifs du projet FreeBSD . Il existe également des problèmes politiques liés à l'investissement des entreprises, ainsi qu'aux exigences de la base d'utilisateurs. Enfin, des avantages techniques attendus sont liés à la conformité aux normes et à la facilité de débogage. Les améliorations des performances du monde réel en matière de compilation et d’exécution sont spécifiques au code et discutables; des cas peuvent être faits pour les deux compilateurs.
FreeBSD et la GPL: FreeBSD a une relation difficile avec la GPL. Les défenseurs des licences BSD estiment que les logiciels véritablement libres ne sont soumis à aucune restriction d'utilisation . Les défenseurs de la GPL estiment que des restrictions sont nécessaires pour protéger la liberté des logiciels, et en particulier que la possibilité de créer des logiciels non libres à partir de logiciels libres est une forme de pouvoir injuste plutôt qu'une liberté. Le projet FreeBSD, dans la mesure du possible, tente d’ éviter l’utilisation de la GPL :
En raison des complexités supplémentaires pouvant évoluer dans l'utilisation commerciale du logiciel GPL, nous essayons cependant de remplacer ce logiciel par des soumissions sous la licence plus souple de FreeBSD, dans la mesure du possible.
FreeBSD et la GPL v3: La GPL v3 interdit explicitement la soi-disant Tivoisation de code, une faille dans la GPL v2 qui permettait à des restrictions matérielles d'interdire aux utilisateurs des modifications logicielles par ailleurs légales. Fermer cette échappatoire a été une étape inacceptable pour de nombreux membres de la communauté FreeBSD:
Les éditeurs d’appareils, en particulier, ont le plus à perdre si l’important ensemble de logiciels actuellement sous licence GPLv2 migre vers la nouvelle licence. Ils n'auront plus la liberté d'utiliser le logiciel GPLv3 et de restreindre la modification du logiciel installé sur leur matériel ... En bref, il existe un grand nombre de consommateurs OpenSource qui sont soudainement très intéressés par la compréhension des alternatives au logiciel sous licence GPL.
En raison du passage de GCC à la GPL v3, FreeBSD a été obligé de continuer à utiliser GCC 4.2.1 (GPL v2), qui avait été publiée il y a longtemps, en 2007 , et est maintenant considérablement obsolète. Le fait que FreeBSD n’ait pas décidé d’utiliser des versions plus modernes de GCC, même avec les problèmes de maintenance supplémentaires liés à l’exécution d’un vieux compilateur et à des correctifs de backporting, donne une idée de la force de la nécessité d’éviter la GPL v3. Le compilateur C est un composant majeur de la base FreeBSD et "l' un des objectifs (provisoires) de FreeBSD 10 est un système de base exempt de GPL ".
Investissement des entreprises: À l'instar de nombreux grands projets open source, FreeBSD reçoit du financement et du développement de sociétés. Bien que le degré de financement ou de développement de FreeBSD par Apple ne soit pas facilement décelable, il existe un chevauchement considérable du fait que le système d’exploitation Darwin d’Apple utilise un code noyau substantiel provenant de BSD . De plus, Clang était à l'origine un projet Apple interne, avant d'être open source en 2007 . Les ressources de l'entreprise étant un élément clé du projet FreeBSD, la satisfaction des besoins des sponsors est probablement un facteur important du monde réel .
Userbase: FreeBSD est une option open source attrayante pour de nombreuses entreprises, car la licence est simple, non restrictive et peu susceptible de donner lieu à des poursuites. Avec l’arrivée de la GPL v3 et les nouvelles dispositions anti-Tivoisation , il a été suggéré que la tendance était de plus en plus rapide et dictée par les fournisseurs de licences plus permissives . Comme l'avantage perçu par FreeBSD pour les entités commerciales réside dans sa licence permissive, les utilisateurs de l'entreprise, de plus en plus pressés, s'éloignent de GCC et de la GPL en général.
Problèmes liés à GCC: Outre la licence, l'utilisation de GCC soulève certains problèmes . GCC n'est pas conforme entièrement aux normes, et a de nombreuses extensions ne se trouvent pas dans la norme ISO C . Avec plus de 3 millions de lignes de code, il s'agit également de "l' un des projets de logiciels les plus complexes et les plus libres / ouverts ". Cette complexité rend la modification de code au niveau de la distribution difficile.
Avantages techniques: Clang présente certains avantages techniques par rapport à GCC . Les plus notables sont les messages d'erreur beaucoup plus informatifs et une API explicitement conçue pour les IDE, les outils de refactoring et d'analyse de code source. Bien que le site Web de Clang présente des tracés indiquant une compilation et une utilisation de la mémoire beaucoup plus efficaces, les résultats réels sont assez variables et largement conformes aux performances de GCC. En général, les fichiers binaires produits par Clang s'exécutent plus lentement que les fichiers binaires GCC équivalents:
Bien que l'utilisation de LLVM soit plus rapide en code de construction que GCC ... dans la plupart des cas, les fichiers binaires construits de GCC 4.5 avaient obtenu de meilleurs résultats que LLVM-GCC ou Clang ... dans les autres tests, les performances étaient soit proches de celles de GCC, soit bien. derrière. Dans certains tests, les performances des fichiers binaires générés par Clang étaient simplement terribles.
Conclusion: il est hautement improbable que l'efficacité de la compilation soit un facteur de motivation important pour prendre le risque substantiel de déplacer un projet de grande envergure comme FreeBSD vers une toute nouvelle chaîne de compilation, en particulier lorsque les performances binaires font défaut. Cependant, la situation n'était pas vraiment tenable. Vous avez le choix entre 1) utiliser un GCC obsolète, 2) passer à un GCC moderne et être forcé d’utiliser une licence incompatible avec les objectifs du projet ou 3) opter pour un compilateur stable sous licence BSD, la décision était probablement inévitable. Gardez à l'esprit que cela ne s'applique qu'au système de base et au support de la distribution; rien n'empêche un utilisateur d'installer et d'utiliser un GCC moderne sur sa machine FreeBSD.