LLVM 18.1.0 arriba amb millores de suport, en backends i més

LLVM Logo

LLVM és un marc per al desenvolupament de compiladors a més que ajuda a construir nous llenguatges de programació i millorar els llenguatges existents

El llançament del projecte LLVM 18.1.0 arriba després de sis mesos de desenvolupament i presenta millores amb GCC qque inclouen compiladors, optimitzadors i generadors de codi. Un canvi notable en aquesta versió és el nou esquema per generar números de versió al projecte LLVM a partir de la branca 18.x. Seguint la pràctica de projectes com GCC i GDB, s'ha adoptat l'ús de la versió zero (N.0) durant el desenvolupament, mentre que la primera versió estable porta el número N.1. Aquest canvi ofereix avantatges en separar les compilacions basades en la branca principal de les compilacions de la branca de llançament final.

Per exemple, en la preparació per a la versió actual (18.1.0), el desenvolupament es va fer utilitzant la branca inestable de LLVM 18.0. Després, la primera versió estable es va llançar amb el número 18.1.0, marcant així la culminació d'un cicle de desenvolupament i proves exhaustives. A més, aquest nou esquema permet la generació de comunicats correctius cada dues setmanes si cal, sota els números 18.1.1, 18.1.2, i així successivament.

És important destacar que si es fan canvis a la branca actual que afecten l'ABI (Interfície Binària d'Aplicació), l'actualització es reflectirà amb un canvi en el segon dígit de la versió, per exemple, 18.2.0. Això garanteix una gestió coherent i transparent de les versions, brindant als usuaris la claredat necessària sobre l'estabilitat i les modificacions realitzades a cada llançament.

Principals novetats de LLVM 18.1.0

En aquesta nova versió que es presenta de LLVM 18.1.0, a la arquitectura X86 es van implementar millores de suport per a extensions ISA. En particular, s'ha afegit suport per a les extensions USER_MSR, AVX10.1-256 i AVX10.1-512. A més, s'ha unificat el tipus i128 amb el tipus __int128 de GCC i clang, cosa que facilita una major compatibilitat binària amb projectes externs com Rust.

Un altre dels aspectes destacats a LLVM 18.1.0 va ser per RISC-V, ja que s'han realitzat diverses millores i addicions significatives en estabilitzar il suport per a extensions, a més s'han afegit funcions integrades per a les extensions i s'ha implementat suport experimental per a la generació de codi en arquitectures RV32E, RV64E, ilp32e i lp64e.

Al backend de l'arquitectura LoongArch, s'han afegit funcions integrades per a les extensions LSX (SIMD de 128 bits) i LASX (SIMD de 256 bits), s'ha afegit suport per a noves instruccions introduïdes a l'especificació 1.10 del Manual de referència de LoongArch, i s'ha implementat suport inicial per a la vectorització automàtica.

A AArch64, s'ha ampliat la compatibilitat amb processadors com Cortex-A520, Cortex-A720 i Cortex-X4, i s'ha implementat el suport per al mecanisme Stack Clash Protection, que detecta desbordaments de pila i bloqueja mètodes d'atac basats en la intersecció de la pila i el munt.

A més d'aquestes millores específiques als backends de diverses arquitectures, s'han realitzat millores generals als backends per a arquitectures com WebAssembly, MIPS, PowerPC i AMDGPU. També s'han ampliat les capacitats de l'enllaçador LLD, s'ha millorat el suport per a arquitectures RISC-V i AArch64 i s'han implementat actualitzacions a la biblioteca Libc++ per seguir les capacitats dels estàndards C++20, C++23 i C ++26.

Finalment, el depurador LLDB ha afegit suport per extreure automàticament símbols i dades binàries de servidors externs que admeten el protocol DEBUGINFOD, ampliant així la capacitat de depuració en diferents arquitectures i afegint suport per a extensions com SME i SME2 (Scalable Matrix Extension) i és important tenir en compte que s'han eliminat enllaços per al llenguatge Python en algunes àrees, cosa que pot requerir ajustaments en els processos de desenvolupament que depenguin daquests enllaços.

Per les parts de les millores que es van implementar a Clang 18 incloent canvis relacionats amb el llenguatge C:

  • Ara es permet l'ús d'estructures, unions i matrius amb l'atribut const com a expressions constants, seguint l'analogia amb GCC.
  • Les enumeracions ara es reflecteixen en les metadades TBAA (Anàlisi d'àlies basat en tipus) com a tipus sencer original en lloc de tractar-se com un tipus «char».
  • Es va afegir suport per a l'atribut «counted_by», que permet especificar un camp en una estructura amb una matriu flexible per determinar la quantitat d'elements a la matriu flexible, millorant l'eficiència de les comprovacions de desbordament del memòria intermèdia en clang.
  • S'ha implementat suport per a l'expressió "requereix c23" per vincular mòduls i admetre l'estàndard C23.
  • Es va implementar una funció experimental per utilitzar tipus addicionals d'arguments sense tipus en plantilles, cosa que permet especificar valors de punt flotant, punters i referències a subobjectes.
  • Es va afegir suport experimental per al mecanisme "Deducing this", que permet utilitzar paràmetres amb l'atribut "this" en una plantilla i descobrir la categoria de l'expressió per a la qual es va anomenar aquesta funció.

Finalment si estàs interessat en poder conèixer més a l'respecte, pots consultar els detalls en el següent enllaç.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: AB Internet Networks 2008 SL
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.