LLVM 17.0 ja va ser alliberat i aquestes són les seves novetats

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

Després de sis mesos de desenvolupament s'ha presentat la nova versió de LLVM 17.0, en la qual s'han implementat diverses millores, canvis, correccions d'errors i sobretot diversos aspectes importants a Clang 17.0.

Per als que desconeixen de LLVM, han de saber que aquest és un compilador compatible amb GCC (compiladors, optimitzadors i generadors de codi) que compila programes en un codi de bits intermedi d'instruccions virtuals tipus RISC (una màquina virtual de baix nivell amb un sistema d'optimització multinivell).

El pseudocodi generat pot ser convertit pel compilador JIT en instruccions de màquina just al moment de l'execució del programa.

Principals novetats de LLVM 17.0

En aquesta nova versió que es presenta de LLVM 17.0 hi ha diversos aspectes rellevants a tenir en compte, dels quals estan per exemple les millores al backend X86, doncs ha afegito suport per a extensions d'arquitectura de conjunt d'instruccions ISA SHA512, ISA SM3, ISA SM4 i ISA AVX-VNNI-INT16.

A més, també es destaca les millores en les capacitats de backend per a l'arquitectura RISC-V que s'han ampliat significativament, doncs va afegir suport per al processador sifive-x280.

Un altre dels canvis que podrem trobar, és el suport implementat per a extensions de processador XTH*, així com compatibilitat amb les extensions LSX, LASX, LVZ i LBT ISA al backend de l'arquitectura LoongArch.

S'han millorat els backends per a arquitectures AArch64, ARM, WebAssembly, MIPS, PowerPC, AMDGPU, s'han ampliat les capacitats de l'enllaçador LLD i s'ha afegit una nova ordre de registre info al depurador LLDB per mostrar tota la informació coneguda sobre un registre .

Per la part de les millores a Clang 17.0 es destaca que s'han implementat les característiques definides en el futur C-estàndard C2x com ara les paraules clau bool, static_assert, aligns, alignof i thread_local, també la capacitat d'especificar claudàtors buits «{} » per a la inicialització a valors zero.

El codio C proporciona la capacitat de reenviar l'expressió «goto» dins de blocs «asm» mitjançant etiquetes seleccionades indirectament, es va afegir suport per a una extensió de C que permet utilitzar un tipus en lloc d'una expressió com a primer operant a «_Generic», a més que en expressions constants en llenguatge C es permet l'ús d'estructures, unions i arrays declarats amb l'atribut const.

Per part de les millores relacionades amb l'estàndard C++20, s'esmenta que ara a totes les plataformes, excepte Windows, es tenen suport complet per a Coroutines, a més que s'han implementat els requisits addicionals per a operacions de comparació d'expressions constants.

També es destaca que estalvia es garanteix l'anàlisi correcta de les plantilles lambda especificades immediatament després dels paràmetres de la plantilla i que contenen una variable amb un tipus depenent al bloc. Es va reservar l'ús de guions baixos dobles a literals d'usuari i es va desaconsellar l'ús de la paraula clau «operator» en definicions de funcions amb identificadors reservats al nom

Quant a les millores a prendre en relacionades amb l'estàndard C++23 , s'esmenta que es troba a l'etapa final d'aprovació per part d'ISO, doncs es va canviar l'abast del tipus de retorn final a les funcions lambda per observar primer els ganxos i després el text circumdant.

Dels altres canvis que es destaquen:

  • Es va afegir la capacitat de definir matrius multidimensionals usant
  • Quan compileu aplicacions C++ utilitzant el mode d'optimització «-O0», s'ha millorat la generació de codi per a trucades.
  • S'ha afegit suport per a la variable d'entorn NO_COLOR per desactivar el color de sortida.
  • Les eines de diagnòstic i anàlisi estàtica s'han ampliat significativament, per exemple, s'han afegit noves comprovacions de desbordament d'enters amb signe, correcció de plantilles lambda, expressions constexpr, comparacions amb punters nuls, ús d'estructures no inicialitzades, etc.
  • La biblioteca Libc++ continua implementant suport per a les capacitats dels estàndards C++20 i C++23, i també s'ha començat a treballar per oferir suport per a l'especificació C++26.
  • S'ha afegit suport per a l'expressió «requires cplusplus23» a les descripcions de connexions entre fitxers de capçalera i mòduls.

Finalment si estàs interessat a poder conèixer més sobre això, pots consultar els detalls al 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ó.