Jak donosi portal OSnews.com, Clang skompilował sprawnie działające jądro Linuksa ze sprawnie działającym stosem sieciowym, sterownikami oraz SMP. Na tym jądrze również prawidłowo zadziałał serwer X-ów.
Informacja ta jest tym ciekawsza, że tak skompilowane jądro Linuksa jest samowystarczalne, a wszystkie główne podsystemy i urządzenia działają sprawnie.
Za maszynę testową służył Macbook 5.1 z zainstalowanym Debianem. Jądro to przeszło pomyślnie testy również na drugiej maszynie testowej – Atom, microATX desktop box, na której nie testowano środowiska graficznego (na tej testowej maszynie nie zainstalowanego).
Wydarzenie to pokazuje dynamikę rozwoju tego kompilatora, który ledwie 9 miesięcy temu osiągnął stadium self-hosted, a teraz zaczyna być realną alternatywą dla GCC.


Świetna wiadomość, gratulacje! Nie spodziewałem się aż takiego tempa, ale czułem, że sobie bardzo dobrze radzą. Teraz jeszcze interesuje mnie użycie LLVM w rozwoju Gallium3D – ten tandem budzi moje duże oczekiwania.
llvmpipe z Gallium3D działa już dobrze. Natomiast są ciekawe plany zrobienia z LLVM kompilatora shaderów dla Mesy (do poczytania na Phoronix lub mesa-devel).
LLVM dokładnie do tego bywa wykorzystywany w MacOSX. Więc droga jak najbardziej słuszna…
LLVM kompiluje już całą rodzine bsd , kompiluje kolejne osy i bardzo dobrze.
Dziwi mnie tylko że haiku nie przygotowało fontendu do kompilowania gcc2
Witold: w MOX LLVM działa chyba tak jak llvmpile z Gallium3D. Nie optymalizuje shaderów w sterownikach które mają je w sprzęcie (sterowniki producentów mają zazwyczaj swoje własne optymalizatory).
krzabr: między wódkę a zakąskę też trzeba umieć z sensem…
Wiem że to by była ryzykowna i czasochłonna decyzja ale lepiej zmieniać kilka modułów niż męczyć się z modyfikowaniem gigantycznego kompilatora.
Krzbr: widzę, że piszesz komentarze w tempie działek Sztukasa choć nie do końca tak celnie. Zatem wyjaśniam co napisałem powyżej: po kiego licha wcinasz się w dyskusję nt. optymalizacji shaderów w sterownikach graficznych z jakimś Haiku?
Czy tylko ja mam tu wrażenie, że krzabr jest botem? 😉
Eeeee tam. To po prostu bsdziarz. Takie schorzenie.
krzabr: kaliber kompilował Haiku za pomocą Clang;)
bies:
„optymalizacji shaderów w sterownikach graficznych z jakimś Haiku?”
O czym Ty człowieku piszesz bo ja nigdzie nic o shaderach w Haiku nie widzę oprócz tych głupot napisanych przez Ciebie?
I jak wyszły wyniki takiej kompilacji ? Wszystko sprawnie działało ?
Co do haiku to jestem ciekawy , co do GCC – po prostu nie lubie wielgachnych programów w których już nikt nie wie co jest w jego kodzie pełnym błędów
Działało, a co o wydajności to było trochę dziwnie: w jednej kompilacji wydajniej od gcc, w drugiej gorzej. Ale szczegóły to już kaliber.
@krzabr: „ja nie wiem” != „nikt nie wie”
Zapraszam do przeanalizowania różnych kerneli , wtedy jaśniej będzie ci zrozumieć czemu nie lubie kodu spod znaku pingwina , choć nie można powiedzieć że nie mają ciekawych rozwiązań 🙂
HubertB: umiejętność czytania ze zrozumieniem masz na poziomie pięciolatka.
Nareszcie zapowiada się na pogrzeb GCC i tego GNU oszołomstwa 😛 Oby tak dalej, a nastąpi nowa lepsza era linuksa, freebsd i innych systemów.
@konski_pytong: taaa…. a imię jego legion….
Tylko po co? Nie lepiej wysiłek włożyć w rozwój GCC?
Ein Kernel, ein Kompilator, ein Fuhrer?
Te projekty za bardzo się różnią i jak generalnie popieram idee GNU, tak organizacyjnie nie dają rady – tzn. są efekty, ale strasznie powoli. A pozaorganizacyjnie to pewne porównanie Clang i GCC masz tu:
http://en.wikipedia.org/wiki/Clang#Overview
VDSO i BOOT (i inne) nadal muszą być kompilowane gcc więc nie do końca self-hosted, ale miło, że rośnie konkurencja dla gcc.
chyba nie rozumiesz co to jest self-hosted i co to jest jezyk c, a czym sa rozszerzenia.
Tak było przez jakiś czas zanim rozwiązano problemy, wystarczy przeczytać jedną z kolejnych wiadomości na liście dyskusyjnej. GCC nie jest już potrzebne do skompilowania jądra, wystarczy samo LLVM. Potrzebny jest natomiast nadal linker GNU.
Blink : Pomyślano nawet o tym 🙂
http://llvm.org/cmds/llvm-link.html
@krzabr: Jak już to LLVM-ld, ale sporo mu brakuje – obecnie bardziej zabawka niż porządne rozwiązanie.
Ktoś tak nawet wpadł na pomysł wygrzebania linkera z Solarisa, który jest na licencji CDDL.
Wraz ze wzrostem znaczenia clanga/llvm pojawi się cały około kompilatorowy toolchain więc z czasem na pewno się pojawi , nawet bardzo szybko 🙂
@blinkkin
Faktycznie.
Całkiem sprawnie im to poszło..
@janc: Jądro Linuksa dało się skompilować za pomocą LLVM już od jakiegoś czasu. Tylko, że były problemy z uruchomieniem takiego jądra. Zresztą pewnie niedługo będą dostępne wyniki testów obciążeniowych i jakieś nowe krzaczki wyjdą na wierzch.
To raczej norma przy megalitach za których rozwój odpowiada anarchistic development 😀
Właściwie, do czego potrzebna jest alternatywa dla GCC? Pytam czysto obiektywnie
Ja tam nie mam jakoś głęboko ideologicznej postawy, ale np. uważam, że to jak Clang wywala błędy w kodzie jest o wiele fajniejsze od tego jak robi to GCC 😉
Z tego że GCC jest wielką kobyłą pełna błędów i llvm ma inną budowę. *Może też być używany jako vm)
IMO nie chodzi aż o błędy tylko o to, że kod llvm jest napisany bardziej sensownie i są ludzie, którzy chcą sami w tym grzebać. Czy ktoś (nowy) próbował ruszać źródła GCC 4 ? Zastanawiam się czy sami maintainerzy pamiętają co jest tam do czego 😉
@agent_J: akurat jeśli o to chodzi to zaryzykuję twierdzenie, że po zbliżonym okresie zbliżonego intensywnością rozwoju podobnie będzie z LLVM/clang 😉
Reddie – to prawda spójrz co się działo z systemem który postanowił obalić linuxa , a sam poszedł jego drogą – FreeBSD.
Coraz mniej czytelny i jasny , do tego coraz większy i mniej przydatny w zastosowaniach specjalistycznych.
Chyba że ktoś za wczasu clanga sforkuje bądz apple będzie trzymało projekt twardą ręką , ale to również może się źle skończyć….
O! To już fribzdi w środowisku nawiedzonych bsdziarzy nie jest dżezi? To co jest? Trasz, pomocy — co teraz wyznajecie bo Krzabr uprawia jakąś schizmę?
Schizmę? Raczej FreeBSD ewoluuje, co jest normalne, niemniej miały byc 4 wydania na rok, a jest sporo mniej – wersje pełne zanim w pełni dorosną, są porzucane i następuje rozwój nowej gałęzi, mimo, ze pierwotne plany nie zostały do końca zrealizowane i przetestowane. Przez co zdarzają się dziwne niedociągnięcia, jak wywalające się sterowniki, czy problemy z zależnościami – większość bugów jest trywialna i zwykle wystarczy zgłosić i po dniu zaktualizować system.
Po prostu uważam ze FBSD 9 jest coraz trudniejszy do zrozumienia dla zwykłego geeka czy przeglądacza kodu.
Więc porównanie do linuxa jest jak najbardziej słuszne , który już od pewnego czasu jest wielką niejasną kobyłą.
Co do trasza to on w projekcie FBSD robi kawał dobrej roboty i nie widzę powodu aby na niego narzekać , bo szczerze wątpie czy ktoś zna się lepiej na pisaniu osów na tym portalu niż on.
Proszę, nie wywołuj demonów. To się źle kończy. Naprawdę dziwni ludzie czytają te komentarze.
A ja widzę, bo w przerwach między pisaniem FreeBSD wypisuje różne bzdurki na temat tego-systemu-na-gorszej-licencji (i wiele innych też).
@Speaktrap: Oprócz rytuałów związanych z kultem licencyjnym jest też kilka innych powodów. Najprostszy to właśnie brak alternatyw, czyli długoletni monopol GCC.
Czy GNOME i KDE rozwijałyby się tak dynamicznie bez wzajemnej konkurencji? Nawet w przypadku FLOSS, monopole mają swoje ciemne strony – deweloperzy obrastają w piórka itp.
@blinkkin
bardzo celny komentarz… +
ps czy komuś przeszkadzała karma?
trashowi 😉
Nic do niego nie mam, po prostu przypomniało mi się, że każdy jego post niezależnie od zawartości był wytrwale minusowany.
Nie każdy. I nawet gdy, to często służyło to uwiarygodnieniu jego bzdurek („a bo linuksiarzy prawda w oczy kole…”)
Trasz ma wielką wiedzę n/t pisania osów , gorzej z jego ciągotkami ideologicznymi 🙂
@krzabr: no właśnie nie bardzo tą wiedzą się popisywał. Póki co pokazał, że bardzo dobrze zna BSD, wie coś tam o bezpieczeństwie (gorzej z gradacją zagrożeń), słabo orientuje się w działaniu zaawansowanych sieci komputerowych i beznadziejnie potrafi określać trendy w rozwoju rynku IT (jak jego wieszczenie o upadku i niepowodzeniu Androida). Dodałbym do tego właśnie zboczenie ideologiczne i agresywny styl wypowiedzi nawet na tematy w jakich orientuje się słabo. Tak mniej więcej wygląda trasz w moich oczach. Nie to, że jestem jakimś tam hardcore- raczej prostym adminem ogarniającym niewiele ponad obsługę klawiaturki 😉
Podsumuję- nie zawsze osoba która świetnie pisze sterownik do obsługi macierzy raid i zna się bardzo dobrze na tym kawałku technologi- jest równie dobrym architektem systemu- tym bardziej wiarygodnym autorytetem opiniotwórczym w tej dziedzinie. Co więcej- prawie na pewno nie jest.
Nieprawda. GCC ma konkurencję: ICC na X86, kompilator od ARM, MS VC++ na Windows. Jakieś wynalazki z AIX i Solka. LLVM to tylko kolejny kompilator próbujący konkurować z GCC.
Z czego jedynym wielofunkcyjnym kompilatorem z całym toolchainem i fontendami jest narazie tylko LLVM.
Reszta to kompilatory mające już od dawna własne nisze.
Chyba wszystkie wymienione przeze mnie kompilatory mają cały toolchain (nie jestem pewny co do ARM ale chyba nie używa się GNU ld). Wiesz co co jest toolchain w ogóle?
@bies Tylko, że żaden z wymienionych przez ciebie kompilatorów nie jest otwarto źródłowy. Ktoś zapyta, a co to za problem?
Otóż w przypadku kompilacji kodu na licencji GPL, nie jest możliwa legalna dystrybucja binarek – biblioteki uruchomieniowe tych kompilatorów gryzą się z GPL. Tak, więc nigdy nie była to realna konkurencja.
Primo: czy się gryzą? Popatrz np. na Virtualdub (GPL) i czym jest kompilowany. Secundo: nie masz racji, na Win32/Win64 podstawową konkurencją dla gcc jest właśnie VC++. Podobnie z innymi platformami.
ICC ma kłopoty na x86 nie-Intela, MSVC++ ma kłopoty z C (np. C99), MSVC i „klasyczne” cc działają tylko na jednej platformie programowej, ICC i ARM na jednej platformie sprzętowej. GCC natomiast działa praktycznie wszędzie.
Ale ja nie twierdzę, że to jest konkurencja lepsza od GCC (wręcz przeciwnie, uważam, że jest gorsza). Twierdzę tylko, że to jest konkurencja. Bo dany program nie kompilujesz na ,,praktycznie wszystko” tylko pewną platformę sprzętowo-systemową.
Chodzi mi dokładnie o to, że LLVM jest pierwszą realną konkurencją GCC (TCC i podobne pomijam) jeśli chodzi o walkę o deweloperów FOSS. Ale jeśli chodzi o kompilatory jako takie to do konkurencji wnosi niewiele.
odnośnie konkurencji wśród kompilatorów – sprawdziłem sobie wydajność wygenerowanych aplikacji z kodu wygenerowanego przez gcc4.5, msvc9 i msvc10,
kod:
http://pastebin.pl/29479
kod jest przypadkowy, znalazłem go na innym portalu(co ciekawe bies go tam optymalizował). Dodałem tylko czasomierz.
kompilowanie:
gcc – g++.exe -O3 -march=native -o main_gcc main.cpp
msvc9 – cl /EHsc /Ox /arch:SSE2 /Femain_vc9 main.cpp
msvc10- cl /EHsc /Ox /arch:SSE2 /Femain_vc10 main.cpp
a wyniki na moim amd64x2 są takie:
vc9 – 8.968s
vc10 – 7.250s
gcc4.5 – 8.375s
*z kodu wygenerowanego przez = z kodu skompilowanego przez
Jeśli testowałeś wersje 32-bit to dodaj jeszcze do gcc flagi: -mfpmath=sse -msse2 inaczej nie będzie użyte SSE a FPU.
1)Toolchain to w moim rozumieniu cały zestaw narzędzi potrzebnych do kompilacji , jak debugery , linker , disassembler itd.
2)GCC kompilować może na niemal wszystko , jego zasięg nie ogranicza się do 1 platformy : sprzętowej , systemowej etc.
I na tej plaszczyźnie miał monopol na lata , do czasów około 2011 roku.
3)Konkurencja przyda się obu programom , a gcc może wyłącznie zyskać , chociażby przez małpowanie pomysłów od LLVM/CLANG czy zwykłe włączanie kodu
moj błąd, wynik gcc z mfpmath=sse -msse2 dało mi średnio 7.382s – wyniki wiec bardzo zbliżone.
Ciekawe jest ten wynik testu (pomijając to, że jeden test nie może być pełnym potwierdzeniem danej tezy). Oznaczałoby, że kopmilator z VC++ 10 znów zbliżył się do gcc (jak za czasów VC++2k3).
@Speaktrap: Chociażby z powodu licencji…
Chodzi o to żeby apple mogło bez przeszkód żerować na cudzej pracy i zwalczać wolne oprogramowanie, tak jak to robi obecnie.
Widocznie ludzie wolą być wykorzystywani przez Apple w przypadku LLVM, niż przez IBM w przypadku GCC. Chociaż, jeśli chodzi o GCC to wolontariat tam nie istnieje – został skutecznie wytępiony przez bardzo „przyjazne” zasady panujące wokół tego projektu. Ciągle jednak pokutuje mit, że FSF sprawuje jakąś tam władzę nad GCC – swojego czasu próbowałem tą bajkę rozwiać.
A lojalki w gplu za które devovie nie dostają nic to nie pasożytowanie ?
Teraz zacznie się prawdziwy jęk Gnu-Krzyżowców kiedy GNU dostaje mocno po tyłku , ale cóż utrata urojeń boli 😀
No ba. Przecież ci, którzy nie chcą, to naziści którzy szkodzą całemu open source 😉
Oh no znowu flejm o GPL 😀
Na marginesie interesuje mnie pewna kwestia.
Jakby mi sie zachcialo sforkowac jakis projekt flagowy gnu , powiedzmy emacsa. I zaczal go linkowac z czyms cos nie jest GPLem i jest zakazane linkowanie z nim załóżmy własnym kodem na epl.
Potem wydawał binarki i źródełka napisane przeze mnie na własnej nie podobnej do GPL licencji a GPLowską część na GPL , to co mi za to grozi w praktyce prócz wpisania na stronce gpl-violations ?
Oczywiście pierwotny kod wydany na czystym GPL ;D
@krzabr: grozi ci +10 do lansu za shakowanie GPLa i szacun w środowisku podobnych ci frustratów, szczególnie jarka. Warto podjąć się zadania.
@krzabr: aha, i żeby nie było offtopic: uważam LLVM za mający dużo większy potencjał techniczny i lepszy licencyjnie produkt.
Niby w czym ta frustracja ? W tym że tworząc projekt na weak-copyleft okazuje się prawnie niemożliwe zlinkowanie z GPLem ?
To raczej smutna rzeczywistość 🙂
Ale starczy tego marudzenia.
Co do llvm/clanga nie zdziwie się jak zaczną go absorbować inne wielkie projekty jak VS czy ICC , czy Sun Studio.
A;e to dobrze dla takiego projektu.
http://llvm.org/docs/GettingStartedVS.html
@krzabr: w praktyce grozi ci za to pozew, o ile komuś będzie się chciało.
Bardzo mało prawdopodobne 🙂 Głównie mi chodzi o to jak sąd interpretuje dzieło pochodne i linkowanie z GPL.
Bo przyznam że mam kilka gplowskich projektów na oku , zwłaszcza bibliotek 🙂
W USA i Niemczech zinterpretował tak, jak Stallman.
A w Polsce to zależy na jakiego sędziego/biegłego trafisz, u nas precedensy nie obowiązują (co ma swoje dobre i złe strony). Ale tak poza tym, to żaden szanujący się projekt takiego „trefnego” kodu od ciebie nie weźmie 😉
@billion: Zapomniałeś kto sponsoruje rozwój LLVM’a?
No właśnie wielkie firmy oddają swoją pracę konkurencji 😀
Jak coś jest dobre to znajdzie sponsora niezależnie od licencji 🙂
Polecam zerknięcie na komentarze na LWN, a w szczególności na komentarz Molnara w tym wątku. Jeżeli ktoś to zweryfikuje, to będzie niezły lol. 😉
napisz coś więcej bo chyba został usunięty
Moja wina. Powinienem był wskazać jakim nickiem na LWN się posługuje (mingo), ale jeżeli ktokolwiek zna jego imię (Ingo) to na pewno sobie poradził.