Zusammenfassung: Der Hauptgrund für den Wechsel von GCC zu Clang ist die Inkompatibilität der GPL v3- Lizenz von GCC mit den Zielen des FreeBSD-Projekts . Es gibt auch politische Fragen im Zusammenhang mit Unternehmensinvestitionen sowie Anforderungen an die Benutzerbasis. Schließlich werden technische Vorteile in Bezug auf die Einhaltung von Standards und die einfache Fehlersuche erwartet. Leistungsverbesserungen in der Praxis bei der Kompilierung und Ausführung sind codespezifisch und umstritten. Fälle können für beide Compiler gemacht werden.
FreeBSD und die GPL: FreeBSD hat eine unangenehme Beziehung zur GPL. Befürworter der BSD-Lizenz glauben, dass wirklich freie Software keine Nutzungsbeschränkungen hat . Die Befürworter der GPL sind der Ansicht, dass Einschränkungen erforderlich sind, um die Softwarefreiheit zu schützen, und insbesondere, dass die Fähigkeit, unfreie Software aus freier Software zu erstellen, eher eine ungerechte Form der Macht als eine Freiheit ist. Das FreeBSD-Projekt versucht, wo immer möglich, die Verwendung der GPL zu vermeiden :
Aufgrund der zusätzlichen Komplexität, die sich bei der kommerziellen Nutzung der GPL-Software ergeben kann, bemühen wir uns jedoch, diese Software nach Möglichkeit durch Einsendungen unter der lockeren FreeBSD-Lizenz zu ersetzen.
FreeBSD und die GPL v3: Die GPL v3 verbietet ausdrücklich die sogenannte Tivoization of Code, eine Lücke in der GPL v2, die es Hardwareeinschränkungen ermöglichte, ansonsten legale Softwaremodifikationen durch Benutzer zu verbieten. Die Schließung dieser Lücke war für viele in der FreeBSD-Community ein inakzeptabler Schritt :
Insbesondere Appliance-Anbieter haben die meisten Verluste zu verzeichnen, wenn die derzeit unter GPLv2 lizenzierte umfangreiche Software auf die neue Lizenz migriert wird. Sie werden nicht länger die Freiheit haben, GPLv3-Software zu verwenden und Änderungen der auf ihrer Hardware installierten Software einzuschränken. Kurz gesagt, es gibt eine große Anzahl von OpenSource-Kunden, die plötzlich sehr daran interessiert sind, Alternativen zu GPL-lizenzierter Software zu verstehen.
Aufgrund der Umstellung von GCC auf die GPL v3 war FreeBSD gezwungen, weiterhin GCC 4.2.1 (GPL v2) zu verwenden, das bereits 2007 veröffentlicht wurde und inzwischen erheblich veraltet ist. Die Tatsache, dass FreeBSD nicht auf modernere Versionen von GCC umstieg, selbst mit dem zusätzlichen Wartungsaufwand, einen alten Compiler auszuführen und Korrekturen für das Backporting vorzunehmen, lässt einen Eindruck von der Stärke der Anforderung, die GPL v3 zu vermeiden, aufkommen. Der C-Compiler ist eine Hauptkomponente der FreeBSD-Basis und " eines der (vorläufigen) Ziele für FreeBSD 10 ist ein GPL-freies Basissystem ".
Unternehmensinvestitionen: Wie viele große Open-Source-Projekte erhält FreeBSD Finanzierungs- und Entwicklungsleistungen von Unternehmen. Obgleich das Ausmaß, in dem FreeBSD von Apple finanziert oder entwickelt wird, nicht leicht erkennbar ist, gibt es erhebliche Überschneidungen, da Apples Darwin OS einen umfangreichen Kernel-Code verwendet, der von BSD stammt . Darüber hinaus war Clang selbst ursprünglich ein internes Apple-Projekt, bevor es 2007 als Open-Source- Projekt eingeführt wurde . Da Unternehmensressourcen eine Schlüsselrolle für das FreeBSD-Projekt spielen, ist die Erfüllung der Sponsorenbedürfnisse wahrscheinlich ein wesentlicher Faktor in der Praxis .
Userbase: FreeBSD ist für viele Unternehmen eine attraktive Open-Source-Option, da die Lizenzierung einfach und uneingeschränkt ist und wahrscheinlich nicht zu Rechtsstreitigkeiten führen wird. Mit der Einführung der GPL v3 und den neuen Anti-Tivoization-Bestimmungen wurde ein sich beschleunigender, herstellergetriebener Trend hin zu freizügigeren Lizenzen vermutet . Da der wahrgenommene Vorteil von FreeBSD für kommerzielle Unternehmen in der Erlaubnis der Lizenz liegt, steigt der Druck der Unternehmensbenutzer, sich von GCC und der GPL im Allgemeinen zu entfernen.
Probleme mit GCC: Abgesehen von der Lizenz hat die Verwendung von GCC einige wahrgenommene Probleme . GCC ist nicht vollständig standardkonform und hat viele Erweiterungen, die in ISO-Standard C nicht enthalten sind . Mit über 3 Millionen Codezeilen ist es auch " eines der komplexesten und quellfreiesten Softwareprojekte ". Diese Komplexität macht die Änderung von Code auf Distro-Ebene zu einer herausfordernden Aufgabe.
Technische Vorteile: Clang hat einige technische Vorteile gegenüber GCC . Am bemerkenswertesten sind informativere Fehlermeldungen und eine explizit entwickelte API für IDEs, Refactoring und Tools zur Quellcode-Analyse. Obwohl die Clang-Website grafische Darstellungen enthält, die auf eine wesentlich effizientere Kompilierung und Speichernutzung hinweisen, sind die tatsächlichen Ergebnisse recht unterschiedlich und entsprechen weitgehend der Leistung von GCC. Im Allgemeinen werden von Clang erstellte Binärdateien langsamer ausgeführt als die entsprechenden GCC-Binärdateien:
Während die Verwendung von LLVM beim Erstellen von Code schneller ist als GCC ... In den meisten Fällen zeigten die in GCC 4.5 erstellten Binärdateien eine bessere Leistung als LLVM-GCC oder Clang ... In den restlichen Tests war die Leistung entweder nahe an der von GCC oder gut hinter. In einigen Tests war die Leistung der mit Clang generierten Binärdateien einfach schrecklich.
Fazit: Es ist sehr unwahrscheinlich, dass die Kompilierungseffizienz ein wesentlicher Beweggrund dafür ist, das erhebliche Risiko einzugehen, ein großes Projekt wie FreeBSD auf eine völlig neue Compiler-Toolchain zu verlagern, insbesondere wenn die Binärleistung fehlt. Die Situation war jedoch nicht wirklich haltbar. Wenn Sie die Wahl haben zwischen 1) einem veralteten GCC, 2) einem modernen GCC und der Verwendung einer Lizenz, die nicht mit den Zielen des Projekts vereinbar ist, oder 3) einem stabilen BSD-lizenzierten Compiler war wahrscheinlich unvermeidlich. Beachten Sie, dass dies nur für das Basissystem und die Unterstützung durch die Distribution gilt. nichts hindert einen Benutzer daran, ein modernes GCC auf seiner FreeBSD-Box selbst zu installieren und zu verwenden.