LLVM 18.1.0 kommer med støtteforbedringer, backends og mer

LLVM-logo

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

Lanseringen av prosjektet LLVM 18.1.0 kommer etter seks måneders utvikling og har forbedringer med GCC qDe dekker kompilatorer, optimerere og kodegeneratorer. En bemerkelsesverdig endring i denne versjonen er det ny ordning for å generere versjonsnummer i LLVM-prosjektet med start fra 18.x-grenen. Etter praktisering av prosjekter som GCC og GDB, har bruken av versjon null ("N.0") blitt tatt i bruk under utviklingen, mens den første stabile versjonen er nummerert "N.1". Denne endringen gir fordeler ved å skille bygg basert på hovedgrenen fra bygg på den endelige utgivelsesgrenen.

For eksempel, som forberedelse til den nåværende utgivelsen (18.1.0), ble utviklingen gjort ved å bruke den ustabile grenen til LLVM 18.0. Den første stabile versjonen ble deretter utgitt som nummer 18.1.0, og markerte kulminasjonen av en omfattende utviklings- og testsyklus. I tillegg tillater denne nye ordningen generering av korrigerende kommunikasjon annenhver uke om nødvendig, under nummer 18.1.1, 18.1.2, og så videre.

Det er viktig å merke seg at hvis det gjøres endringer i gjeldende gren som påvirker ABI (Application Binary Interface), vil oppdateringen reflekteres med en endring til det andre sifferet i versjonen, for eksempel 18.2.0. Dette sikrer konsistent og gjennomsiktig versjonsadministrasjon, og gir brukerne den nødvendige klarheten om stabilitet og modifikasjoner gjort i hver utgivelse.

Viktigste nye funksjoner i LLVM 18.1.0

I denne nye versjonen som presenteres av LLVM 18.1.0, i X86-arkitektur, støtteforbedringer for ISA-utvidelser ble implementert. Spesielt er det lagt til støtte for utvidelsene USER_MSR, AVX10.1-256 og AVX10.1-512. I tillegg, i128-typen har blitt forenet med __int128-typen GCC og klang, som legger til rette for større binær kompatibilitet med eksterne prosjekter som Rust.

Et annet høydepunkt i LLVM 18.1.0 var for RISC-V, ettersom flere forbedringer er gjort og betydelige tillegg ved å stabilisere ogl Støtte for utvidelser, pluss innebygde funksjoner for utvidelser er lagt til og eksperimentell støtte er implementert for kodegenerering på RV32E, RV64E, ilp32e og lp64e arkitekturer.

På baksiden av arkitekturen LoongArch, innebygde funksjoner er lagt til for LSX-utvidelser (128-bit SIMD) og LASX (256-bit SIMD), støtte er lagt til for nye instruksjoner introdusert i LoongArch Reference Manual spesifikasjon 1.10, og innledende støtte for automatisk vektorisering er implementert.

I AArch64, Utvidet støtte for prosessorer som Cortex-A520, Cortex-A720 og Cortex-X4, og støtte har blitt implementert for Stack Clash Protection-mekanismen, som oppdager stabeloverflyt og blokkerer angrepsmetoder basert på skjæringspunktet mellom stabelen og haugen.

I tillegg til disse spesifikke forbedringene av backends av ulike arkitekturer, er det gjort generelle forbedringer til backends for arkitekturer som WebAssembly, MIPS, PowerPC og AMDGPU. Mulighetene til LLD-linkeren er også utvidet, støtte for RISC-V- og AArch64-arkitekturer er forbedret, og oppdateringer er implementert til Libc++-biblioteket for å følge egenskapene til C++20, C++23 og C standarder ++26.

Endelig, LLDB-feilsøkeren har lagt til støtte for automatisk uttrekking av symboler og binære data fra eksterne servere som støtter DEBUGINFOD-protokollen, og dermed utvider feilsøkingsevnen på forskjellige arkitekturer og legger til støtte for utvidelser som SME og SME2 (Scalable Matrix Extension), og det er viktig å merke seg at bindinger for Python-språket er fjernet i enkelte områder, noe som kan krever justeringer av utviklingsprosesser som er avhengige av disse koblingene.

For delene av forbedringer som ble implementert i Clang 18 inkludert endringer relatert til C-språket:

  • Strukturer, fagforeninger og matriser med "const"-attributtet tillates nå brukt som konstante uttrykk, etter analogien med GCC.
  • Enums gjenspeiles nå i TBAA (Type-Based Alias Analysis) metadata som deres opprinnelige heltallstype i stedet for å bli behandlet som en "char" type.
  • Lagt til støtte for "counted_by"-attributtet, som lar deg spesifisere et felt i en struktur med en fleksibel matrise for å bestemme antall elementer i den fleksible matrisen, noe som forbedrer effektiviteten til bufferoverløpssjekker i klang.
  • Implementert støtte for uttrykket "krever c23" for å koble moduler og støtte C23-standarden.
  • En eksperimentell funksjon ble implementert for å bruke flere typer utypede argumenter i maler, som tillater spesifikasjon av flyttallsverdier, pekere og underobjektreferanser.
  • Lagt til eksperimentell støtte for "Deducing this"-mekanismen, som lar deg bruke parametere med "this"-attributtet i en mal og oppdage kategorien til uttrykket som denne funksjonen ble kalt for.

Til slutt, hvis du er interessert i å vite mer om det, kan du se detaljene I den følgende lenken.


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.