LLVM 3.0

LLVM 3.0

    przez -
    1 287
    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 :)