Den nye version af LLVM 9.0 er allerede frigivet, og det er dens nyheder

LLVM

Efter seks måneders udvikling lanceringen af ​​den nye version af LLVM 9.0-projektet blev præsenteret, som er et GCC-kompatibelt værktøjssæt (kompilatorer, optimeringsprogrammer og kodegeneratorer), som kompilerer programmer til en RISC-lignende virtuel instruktionsmellembitkode (en virtuel maskine på lavt niveau med et optimeringssystem på flere niveauer).

Det er designet til at optimere kompileringstiden., linktiden, udførelsestiden i et hvilket som helst programmeringssprog, som brugeren ønsker at definere. Oprindeligt implementeret til at kompilere C og C++, det sprogagnostiske design af LLVM og projektets succes har affødt en bred vifte af sprog, herunder Objective-C, Fortran, Ada, Haskell, Java bytecode, Python, Ruby, ActionScript, GLSL, Clang, Rust, Gambas og andre.

Den genererede pseudokode kan konverteres ved hjælp af JIT-kompileren til maskininstruktioner direkte på programudførelsestidspunktet.

Vigtigste nye funktioner i LLVM 9.0

Blandt de nye funktioner i LLVM 9.0 understøttelse af fjernelse af det eksperimentelle udviklingsmærke fra RISC-V-platformen er fundet, C++ understøttelse af OpenCL.

Endnu en nyhed skiller sig ud er evnen til at opdele programmet i dynamisk indlæste dele i LLD og implementeringen af ​​"asm goto"-konstruktionen brugt i Linux-kernekoden.

Derudover bemærkes det også, at Libc++ kom med understøttelse af WASI (WebAssembly System Interface), og LLD introducerede indledende understøttelse af WebAssembly dynamisk binding. Tilføjet implementering af det GCC-specifikke udtryk "asm goto", som giver dig mulighed for at skifte fra en samlet inline-blok til en etiket i C-kode.

Denne funktion er påkrævet for at bygge Linux-kernen i "CONFIG_JUMP_LABEL="-tilstand og bruge Clang på x86_64-systemer. I betragtning af de ændringer, der er tilføjet i tidligere udgivelser, kan Linux-kernen nu bygges i Clang til x86_64-arkitektur (tidligere kun understøttet for arm, aarch64, ppc32, ppc64le og mips-arkitekturer.

Tilføjet understøttelse af BTI-instruktioner (Branch Target Indicator) og PAC (Pointer Authentication Code) for AArch64-arkitekturen. Markant forbedret understøttelse af MIPS, RISC-V og PowerPC platforme.

Derudover Android- og ChromeOS-projekter er allerede skiftet til at bruge Clang til at bygge kernen og Google tester Clang som en primær kernebyggeplatform til sine kørende Linux-systemer.

I fremtiden under kernekompileringsprocessen vil det være muligt at bruge andre komponenter LLVM, herunder LLD, llvm-objcopy, llvm-ar, llvm-nm og llvm-objdump.

En eksperimentel partitioneringsfunktion er blevet tilføjet til LLD-linkeren, som gør det muligt at opdele et program i flere dele, som hver er placeret i en separat ELF-fil. Denne funktion giver dig mulighed for at køre hoveddelen af ​​programmet, som efter behov indlæser de resterende komponenter i processen (du kan f.eks. vælge den indbyggede PDF-fremviser som en separat fil, som kun downloades, når brugeren åbner filen PDF).

På den anden side skiller de talrige forbedringer i backends sig også ud. til X86, AArch64, ARM, SystemZ, MIPS, AMDGPU og PowerPC arkitekturer.

For eksempel er understøttelse af SVE2-instruktioner og MTE (Memory Tagging Extensions) blevet tilføjet til AArch64-arkitekturen, understøttelse af Armv8.1-M-arkitekturen, og MVE-arkitekturen er blevet tilføjet til ARM-backend.

I tilfælde af AMDGPU blev understøttelse af GFX10-arkitekturen tilføjet (Navi), standarden er aktiveret til at kalde en funktion og videregive den kombinerede DPP (Data Primitives-Parallel) aktiveret.

LLDB-debuggeren introducerede farvefremhævning af baglæns spor; tilføjet understøttelse af DWARF4 debug_types og DWARF5 debug_info blokke;

Hjælpeprogrammerne llvm-objcopy og llvm-strip har tilføjet understøttelse af objekter og eksekverbare filer i COFF-format.

Backend for RISC-V-arkitekturens arkitektur er stabiliseret, som ikke længere er placeret som eksperimentel og er bygget som standard. Fuld understøttelse af kodegenerering til RV32I og RV64I instruktionssætvarianter med MAFDC-udvidelser.

kilde: http://releases.llvm.org/


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for data: AB Internet Networks 2008 SL
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.