Nowa wersja LLVM 9.0 została już wydana i to są jej nowości

LLVM

Po sześciu miesiącach rozwoju zaprezentowano uruchomienie nowej wersji projektu LLVM 9.0, który jest zestawem narzędzi kompatybilnym z GCC (kompilatory, optymalizatory i generatory kodu), który kompiluje programy w pośredni kod bitowy instrukcji wirtualnych podobnych do RISC (maszyna wirtualna niskiego poziomu z wielopoziomowym systemem optymalizacji).

Jest przeznaczony do optymalizacji czasu kompilacji, czas wiązania, czas wykonania w dowolnym języku programowania, który użytkownik chce zdefiniować. Pierwotnie zaimplementowany do kompilacji C i C ++, Język niezależny od języka LLVM i sukces projektu zrodziły szeroką gamę języków, w tym Objective-C, Fortran, Ada, Haskell, kod bajtowy Java, Python, Ruby, ActionScript, GLSL, Clang, Rust, Gambas i inne.

Wygenerowany pseudokod można przekształcić za pomocą kompilatora JIT na instrukcje maszynowe bezpośrednio w czasie wykonywania programu.

Główne nowe funkcje LLVM 9.0

Wśród nowych funkcji LLVM 9.0 znaleźć wsparcie, aby usunąć tag rozwoju eksperymentalnego z platformy RISC-V, Wsparcie C ++ dla OpenCL.

To kolejna nowość wyróżnia się możliwością podzielenia programu na dynamicznie ładowane części w LLD oraz implementację konstrukcji »asm goto» używanej w kodzie jądra Linuksa.

Ponadto podkreślono również, że Libc ++ przybył z obsługą WASI (WebAssembly System Interface) i LLD wprowadziły początkową obsługę dynamicznego wiązania WebAssembly. Dodano implementację specyficznego dla GCC wyrażenia »asm goto», które umożliwia przełączanie się ze złożonego bloku wbudowanego na znacznik w kodzie C.

Ta funkcja jest niezbędna do zbudowania jądra Linuksa w trybie »CONFIG_JUMP_LABEL = y« przy użyciu Clang na systemach x86_64. Biorąc pod uwagę zmiany wprowadzone w poprzednich wersjach, jądro Linuksa można teraz zbudować w Clang dla architektury x86_64 (poprzednio było obsługiwane tylko dla architektur arm, aarch64, ppc32, ppc64le i mips.

Dodano obsługę instrukcji WIT (Branch Target Indicator) i PAC (Pointer Authentication Code) dla architektury AArch64. Znacznie ulepszona obsługa platform MIPS, RISC-V i PowerPC.

Ponadto, Projekty Android i ChromeOS przestawiły się już na używanie Clang do budowania jądra a Google testuje Clang jako podstawowe jądra platformy kompilacji dla swoich działających systemów Linux.

W przyszłości podczas procesu kompilacji jądra będzie można korzystać z innych komponentów LLVM, w tym LLD, llvm-objcopy, llvm-ar, llvm-nm i llvm-objdump.

Do linkera LLD dodano eksperymentalną funkcję partycji, która umożliwia podzielenie programu na wiele części, z których każda jest umieszczona w osobnym pliku ELF. Ta funkcja umożliwia uruchomienie głównej części programu, która w razie potrzeby załaduje pozostałe komponenty procesu (na przykład możesz wybrać wbudowaną przeglądarkę PDF jako osobny plik, który zostanie pobrany tylko wtedy, gdy użytkownik otwiera plik PDF).

Z drugiej strony wyróżniają się również liczne ulepszenia backendów. dla architektur X86, AArch64, ARM, SystemZ, MIPS, AMDGPU i PowerPC.

Na przykład dodano obsługę instrukcji SVE2 i MTE (Memory Tagging Extensions) dla architektury AArch64, obsługę architektury Armv8.1-M i architektury MVE dodano do zaplecza ARM.

W przypadku AMDGPU dodano obsługę architektury GFX10 (Navi), domyślnie włączone jest wywoływanie funkcji i przekazywanie aktywowanego połączonego DPP (Data Primitives-Parallel).

Debugger LLDB wprowadził kolorowe podświetlanie śladów wstecz; dodano obsługę bloków DWARF4 debug_types i DWARF5 debug_info;

Narzędzia llvm-objcopy i llvm-strip dodały obsługę plików wykonywalnych i obiektów w formacie COFF.

Backend dla architektury RISC-V jest ustabilizowany, który nie jest już pozycjonowany jako eksperymentalny i jest tworzony domyślnie. Pełna obsługa generowania kodu dla wariantów zestawu instrukcji RV32I i RV64I z rozszerzeniami MAFDC.

źródło: http://releases.llvm.org/


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: AB Internet Networks 2008 SL
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.