Clang ist Bootstrapping fähig

Kamikaze

Warrior of Sunlight
Teammitglied
Gestern hat Doug Gregor im llvm Blog bekanntgegeben, dass Clang/LLVM ein erfolgreiches Bootstrapping durchlaufen hat.
Das heißt Clang/LLVM wurde komplett erfolgreich mit Clang gebaut und hat alle Regressionstests bestanden. Dieses gebaute Clang/LLVM hat dann noch einmal Clang/LLVM gebaut, das wiederum alle Tests bestand.

Damit ist es nun möglich Clang/LLVM als geschlossenes System zu entwickeln ohne auf andere Compiler angewiesen zu sein.

Clang ist ein C/C++ Compiler-Frontend für LLVM. LLVM ist sowohl eine Virtuelle Machine als auch ein Compiler der statischen Binärcode produziert. Der Clou dabei ist, dass der LLVM Bytecode and Binary angehängt werden kann und damit eine Neuverlinkung und Anpassung der Binary jederzeit möglich ist ohne den Originalcode neu kompilieren zu müssen.

Clang/LLVM stehen unter einer 3-Clause-BSD ähnlichen Lizenz.

Quelle:
http://blog.llvm.org/2010/02/clang-successfully-self-hosts.html
Artikel zum Thema:
http://www.heise.de/newsticker/meld...g-Compiler-kompiliert-sich-selbst-922888.html
Projekte:
http://llvm.org/
http://clang.llvm.org/
Lizenz:
http://llvm.org/releases/2.1/LICENSE.TXT
 
... und das könnte ja offenbar bei FreeBSD ein Nachfolger für den GCC werden. Bin mal gespannt.
 
Nicht nur bei FreeBSD. Auch NetBSD und DragonFly haben Interesse. DragonFly macht auch immer wieder Anpassungen um mit clang kompatibel zu sein und liefert regelmäßig Fixes.

Auch bei NetBSD tut sich einiges, allerdings weiß ist mir nichts über Anpassung an NetBSD selbst sondern vor allem von Anpassungen von clang für NetBSD.

Die Leute bei OpenBSD scheinen sich eher um pcc zu kümmern. Das verfolge ich aber so gut wie gar nicht. Da weiß sicherlich jemand anders mehr.

Die Frage ist auch, wie lange es dauert bis der Großteil der Software in ports und pkgsrc clang unterstützt. Mir gefällt ja vor allem, dass das Debugging erleichtert wird. Davon wird die Qualität diverser Projekte sicherlich enorm profitieren.
 
Die ganzen Ports ohne GCC? Daran habe ich noch so meine Zweifel. Für GPL-Freunde gibt es keinen Grund zu wechseln. Aber es wäre schon toll das Basissystem mit Clang/LLVM zu bauen. Mit der Lizenz könnte der auch immer in der Base aktuell gehalten werden, wenn es mal soweit käme.
 
Die ganzen Ports ohne GCC? Daran habe ich noch so meine Zweifel. Für GPL-Freunde gibt es keinen Grund zu wechseln.

Naja, wenn Clang/LLVM GCC-Kompatibel wird, dann könnte das schon was werden.

Probleme gibt's ja eh immer, auch wenn man nur von einer GCC-Version zur anderen wechselt.
 
Die Leute bei OpenBSD scheinen sich eher um pcc zu kümmern. Das verfolge ich aber so gut wie gar nicht. Da weiß sicherlich jemand anders mehr.

Den genauen Status kenne ich leider auch nicht, aber wenn man mal den Codeumfang von pcc (knapp 40.000 Zeilen) und LLVM/Clang (ca. 550.000 Zeilen) vergleicht, dann duerfte schnell klar werden, dass der pcc bevorzugt wird ;-)

Eine entscheidende Frage ist auch, welche Plattformen von ob einem alternativen Compiler unterstuetzt werden bzw. wie aufwendig es ist, den Compiler an eine neue Plattform anzupassen.

Uebrigens: der statische Analyzer von LLVM/Clang wurde schon fleissig fuer OpenBSD benutzt, chl@ hat da in den letzten paar Monaten einige Bugs mit gefunden (und gefixt).
 
Also, wie vielleicht bekannt ist, wird daran gearbeitet FreeBSD auf Clang zu portieren. Details weiß ich da auch nicht, das letzte was ich hörte war, dass man für i386 und amd64 einen funktionierenden Kernel und einen großen, ausreichenden Teil des Basissystems bauen kann. Ob, wann und wie Clang den GCC ersetzen kann und wird, ist eine ganz andere Frage, die sich im Moment noch nicht stellt. Aber in Anbetracht der Lizenzfrage neuerer GCC-Versionen ist der Weg abseits aller technischen Überlegungen eigentlich vorgezeichnet.
 
