LLVM/Clang geht am 09. Juni in -CURRENT ein

Yamagi

Possessed With Psi Powers
Teammitglied
Ein kurzer Hinweis für alle FreeBSD 9-CURRENT Nutzer. Am 09. Juni werden LLVM und Clang importiert werden, der neue C/C++/ObjC-Compiler ist dann Teil des Basissystems. Clang wird zuerst (wahrscheinlich mindestens noch den ganzen 9.x-Zweig über) ein rein optionaler Systembestandteil sein. Das bedeutet, es werden zwar Binarys "/usr/bin/clang" und "/usr/bin/clang++" installiert werden, jedoch wird der Compiler nicht genutzt werden, solange man es nicht explizit aktiviert. Das System selbst und die Ports werden weiterhin wie gewohnt mit GCC 4.2 gebaut werden. Zweck dieses Imports ist in erster Linie ein Zeichen zu setzen, wohin die Reise in Sachen Compiler gehen könnte und Clang zwecks besserem Testing einer größeren Nutzerbasis auf komfortablen Weg zur Verfügung stellen.

Wie weit ist Clang? Grundsätzlich sei gesagt, dass Clang ein junges Projekt ist. Auch wenn zumindest das C-Frontend nur wenige bekannte Bugs hat und seitens der Entwickler als produktiv einsetzbar gekennzeichnet ist, ist hier noch Vorsicht angebracht. Niemand weiß, wie viele verstecke Fehler und Probleme es noch geben mag. Gleiches gilt für ObjC. C++ ist noch in sehr aktiver Entwicklung, es ist noch nicht fertiggestellt, unterstützt aber bereits eine ausreichend große Untermenge der Sprache um LLVM und Clang selbst zu übersetzen. Ein weiterer Hintergedanke hinter dem Import ist daher auch, den Entwicklern der LLVM und Clang eine größere Testcommunity zu geben.

Die E-Mail:
Code:
  Dear current@                                                                 
                                                                                
  On June 9th, we are importing clang/LLVM into FreeBSD HEAD. We are going      
  to import clang/LLVM sources and put those into contrib/llvm (~45MB) and      
  the build infrastructure for it (lib/clang and usr.bin/clang). There's        
  also a small patch to hook it into the build. This patch is attached for      
  review or available at (stripped from mergeinfo):                             
                                                                                
                                                                                
        http://lev.vlakno.cz/~rdivacky/clangbsd-import.patch                    
                                                                                
                                                                                
  Clang will be enabled to be built on amd64/i386/ppc by default and disabled   
  everywhere else. The selected clang/LLVM revision is r104832. Clang will      
  be installed as "clang" so it should not interfere with anything. There's     
  a switch (WITH_CLANG and WITHOUT_CLANG) that alters whether clang will        
  be built or not.                                                              
                                                                                
  We plan to update clang/LLVM "often" as bugs are being found/fixed.           
                                                                                
  From the point of view of a user nothing changes except one more application  
  will be installed after the next buildworld/installworld.                     
                                                                                
  The next plan is to gradually start integrating the necessary changes to      
  enable buildworld with clang but this is pending some more discussion.        
                                                                                
                                                                                
  Roman Divacky
 
Interessant dazu ist vllt. noch, dass Apple auf der WWDC in der LLVM/Xcode4-Session angekündigt hat, GCC 4.2 nicht weiter zu pflegen. Also keine Bugfixes etc. mehr. Xcode 4 kommt und nutzt ebenfalls standardmäßig LLVM mit Clang(++). Die Nutzung von GCC muss explizit aktiviert werden.
 
Das war zu erwarten. Apple steckt seit Jahren Geld in LLVM (oder Chris Lattner). Ich glaube nicht, dass es ohne Apple so weit gekommen wäre.
 
Dazu kann ich nur... MEINE FRESSE! sagen. Ich hätte nicht damit gerechnet, dass das noch in die 9er reingehen soll. Da ich aus der Schlacht bei SMP gelernt habe, werde ich wohl einen Bogen um -CURRENT machen, bis sich alles ein wenig stabilisiert.
 
Wieso einen Bogen um -CURRENT machen und wieso warten, bis es stabilisiert ist? Wie schon gesagt wurde und ich ganz oben auch schon schrieb, ist LLVM/Clang bis auf weiteres (d.h. auf jeden Fall noch den ganzen FreeBSD 9 Zyklus durch) ein rein optionaler Systembestandteil. Der einzige Unterschied zu zuvor ist, dass du ein /usr/bin/clang und ein /usr/bin/clang++ hast. Sonst nichts. Es ist im Übrigen bisher weder diskutiert noch entschieden worden, GCC durch Clang zu ersetzen. Und weder die Diskussion noch das wirkliche Ersetzen wird man so schnell beginnen. FreeBSD 10 wäre der früheste Termin, vielleicht auch FreeBSD 11 oder noch später.

