LLVM 16.0 og den ble utgitt, og dette er nyhetene

LLVM-logo

LLVM er et rammeverk for å utvikle kompilatorer samt bidra til å bygge nye programmeringsspråk og forbedre eksisterende språk.

Etter litt over seks måneder med utvikling, lanseringen av den nye versjonen av prosjektet LLVM 16.0, versjon der et stort antall endringer og forbedringer er implementert.

For de som ikke er kjent med LLVM, bør du vite at dette er en GCC-kompatibel kompilator (kompilatorer, optimerere og kodegeneratorer) som kompilerer programmer til en RISC-lignende mellombitkode for virtuell instruksjon (en virtuell maskin på lavt nivå med et optimaliseringssystem på flere nivåer).

Den genererte pseudokoden kan konverteres av JIT-kompilatoren til maskininstruksjoner akkurat på tidspunktet for programkjøring.

Viktigste nye funksjoner i LLVM 16.0

I denne nye versjonen som presenteres kan vi finne flere viktige forbedringer i klang 16.0, hvorav standard C++/ObjC++-standarden skiller seg ut, som er satt til gnu++17 (tidligere gnu++14), som innebærer støtte for C++17-funksjoner med GNU-utvidelser som standard. Bruk av elementer definert i C++17-standarden er tillatt i LLVM-koden.

En annen av endringene som skiller seg ut er at den er lagt til støtte for Cortex-A715, Cortex-X3 og Neoverse CPUer V2, Armv8.3-utvidelser og flerversjonsfunksjoner til AArch64-backend.
La plattformkompatibilitet Armv2, Armv2A, Armv3 og Armv3M er avviklet i ARM-arkitektur-backend, som riktig kodegenerering ikke var garantert for. Lagt til muligheten til å generere kode for instruksjoner for å jobbe med komplekse tall og lagt til støtte for arkitekturer av instruksjonssett (ISA) AMX-FP16, CMPCXADD, AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT to X86 backend.

Bortsett fra det, kravene til å bygge LLVM er økt, Byggingen skal nå også være kompatibel med C++17-standarden, det vil si at bygningen krever minst GCC 7.1, Clang 5.0, Apple Clang 10.0 eller Visual Studio 2019 16.7.

På den annen side fremhever det også forbedrede backends for MIPS, PowerPC og RISC-V arkitekturer, samt støtte for feilsøking av 64-biters kjørbare filer for LoongArch-arkitekturen til LLDB-feilsøkeren og forbedret håndtering av COFF-feilsøkingssymboler.

Av de andre endringene som skiller seg ut:

  • I Libc++-biblioteket var hovedarbeidet fokusert på å implementere støtte for nye funksjoner i C++20- og C++23-standardene.
  • Koblingstiden har blitt betydelig redusert i LDD-linkeren ved å parallellisere adresseflyttingsskanningen og seksjonsinitialiseringsoperasjonene. Lagt til støtte for seksjonskomprimering ved hjelp av ZSTD-algoritmen.
  • De avanserte funksjonene implementert med C++20-standarden er også fremhevet.
  • fange opp strukturerte lenker i lambda-funksjoner.
  • Likhetsoperatøren innenfor uttrykk.
  • Evne til å ikke spesifisere typenavn nøkkelord i noen sammenhenger,
  • Tillatelse for initialisering lagt til mellom parentes ("Aggr(val1, val2)").
  • Implementerte funksjoner definert i den fremtidige C++2b-standarden.
  • Støtte levert med typen char8_t,
  • Utvidet rekkevidden av tegn som er tillatt for bruk i "\N{...}",
  • Lagt til muligheten til å bruke variabler deklarert som "statisk constexpr" i funksjoner deklarert som constexpr.
  • Implementerte funksjoner definert i den fremtidige C2x C-standarden:
  • Lagt til støtte for lasting av flere konfigurasjonsfiler (standard konfigurasjonsfiler lastes først, deretter de spesifisert via "–config="-flagget, som nå kan spesifiseres flere ganger).
  • Endret innlastingsrekkefølge for standard konfigurasjonsfiler: clang prøver å laste filen først - .cfg og hvis den ikke finner den, prøver den å laste inn to filer .cfg og .cfg.
  • Lagt til et nytt byggeflagg "-fcoro-aligned-allocation" for rutinemessig rammejustert distribusjon.
  • Lagt til "-fmodule-output"-flagget for å aktivere enfasemodellen for standard C++-moduler.
  • Lagt til modus "-Rpass-analysis=stack-frame-layout" for å diagnostisere problemer med stackrammelayout.
  • Lagt til et nytt __attribute__((target_version("cpu_features")))-attributt og utvidet funksjonaliteten til __attribute__((target_clones("cpu_features1″,"cpu_features2",...)))-attributtet for å velge spesifikke versjoner av funksjoner levert av CPU AArch64 .
  • Forbedrede diagnoseverktøy:
  • Lagt til advarsel "-Wsingle-bit-bitfield-constant-conversion" for å fange opp implisitt trunkering når du tilordner en til et en-bits signert bitfelt.
  • Utvidet diagnostikk for uinitialiserte constexpr-variabler.
  • Lagt til "-Wcast-function-type-strict" og "-Wincompatible-function-pointer-types-strict" advarsler for å fange opp potensielle problemer ved casting av funksjonstyper.

Endelig Hvis du er interessert i å vite mer om det, kan du sjekke detaljene i følgende lenke.


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.