LLVM 17.0 xa foi lanzado e estas son as súas novidades

Logotipo de LLVM

LLVM é un marco para desenvolver compiladores, ademais de axudar a construír novas linguaxes de programación e mellorar as existentes.

Despois de seis meses de desenvolvemento Presentouse a nova versión de LLVM 17.0, no que se implementaron diversas melloras, cambios, correccións de erros e, sobre todo, varios aspectos importantes en Clang 17.0.

Para aqueles que non estean familiarizados con LLVM, debes saber que isto é un compilador compatible con GCC (compiladores, optimizadores e xeradores de código) que compila programas nun código de bits intermedio de instrución virtual tipo RISC (unha máquina virtual de baixo nivel cun sistema de optimización multinivel).

O pseudocódigo xerado pode ser convertido polo compilador JIT en instrucións de máquina xusto no momento da execución do programa.

Principais novidades de LLVM 17.0

Nesta nova versión de LLVM 17.0 que se presenta, hai varios aspectos relevantes a ter en conta, dos cales son, por exemplo, os melloras no backend X86, ben engadiuo soporte para extensións Arquitectura do conxunto de instrucións ISA SHA512, ISA SM3, ISA SM4 e ISA AVX-VNNI-INT16.

Ademais disto, tamén destaca o melloras en capacidades de backend para arquitectura RISC-V que se ampliaron significativamente, xa que soporte adicional para o procesador sifive-x280.

Outro dos cambios que podemos atopar é o Soporte implementado para extensións de procesador XTH*, así como compatibilidade con extensións LSX, LASX, LVZ e LBT ISA ao backend da arquitectura LoongArch.

Backends mellorados para arquitecturas AArch64, ARM, WebAssembly, MIPS, PowerPC, AMDGPU, capacidades de ligazón LLD ampliadas e engadiu un novo comando "rexistrar información" ao depurador LLDB para mostrar toda a información coñecida sobre un rexistro .

En canto ás melloras en Clang 17.0, destácase que se implementaron as funcións definidas no futuro C2x estándar C como as palabras clave bool, static_assert, aligns, alignof e thread_local, así como a capacidade de especificar corchetes baleiros «{{ } » para inicializar a valores cero.

O códigoo C proporciona a capacidade de reenviar a expresión "goto". dentro dos bloques "asm" a través de etiquetas seleccionadas indirectamente, engadiuse soporte para unha extensión C que permite usar un tipo en lugar dunha expresión como primeiro operando en "_Generic", ademais de permitir expresións constantes en linguaxe C para usar estruturas, unións. e matrices declaradas co atributo "const".

En canto ás melloras relacionadas co estándar C++20, menciónase que agora En todas as plataformas excepto Windows, hai soporte total para Coroutines, Ademais, implementáronse requisitos adicionais para operacións de comparación de expresións constantes.

Tamén se destaca que agoraA análise correcta dos modelos lambda está garantida especificado inmediatamente despois dos parámetros do modelo e que contén unha variable cun tipo dependente no bloque. Reservouse o uso de guións baixos dobres nos literais do usuario e desaconselouse o uso da palabra clave "operador" nas definicións de funcións con identificadores reservados no nome

En canto ao melloras a realizar relacionadas co estándar C++23 , menciónase que se atopa na fase final de aprobación pola ISO, xa que cambiou o alcance do tipo de retorno final nas funcións lambda para mirar primeiro os ganchos e despois o texto circundante.

Do outros cambios que destacan:

  • Engadida a capacidade de definir matrices multidimensionais usando
  • Ao compilar aplicacións C++ usando o modo de optimización "-O0", mellorouse a xeración de código para as chamadas.
  • Engadiuse compatibilidade coa variable de ambiente NO_COLOR para desactivar a cor de saída.
  • Ampliáronse significativamente as ferramentas de análise e diagnóstico estáticas, por exemplo, engadíronse novas comprobacións de desbordamento de enteiros asinados, corrección de modelos lambda, expresións constexpr, comparacións de punteiros nulos, uso de estruturas non inicializadas, etc.
  • A biblioteca Libc++ segue implementando soporte para as capacidades dos estándares C++20 e C++23, e tamén se comezou a traballar para proporcionar soporte para a especificación C++26.
  • Engadido soporte para a expresión "require cplusplus23" nas descricións de conexións entre ficheiros de cabeceira e módulos.

Por último, se estás interesado en poder saber máis sobre ela, podes consultar os detalles no seguinte ligazón.


O contido do artigo adhírese aos nosos principios de ética editorial. Para informar dun erro faga clic en aquí.

Sexa o primeiro en opinar sobre

Deixa o teu comentario

Enderezo de correo electrónico non será publicado. Os campos obrigatorios están marcados con *

*

*

  1. Responsable dos datos: AB Internet Networks 2008 SL
  2. Finalidade dos datos: controlar SPAM, xestión de comentarios.
  3. Lexitimación: o seu consentimento
  4. Comunicación dos datos: os datos non serán comunicados a terceiros salvo obrigación legal.
  5. Almacenamento de datos: base de datos aloxada por Occentus Networks (UE)
  6. Dereitos: en calquera momento pode limitar, recuperar e eliminar a súa información.