Den nye versjonen av LLVM 9.0 er allerede utgitt, og dette er nyhetene

LLVM

Etter seks måneders utvikling lanseringen av den nye versjonen av LLVM 9.0-prosjektet ble presentert, som er en GCC-kompatibel verktøysett (kompilatorer, optimaliserere og kodegeneratorer), som kompilerer programmer til en mellomliggende bitkode av RISC-lignende virtuelle instruksjoner (en virtuell maskin på lavt nivå med et optimaliseringssystem på flere nivåer).

Den er designet for å optimalisere kompileringstid, bindingstiden, utførelsestiden i ethvert programmeringsspråk som brukeren vil definere. Opprinnelig implementert for å kompilere C og C ++, LLVMs språkagnostiske design og prosjektsuksess har skapt et bredt utvalg av språk, inkludert Objective-C, Fortran, Ada, Haskell, Java bytecode, Python, Ruby, ActionScript, GLSL, Clang, Rust, Gambas og andre.

Den genererte pseudokoden kan konverteres ved hjelp av JIT-kompilatoren til maskininstruksjoner direkte på tidspunktet for programutførelsen.

Viktigste nye funksjoner i LLVM 9.0

Blant de nye funksjonene i LLVM 9.0 finn støtte for å fjerne eksperimentell utviklingsbrikke fra RISC-V-plattformen, C ++ støtte for OpenCL.

Nok en nyhet det skiller seg ut er muligheten til å dele programmet inn i dynamisk lastede deler i LLD og implementeringen av »asm goto» -konstruksjonen som brukes i Linux-kjernekoden.

I tillegg er det også fremhevet at Libc ++ kom med støtte for WASI (WebAssembly System Interface), og LLD introduserte innledende støtte for WebAssembly dynamisk binding. Lagt til implementeringen av det GCC-spesifikke uttrykket »asm goto», som lar deg bytte fra en samlet innebygd blokk til en tag i C-kode.

Denne funksjonen er nødvendig for å bygge Linux-kjernen i »CONFIG_JUMP_LABEL = y« -modus ved bruk av Clang på x86_64-systemer. Med tanke på endringene som er lagt til i tidligere versjoner, kan Linux-kjernen nå bygges i Clang for x86_64-arkitekturen (tidligere ble den bare støttet for arm-, aarch64-, ppc32-, ppc64le- og mips-arkitekturer.

Støtte for BTI-instruksjoner er lagt til (Branch Target Indicator) og PAC (Pointer Authentication Code) for AArch64-arkitektur. Betydelig forbedret støtte for MIPS-, RISC-V- og PowerPC-plattformer.

Videre Android- og ChromeOS-prosjekter har allerede byttet til å bruke Clang til å bygge kjernen og Google tester Clang som de viktigste byggeplattformkjernene for sine kjørende Linux-systemer.

I fremtiden, under kjernesammensetningsprosessen vil det være mulig å bruke andre komponenter LLVM, inkludert LLD, llvm-objcopy, llvm-ar, llvm-nm og llvm-objdump.

En eksperimentell partisjonsfunksjon er lagt til LLD-linkeren, som gjør det mulig å dele et program i flere deler, som hver er plassert i en egen ELF-fil. Denne funksjonen lar deg kjøre hoveddelen av programmet, som etter behov vil laste de resterende komponentene i prosessen (for eksempel kan du velge den innebygde PDF-visningen som en egen fil, som bare lastes ned når brukeren åpner filen PDF).

På den annen side skiller de mange forbedringene i backendene seg også ut for X86-, AArch64-, ARM-, SystemZ-, MIPS-, AMDGPU- og PowerPC-arkitekturer.

For eksempel er støtte for SVE2 og MTE (Memory Tagging Extensions) -instruksjonene lagt til for AArch64-arkitekturen, støtte for Armv8.1-M-arkitekturen og MVE-arkitekturen er lagt til ARM-backend.

I tilfelle AMDGPU ble støtte for GFX10-arkitekturen lagt til (Navi), er standard aktivert for å påkalle en funksjon og passere den aktiverte kombinerte DPP (Data Primitives-Parallel).

LLDB-feilsøkingsprogrammet introduserte fargevalg av spor bakover; lagt til støtte for DWARF4 debug_types og DWARF5 debug_info blokker;

Verktøyene llvm-objcopy og llvm-strip har lagt til støtte for kjørbare filer og objekter i COFF-format.

Bakenden for RISC-V-arkitekturen er stabilisert, som ikke lenger er posisjonert som eksperimentell og er bygget som standard. Full støtte for kodegenerering for RV32I og RV64I instruksjonsvarianter med MAFDC-utvidelser.

Fuente: http://releases.llvm.org/


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: AB Internet Networks 2008 SL
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.