Jądro Linux może być kompilowane z użyciem LLVM/Clang

Jądro Linux może być kompilowane z użyciem LLVM/Clang

przez -
16 719
LLVM

Na konferencji LinuxCon North America, która odbyła się w dniach 16 – 18 września 2013 roku, Behan Webster przedstawił obecne prace nad projektem LLVMLinux. Chodzi mianowicie o umożliwienie pełnej i bez błędów kompilacji jądra Linux z użyciem LLVM i Clang. Owe narzędzia są wykorzystywane m.in. przez Apple, nVidia, Intel, Google, a nawet Debiana. Dodatkowo LLVM 3.3 i Clang 3.3, jako jedne z pierwszych narzędzi obsługiwały w pełni standard C++11.

Oto najważniejsze punkty z prezentacji:

  • LLVM 3.3 i Clang 3.3 posiadają już odpowiednie wsparcie, aczkolwiek zintegrowany asembler Clang jest nadal wyłączony
  • LLVM 3.3 i Clang 3.3 potrafią już kompilować jądro Linux, jednakże nadal potrzebne jest dodanie kilku łatek spoza głównego drzewa jądra Linux.
  • Deweloperzy LLVM na bieżąco obserwują zmiany w jądrze, dzięki czemu mogą cały czas wprowadzać zmiany w kodzie
  • Można pomóc w rozwoju, poprzez testowanie łatek, zgłaszanie błędów, pracą nad nowymi funkcjami lub zgłoszeniem własnych poprawek

  • o_O

    I jest jakiś realny zysk z tego, czy tak sztuka dla sztuki?

    • Firmy zajmujące się ARM za to płacą.

    • Mateusz

      poza takim, że nie trzeba mieć kompilatora GNU? :D

    • pijaczek

      Clang potrafi wypluć wydajniejszy kod niż GCC więc zysk to większa wydajność jądra oraz kompilacja trwa mniej niż w GCC więc zmniejszenie czasu kompilacji. Główny minus Clanga nie jest w jądrze istotny (brak wsparcia dla standardu OpenMP), bo i tak nie może z niego skorzystać.

    • To czemu na Phoronix nie mogą tej wydajności udowodnić?

    • pijaczek

      Może dlatego, że używają -O3 czyli maksymalnego poziomu optymalizacji GCC też dla Clang, gdzie masz do -O4, a resztę optymalizacji zarówno w GCC i Clang trzeba włączyć ręcznie, a na Phoronix wydaje się, że nie mają pojęcia o żadnym z tych kompilatorów (brak optymalizacji Interprocedural optimization, Profile-Guided Optimization, Link Time Optimization… i masy innych (brak wektoryzacji przykładowo)).
      Po prostu nie testują jakie możliwości maja te kompilatory w rękach programisty, który wyciśnie z nich wszystko, a jaki kod wypluwają w rękach laika, który nie do końca wie co robi.

    • krzabr

      Czyżby kolejna sytuacja kiedy to phoronix ma złą metodologię testów ?

      Druga sprawa jest taka że GCC od lat 90tych był monopolistą wśród wolnych kompilatorów C, stąd konkurencja korzystnie wpłynie na oba produkty.

    • To zależy, czy ktoś będzie chciał w GCC inwestować. Na razie duża część pieniędzy idzie na LLVM.

    • OpenMP ostatnio dodał Intel.

    • pijaczek

      Intel dodał brancha, ale zanim wejdzie to do trunka to jeszcze droga daleka, bo obecnie wspierane z tego co pamiętam jest tylko Linux, MacOS i tylko x86_64… a to trochę mało (mimo wszystko przydałby się Windows i wsparcie dla ARM/PowerPC zanim wejdzie do trunka).

  • Pingback: Jądro Linux 3.15 z obsługą miksowanego EFI oraz wieloma nowościami | OSWorld.pl()