LLVM 3.0

LLVM 3.0

przez -
1 452
LLVM

Wydano LLVM 3.0 razem z językiem programowania Clang. LLVM jest kompilatorem napisanym w C++, który został zaprojektowany do optymalizacji compile-time, link-time, run-time, i “idle-time” programów napisanych w dowolnych językach programowania. Clang to frontend kompilatora dla języków C, C++ oraz Objective-C, stworzony w ramach projektu LLVM, który jest używany jako back-end (generator kodu natywnego i optymalizator). Celem projektu jest stworzenie alternatywy dla kompilatora z projektu GCC. Prace nad projektami sponsorowane są przez Apple, a wszystko wydawane jest na licencji BSD.

Kompilator Clang C/C++ w LLVM 3.0:

  • Usprawnione wsparcie C++ w budowaniu oprogramowania, szczególnie stabilność i diagnostyka błędów w C++
  • Ulepszone wsparcie C++0x, jednakże nadal niepełne
  • Wsparcie kilku funkcjonalności standardu C1x
  • Ulepszone wsparcie Objective-C

DragonEgg dla LLVM 3.0:

  • Pełne wsparcie GCC 4.6 w celu zastąpienia optymalizatorów GCC z LLVM
  • DragonEgg nie wymaga więcej łatek GCC, jednakże wtyczka ta może być bez problemu ładowana z wersjami GCC 4.5/GCC 4.6
  • Dodano opcje, które pozwalają używać optymalizatorów zarówno GCC, jak i LLVM. Opcja ta pozwala dostarczyć maksymalną wydajność, jednakże jest nadal eksperymentalna
  • Frontend DragonEgg dla GCC w pełni wspiera języki programowania C, C++, Fortran, i ADA. Dodano także częściowe wsparcie dla Java, Objective-C, Objective-C++, i Google Go.

Inne zmiany LLVM:

  • Standardowa biblioteka C++ libc++ i compiler_rt są od teraz licencjonowane na zasadach MIT i UIUC
  • Standardowa biblioteka LLVM C++ będzie oczekiwana, jako domyślna implementacja STL we FreeBSD 10.0
  • VMKit – Wirtualna Maszyna Javy dla LLVM od teraz wspiera pre-compilation, własne metody wirtualne, lepsze wsparcie wcięcia i nowy model wyjątków
  • LLVM IR posiada pełne wsparcie dla atomowych operacji na pamięci, które są wymagane do wspierania C++11 (C++0x) and C1x
  • Nowy “greedy” alokator rejestrów zastąpił linear-scan alokator rejestrów
  • Pomniejsze usprawnienia dla backendu MIPS
  • Ulepszono nieznacznie architekturę backendu MIPS do LLVM
  • AVX – Advanced Vector Extensions posiadają pełne wsparcie w LLVM i są używane w procesorach AMD Bulldozer oraz Intel Sandy Bridge
  • Assembler/Diassebler posiada nowy zestaw instrukcji dla Intel Atom, Intel Ivy Bridge, SSE4a/BMI, rdrand i innych
  • Niewielki wzrost wydajności dla SoC ARM Cortex-A9. Ulepszono także wsparcie serii Cortex-M i wydajność kodu ARM NEON

  • joseff

    Narobiło się tych kompilatorów Open64 itp. A i tak GCC(g++) najlepszy :)