Clang kompiluje jądro Linuksa

  • Home
  • /
  • Blog
  • /
  • Clang kompiluje jądro Linuksa

Data: 27 października, 2010

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.

Podobne wpisy

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone


  1. kocio pisze:

    Ś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.

    1. bies pisze:

      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).

      1. Witold Bołt pisze:

        LLVM dokładnie do tego bywa wykorzystywany w MacOSX. Więc droga jak najbardziej słuszna…

        1. krzabr pisze:

          LLVM kompiluje już całą rodzine bsd , kompiluje kolejne osy i bardzo dobrze.

          Dziwi mnie tylko że haiku nie przygotowało fontendu do kompilowania gcc2

        2. bies pisze:

          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…

        3. krzabr pisze:

          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.

        4. bies pisze:

          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?

        5. el.pescado pisze:

          Czy tylko ja mam tu wrażenie, że krzabr jest botem? 😉

        6. bies pisze:

          Eeeee tam. To po prostu bsdziarz. Takie schorzenie.

        7. HubertB pisze:

          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?

        8. krzabr pisze:

          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

        9. HubertB pisze:

          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.

        10. el.pescado pisze:

          @krzabr: „ja nie wiem” != „nikt nie wie”

        11. krzabr pisze:

          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ń 🙂

        12. bies pisze:

          HubertB: umiejętność czytania ze zrozumieniem masz na poziomie pięciolatka.

  2. konski_pytong pisze:

    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.

    1. Tomasz Woźniak pisze:

      @konski_pytong: taaa…. a imię jego legion….

  3. esio pisze:

    Tylko po co? Nie lepiej wysiłek włożyć w rozwój GCC?

    1. Ein Kernel, ein Kompilator, ein Fuhrer?

    2. kocio pisze:

      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

  4. janc pisze:

    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.

    1. Michal pisze:

      chyba nie rozumiesz co to jest self-hosted i co to jest jezyk c, a czym sa rozszerzenia.

    2. blinkkin pisze:

      @janc: 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.

      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.

      1. krzabr pisze:

        Blink : Pomyślano nawet o tym 🙂

        http://llvm.org/cmds/llvm-link.html

        1. blinkkin pisze:

          @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.

        2. krzabr pisze:

          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 🙂

      2. janc pisze:

        @blinkkin
        Faktycznie.
        Całkiem sprawnie im to poszło..

        1. blinkkin pisze:

          @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.

        2. krzabr pisze:

          To raczej norma przy megalitach za których rozwój odpowiada anarchistic development 😀

  5. Speaktrap pisze:

    Właściwie, do czego potrzebna jest alternatywa dla GCC? Pytam czysto obiektywnie

    1. Mikoskay pisze:

      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 😉

    2. krzabr pisze:

      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)

      1. agent_J pisze:

        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 😉

        1. Reddie pisze:

          @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 😉

        2. krzabr pisze:

          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ć….

        3. bies pisze:

          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ę?

        4. konski_pytong pisze:

          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.

        5. krzabr pisze:

          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.

        6. Tomasz Woźniak pisze:

          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.

        7. Reddie pisze:

          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

          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ż).

    3. blinkkin pisze:

      @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.

      1. marketingowiec pisze:

        @blinkkin

        bardzo celny komentarz… +

        ps czy komuś przeszkadzała karma?

        1. bobycob pisze:

          Nic do niego nie mam, po prostu przypomniało mi się, że każdy jego post niezależnie od zawartości był wytrwale minusowany.

        2. Reddie pisze:

          Nie każdy. I nawet gdy, to często służyło to uwiarygodnieniu jego bzdurek („a bo linuksiarzy prawda w oczy kole…”)

        3. krzabr pisze:

          Trasz ma wielką wiedzę n/t pisania osów , gorzej z jego ciągotkami ideologicznymi 🙂

        4. Tomasz Woźniak pisze:

          @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.

      2. bies pisze:

        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.

        1. krzabr pisze:

          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.

        2. bies pisze:

          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?

        3. blinkkin pisze:

          @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.

        4. bies pisze:

          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.

        5. el.pescado pisze:

          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.

        6. bies pisze:

          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.

        7. _qaz7 pisze:

          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

        8. _qaz7 pisze:

          *z kodu wygenerowanego przez = z kodu skompilowanego przez

        9. bies pisze:

          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.

        10. krzabr pisze:

          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

        11. _qaz7 pisze:

          moj błąd, wynik gcc z mfpmath=sse -msse2 dało mi średnio 7.382s – wyniki wiec bardzo zbliżone.

        12. bies pisze:

          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).

  6. masterx pisze:

    @Speaktrap: Chociażby z powodu licencji…

    1. billion pisze:

      Chodzi o to żeby apple mogło bez przeszkód żerować na cudzej pracy i zwalczać wolne oprogramowanie, tak jak to robi obecnie.

      1. blinkkin pisze:

        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ć.

        1. krzabr pisze:

          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 😀

        2. Reddie pisze:

          Widocznie ludzie wolą być wykorzystywani przez Apple w przypadku LLVM, niż przez IBM w przypadku GCC.

          No ba. Przecież ci, którzy nie chcą, to naziści którzy szkodzą całemu open source 😉

        3. krzabr pisze:

          Oh no znowu flejm o GPL 😀

        4. krzabr pisze:

          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

        5. Poldek pisze:

          @krzabr: grozi ci +10 do lansu za shakowanie GPLa i szacun w środowisku podobnych ci frustratów, szczególnie jarka. Warto podjąć się zadania.

        6. Poldek pisze:

          @krzabr: aha, i żeby nie było offtopic: uważam LLVM za mający dużo większy potencjał techniczny i lepszy licencyjnie produkt.

        7. krzabr pisze:

          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

        8. Reddie pisze:

          @krzabr: w praktyce grozi ci za to pozew, o ile komuś będzie się chciało.

        9. krzabr pisze:

          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 🙂

        10. Reddie pisze:

          Głównie mi chodzi o to jak sąd interpretuje dzieło pochodne i linkowanie z GPL

          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 😉

      2. badyl pisze:

        @billion: Zapomniałeś kto sponsoruje rozwój LLVM’a?

        1. krzabr pisze:

          No właśnie wielkie firmy oddają swoją pracę konkurencji 😀

          Jak coś jest dobre to znajdzie sponsora niezależnie od licencji 🙂

  7. przemoc pisze:

    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. 😉

    1. bobycob pisze:

      napisz coś więcej bo chyba został usunięty

      1. przemoc pisze:

        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ł.

        Btw, a few days ago we found out that the jump label support code is broken in GCC, it messes up the stack offset which crashes the kernel.

        So LLVM might be the first compiler on the planet to have working GCC jump label support 😉

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

Newsletter OSnews raz w tygodniu. Bez reklam.