De nieuwe versie van LLVM 9.0 is al uitgebracht en dit is zijn nieuws

LLVM

Na zes maanden ontwikkeling de lancering van de nieuwe versie van het LLVM 9.0-project werd gepresenteerd, wat een GCC-compatibele toolkit is (compilers, optimizers en codegeneratoren), die programma's compileert in een tussenliggende bitcode van RISC-achtige virtuele instructies (een virtuele machine op laag niveau met een optimalisatiesysteem op meerdere niveaus).

Het is ontworpen om de compilatietijd te optimaliseren, de bindingstijd, de uitvoeringstijd in elke programmeertaal die de gebruiker wil definiëren​ Oorspronkelijk geïmplementeerd om C en C ++ te compileren, Het taalonafhankelijke ontwerp van LLVM en het projectsucces hebben een grote verscheidenheid aan talen voortgebracht, waaronder Objective-C, Fortran, Ada, Haskell, Java-bytecode, Python, Ruby, ActionScript, GLSL, Clang, Rust, Gambas en anderen.

De gegenereerde pseudocode kan met behulp van de JIT-compiler direct tijdens de programma-uitvoering in machine-instructies worden omgezet.

Belangrijke nieuwe kenmerken van LLVM 9.0

Een van de nieuwe functies van LLVM 9.0 vond ondersteuning om de tag voor experimentele ontwikkeling van het RISC-V-platform te verwijderen, C ++ ondersteuning voor OpenCL.

Een andere nieuwigheid dat opvalt is de mogelijkheid om het programma op te splitsen in dynamisch geladen delen in LLD en de implementatie van het »asm goto» -construct dat wordt gebruikt in de Linux-kernelcode.

Bovendien wordt ook benadrukt dat Libc ++ werd geleverd met ondersteuning voor WASI (WebAssembly System Interface), en LLD introduceerde initiële ondersteuning voor dynamische WebAssembly-binding. De implementatie van de GCC-specifieke uitdrukking »asm goto» toegevoegd, waarmee je kunt overschakelen van een samengesteld inline-blok naar een tag in C-code.

Deze functie is nodig om de Linux-kernel in »CONFIG_JUMP_LABEL = y« -modus te bouwen met Clang op x86_64-systemen. Gezien de wijzigingen die in vorige versies zijn toegevoegd, kan de Linux-kernel nu in Clang worden gebouwd voor de x86_64-architectuur (voorheen werd het alleen ondersteund voor arm-, aarch64-, ppc32-, ppc64le- en mips-architecturen.

Ondersteuning voor BTI-instructies is toegevoegd (Branch Target Indicator) en PAC (Pointer Authentication Code) voor AArch64-architectuur. Aanzienlijk verbeterde ondersteuning voor MIPS-, RISC-V- en PowerPC-platforms.

Bovendien heeft Android- en ChromeOS-projecten zijn al overgestapt op het gebruik van Clang om de kernel te bouwen en Google test Clang als de primaire buildplatform-kernels voor de draaiende Linux-systemen.

In de toekomst tijdens het compilatieproces van de kernel is het mogelijk om andere componenten te gebruiken LLVM, inclusief LLD, llvm-objcopy, llvm-ar, llvm-nm en llvm-objdump.

Aan de LLD-linker is een experimentele partitiefunctie toegevoegd, waarmee een programma kan worden opgedeeld in meerdere delen, die elk in een apart ELF-bestand worden geplaatst. Met deze functie kunt u het hoofdgedeelte van het programma uitvoeren, dat, indien nodig, de resterende componenten in het proces laadt (u kunt bijvoorbeeld de ingebouwde PDF-viewer selecteren als een afzonderlijk bestand, dat alleen wordt gedownload wanneer de gebruiker opent het bestand PDF).

Aan de andere kant vallen ook de talrijke verbeteringen in de backends op. voor X86-, AArch64-, ARM-, SystemZ-, MIPS-, AMDGPU- en PowerPC-architecturen.

Zo is er ondersteuning voor de SVE2- en MTE-instructies (Memory Tagging Extensions) toegevoegd voor de AArch64-architectuur, is ondersteuning voor de Armv8.1-M-architectuur en de MVE-architectuur toegevoegd aan de ARM-backend.

In het geval van AMDGPU is ondersteuning voor de GFX10-architectuur toegevoegd (Navi), is de standaardinstelling ingeschakeld om een ​​functie aan te roepen en de geactiveerde gecombineerde DPP (Data Primitives-Parallel) door te geven.

De LLDB-debugger introduceerde kleuraccentuering van sporen achterwaarts; ondersteuning toegevoegd voor DWARF4 debug_types en DWARF5 debug_info blokken;

De hulpprogramma's llvm-objcopy en llvm-strip hebben ondersteuning toegevoegd voor uitvoerbare bestanden en objecten in COFF-formaat.

De backend voor de RISC-V-architectuur is gestabiliseerd, die niet langer als experimenteel is gepositioneerd en standaard wordt gebouwd. Volledige ondersteuning voor codegeneratie voor de RV32I- en RV64I-instructiesetvarianten met MAFDC-extensies.

bron: http://releases.llvm.org/


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: AB Internet Networks 2008 SL
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.