Das Apple den GCC nun in den Wind schießt ist, wie Kamikaze sagte, eine logische Entscheidung. Ich hätte aber nicht gedacht, dass sie es so früh machen. Allerdings kommt es FreeBSD natürlich entgegen, führt es doch dazu, dass LLVM / Clang eine breitere Testbasis bekommen. :)
 
Wenn ich mich recht entsinne hat Lattner 2000 die erste Version veröffentlicht und Apple schießt seit 2003 Geld in das Projekt. Seit dem sind 7 Jahre vergangen, eine lange Zeit in der Software Entwicklung.

Ich würde also sagen, sie haben eher sehr lange gewartet. Ich denke Boost war eine wichtige Marke zur Beurteilung der Reife von Clang++.
 
Wenn es erstmal optional bleibt, dann haben wir in der Tat noch etwas Ruhe (zum Glück!). Mal schauen wie sich das entwickelt.
 
Was ich spannend fände wäre ob clang gcc bauen kann und ob der dann schneller ist :rolleyes:

Ne im ernst, das wäre schon wichtig wenn man gcc aus der Base (irgendwann mal) entfernen möchte, weil es wird in 100 Jahren bestimmt noch Ports geben, die das brauchen und Leute die keine Pakete wollen…
 
Solange es die GPL gibt, wird's auch noch GCC geben und somit auch Projekte die sich auch nur damit kompilieren lassen. GCC hört ja mit der Weiterentwicklung nicht auf. Nur clangs/LLVMs modernes Design gibt einen Vorsprung gegenüber GCC. Aber der Druck auf GCC wächst ja auch zunehmend.

Gegen den aktuellen GCC verliert clang ja noch, was die Performance des Codes angeht. Ich denke LLVM wird sich eher "von hinten" in die GNU/GPL-Gemeinde einschleichen, und so vllt. auch clang. Viele "Sprachen" nutzen jetzt schon LLVM, um dessen Architektur und Möglichkeiten zu nutzen. So ist gerade für viele Skriptsprachen der JiT-Compiler interessant. Man bekommt ihn ja quasi "geschenkt".

Python ist bei, Mono ist bei, Perl ist bei, eine PHP-Implementierung ist bei, Ruby ist bei.

Das sind schon mal gute Vertreter.
 
Also LLVM scheint ja jetzt kurz vor dem Durchbruch zu sein.

Er lässt sich nun auch gegen sich selbst kompilieren (Bootstrapping) und er kompiliert nun auch Qt und WebKit und soll bald auch KDE kompilieren können. Vor kurzem ist Version 2.9 erschienen.

Hier ein paar interessante News:
-----
Clang kompiliert funktionierenden Linux-Kernel - http://www.golem.de/1010/78935.html
LLVM 2.9 Release - http://www.golem.de/1104/82636.html
Clang kompiliert Qt und Webkit - http://www.golem.de/1104/82748.html
 
Sich selbst, samt LLVM kann clang schon eine ganze Weile kompilieren, das kam nicht erst mit 2.9.

Jetzt musst nur noch C++0x Support fertig werden.

Was mich bei LLVM/Clang auch besonders freut ist, dass der normale Sourcecode problemlos mit VC++ unter Windows kompiliert und man damit eine lauffähige .exe erstellen kann. Hat zwar noch Bugs, aber man sieht, dass daran gearbeitet wird und Windows nicht vollkommen außen vor gelassen wird.

Weiterhin müssen sie das neue Maschinencode-Generator-Backend noch etwas optimieren. Die Idee dahinter ist super, nur die Performance ist noch etwas ausbaufähig.
 
Es benötigt auch noch weiterer Backends. FreeBSD 9 wird Clang als optionalen Compiler für i386, amd64 und ARM mit ausliefern. Für SPARC64, MIPS, PPC und PPC64 kann er optional gebaut werden, wird aber per Default nicht mit ausgeliefert. Die Codegenerierung ist da einfach noch zu schlecht, es kommt nur selten etwas brauchbares bei raus. Aber wie gesagt, FreeBSDs Standardcompiler kann Clang eh frühestens mit Version 10 werden und die ist noch mehr als zwei Jahre in der Zukunft. Bis dahin werden noch viele Zeilen Code geschrieben werden. :)
 
Zurück
Oben