Clang ist sicherlich nicht nur wegen der Lizenz interessant. Da gibt es mehr als jede Menge andere Gründe:
http://clang.llvm.org/comparison.html
http://clang.llvm.org/features.html

Außerdem ist er für Projekte rund OpenStep/GnuStep interessant und wird dort schon eine ganze Weile eingesetzt.

Das Interesse ist groß und der bei den meisten Projekten nicht allzu große Aufwand rechnet sich ja auch. Viele Projekte unterstützen ja ohnehin bereits mehrere Compiler und haben dementsprechend Möglichkeiten. Mit weiter Verbesserungen zur GCC-Kompatibilität und vielleicht auch Annäherungen seitens der GNU-Toolchain ist es durchaus möglich, dass die meisten Ports früher oder später auch mit Clang funktionieren.

Die Voraussetzung ist, dass der "Hype" unter den Entwicklern lang genug anhält bzw. sich noch etwas steigert. Auch Apple wird der Verbreitung von Clang wohl kaum abgeneigt gegenüber stehen.

Man wird sehen wie weit das geht. :)
 
LLVM wird schon Verbreitung finden ;)

Mono kann es (bisher noch optional) als Backend verwenden, OpenJDK arbeitet an einem LLVM-Backend, Python arbeitet an einem LLVM-Backend...

Also die Zukunft von LLVM sieht an sich ganz gut aus.

Es fehlt afaik leider nur noch offizieller Windows-Support, um wirklich durchgehend einen Durchbruch zu erleben.
 
Hmm. Ich weiß gar nicht ob Windows-Support so toll wäre. Ich glaube, das würde eine Menge Code-pollution verursachen.

Vielleicht innerhalb von cygwin, aber so richtig nativ?
 
Clang unterstützt C, C++, Objective C... PCC nur C. Klar, dass er da weniger Code braucht.

Dann waere die 13-fache Codemenge aber trotzdem noch etwas merkwuerdig. Ich hab' aber vorhin mal nachgesehen; so fett wie befuerchtet, scheint Clang doch nicht zu sein (irgendwas um die 120.000 Zeilen). Die im Blog genannten 550.000 Zeilen gelten wohl fuer Clang und LLVM zusammen (obwohl ich da zumindest fuer 2.6 mit meinem Lines-of-Code-Zaehlscript auch auf deutlich weniger komme).

Der Kernel von DragonFly BSD kann übrigens schon mit Clang bootfähig kompiliert werden, siehe http://www.dragonflybsd.org/docs/developer/clang/

Ich weiss gar nicht, ob bei OpenBSD ueberhaupt schon mal jemand versucht hat, irgendwas damit zu bauen. Im Moment gibt's da sowieso anderes zu tun. Aber wenn die naechste offizielle Version von LLVM/Clang rauskommt, waeren ein paar Tests sicher mal einen Versuch wert.
 
Hmm. Ich weiß gar nicht ob Windows-Support so toll wäre. Ich glaube, das würde eine Menge Code-pollution verursachen.
Vielleicht innerhalb von cygwin, aber so richtig nativ?

Nee, wenn man es richtig macht, dann wird das auch nicht so viele Probleme verursachen. Man muss doch eh neben OS X auch noch die BSDs und Linux unterstützen. Ob da nun noch entsprechender Code für Windows dazu kommt, ist doch dann egal.

Aber ohne Windows-Support wird LLVM nie wirklich aus dem Pott kommen. Linux wird bei GCC bleiben und dann führt LLVM ein Dasein bei OS X und FreeBSD. Den kleinsten Markt ;)
 
Eines nach dem Anderen. Zuerst musses sich doch mal auf unixoiden Betriebssystemen beweisen und verbreiten. Dann wäre das doch schon ein beachtenswerter Erfolg.

Die Menge des Codes ist ja nicht das einzige Kriterium. Sicher bring schlanker Code seine Vorteile mit sich, aber so lange ein gewisses Verhältnis bleibt ist es doch okay. PCC und Clang zu vergleichen halte ich für nicht besonders sinnvoll, da die Entwicklung und die Ziele ja ziemliche Unterschiede aufweisen.
 
Zuletzt bearbeitet:
Zurück
Oben