Wie die meisten Leser dieses Forum sicher wissen, arbeitet das FreeBSD Projekt bereits seit mehreren Jahren daran den Standardcompiler des Systems von GCC 4.2 auf Clang zu wechseln. Neben technischen Erwägungen ist der Hauptgrund, dass neuere GCC-Versionen unter der GPLv3 stehen und daher nicht importiert werden können. Die an der Clang-Integration arbeitenden Entwickler haben nun vorgeschlagen, Clang am 4. November zum Standardcompiler auf i386 und amd64 zu machen. Dies hat eine heftige Diskussion ausgelöst: http://lists.freebsd.org/pipermail/freebsd-toolchain/2012-September/000452.html
Die Entwickler argumentieren:
- Auch wenn es noch keinen Termin für FreeBSD 10.0 gibt, ist nun der Zeitpunkt den Compiler zu wechseln. Denn nur so bleibt genügend Zeit Probleme zu beheben. Zudem ist für ein eventuell gpl-freies 10.0 GCC die größte Hürde.
- Es ist der Punkt gekommen, an dem sich Probleme nur noch finden lassen, wenn man mehr Tester ins Boot holt. Und dies geht am besten, wenn alle Current-Nutzer Clang verwenden.
- Zwar bauen derzeit knappe 20% der Ports nicht mit Clang, doch im letzten Jahr gab es an der Front kaum Fortschritte und auch die lange versprochene Option eines austauschbaren Port-Compilers ist noch nicht in Sicht. Ein Stoß ins kalte Wasser könnte die Sache sehr beschleunigen. Zudem können die Maintainer für ihre Ports GCC erzwingen, wenn Clang keine Option ist.
Es gibt aber auch andere Stimmen:
- Da die Ports auf 10-CURRENT (wieder einmal) de facto unbenutzbar würden, ist es für einen solchen Schritt zu früh.
- So ambitioniert Clang auch sein mag, er ist teilweise noch langsamer als GCC und hat noch einige Bugs. So brechen einige Funktionen in libm. Dies sollte vorher behoben werden.
Ich persönlich finde, dass 10-CURRENT keine Stabilität garantiert und Nutzer dieser wirklich sehr aktuellen Entwicklungsversion genau wissen (sollten), worauf sie sich einlassen. Wenn Clang in FreeBSD 10.0 der Standardcompiler werden soll, ist jetzt die Zeit zu handeln und den Schalter umzulegen. Wenn sich die Hürden als unüberwindbar herausstellen sollten, kann man immer noch die Rolle Rückwärts wagen und auf GCC zurückgehen. Vor allem aber ist der GCC 4.2 keine Option mehr. Die Verbesserungsmöglichkeiten an ihm sind ausgeschöpft, es sei denn man würde forken. Neuere CPU-Optimierungen und Befehlssatzerweiterungen werden nicht unterstützt. Der für viel Geld lizenzierte und aufwändig integrierte neue C++-Stack ist zudem mit dem GCC nicht nutzbar. Vor allem aber haben die Entwickler recht: Ohne einen Stoß ins kalte Wasser wird man Clang niemals wirklich stabilisieren können.
Die Entwickler argumentieren:
- Auch wenn es noch keinen Termin für FreeBSD 10.0 gibt, ist nun der Zeitpunkt den Compiler zu wechseln. Denn nur so bleibt genügend Zeit Probleme zu beheben. Zudem ist für ein eventuell gpl-freies 10.0 GCC die größte Hürde.
- Es ist der Punkt gekommen, an dem sich Probleme nur noch finden lassen, wenn man mehr Tester ins Boot holt. Und dies geht am besten, wenn alle Current-Nutzer Clang verwenden.
- Zwar bauen derzeit knappe 20% der Ports nicht mit Clang, doch im letzten Jahr gab es an der Front kaum Fortschritte und auch die lange versprochene Option eines austauschbaren Port-Compilers ist noch nicht in Sicht. Ein Stoß ins kalte Wasser könnte die Sache sehr beschleunigen. Zudem können die Maintainer für ihre Ports GCC erzwingen, wenn Clang keine Option ist.
Es gibt aber auch andere Stimmen:
- Da die Ports auf 10-CURRENT (wieder einmal) de facto unbenutzbar würden, ist es für einen solchen Schritt zu früh.
- So ambitioniert Clang auch sein mag, er ist teilweise noch langsamer als GCC und hat noch einige Bugs. So brechen einige Funktionen in libm. Dies sollte vorher behoben werden.
Ich persönlich finde, dass 10-CURRENT keine Stabilität garantiert und Nutzer dieser wirklich sehr aktuellen Entwicklungsversion genau wissen (sollten), worauf sie sich einlassen. Wenn Clang in FreeBSD 10.0 der Standardcompiler werden soll, ist jetzt die Zeit zu handeln und den Schalter umzulegen. Wenn sich die Hürden als unüberwindbar herausstellen sollten, kann man immer noch die Rolle Rückwärts wagen und auf GCC zurückgehen. Vor allem aber ist der GCC 4.2 keine Option mehr. Die Verbesserungsmöglichkeiten an ihm sind ausgeschöpft, es sei denn man würde forken. Neuere CPU-Optimierungen und Befehlssatzerweiterungen werden nicht unterstützt. Der für viel Geld lizenzierte und aufwändig integrierte neue C++-Stack ist zudem mit dem GCC nicht nutzbar. Vor allem aber haben die Entwickler recht: Ohne einen Stoß ins kalte Wasser wird man Clang niemals wirklich stabilisieren können.