Desde Linux Darkcrizt  

GCC 13.1 ya fue liberado y estas son sus novedades

gcc

El GNU Compiler Collection es un conjunto de compiladores creados por el proyecto GNU. GCC es software libre y lo distribuye la Free Software Foundation bajo la licencia general pública GPL

Después de un año de desarrollo, se dio a conocer el lanzamiento del popular sistema de compilación «GCC 13.1«, siendo este el primer lanzamiento significativo en la nueva rama GCC 13.x.

Bajo el nuevo esquema de numeración de versiones, se usó la versión 13.0 durante el desarrollo, y poco antes del lanzamiento de GCC 13.1, la rama GCC 14.0 ya estaba bifurcada, a partir de la cual se formará la próxima versión importante de GCC 14.1.

Principales novedades de GCC 13.1

En esta nueva versión que se presenta de GCC 13.1 se destaca que se adoptó una interfaz para crear programas en el lenguaje de programación Modula-2, que admite el código de construcción que se ajusta a los dialectos PIM2, PIM3 y PIM4, así como al estándar ISO aceptado para ese idioma.

Ademas de ello, tambien se destaca que se ha añadido al árbol de fuentes de GCC, un frontend con la implementación del compilador del lenguaje Rust preparado por el proyecto gccrs (GCC Rust). En la vista actual, la interfaz está marcada como experimental y deshabilitada de forma predeterminada. Una vez que la interfaz esté lista (lo que se espera en la próxima versión), el kit de herramientas GCC estándar se puede usar para compilar programas Rust sin necesidad de instalar el compilador rustc creado con desarrollos LLVM.

Link-in-Step Optimization (LTO) agrega soporte para un servidor de trabajos (jobserver) mantenido por el proyecto GNU make para optimizar la ejecución de compilaciones paralelas en varios subprocesos. En GCC, el servidor de trabajo se utiliza para paralelizar el trabajo durante la optimización LTO en el contexto de todo el programa (WPA, análisis de programa completo).

Otro de los cambios que se destaca, es que se implementó la capacidad de generar diagnósticos en formato SARIF basado en JSON. El nuevo formato se puede utilizar para obtener resultados de análisis estáticos (GCC -fanalyzer), así como para obtener información sobre advertencias y errores. La habilitación se realiza con la opción «-fdiagnostics-format=sarif-stderr|sarif-file|json-stderr|json|json-file«, donde las opciones con «json» dan como resultado una variante específica de GCC del formato JSON.

Se implementaron algunas características definidas en el estándar C23 C, como la constante nullptr para definir punteros nulos, facilitando el uso de listas con un número variable de argumentos (variadic), ampliando las capacidades de las enumeraciones, el atributo noreturn, permitiendo el uso de constexpr y auto al definir objetos, typeof y typeof_unqual, nuevas palabras clave alignas, alignof, bool, false, static_assert, thread_local y true, permitiendo paréntesis vacíos en la inicialización.

libstdc++ ha mejorado el soporte experimental para los estándares C++20 y C++23, como agregar soporte para el archivo de encabezado <format> y std::format, expandir las capacidades del archivo de encabezado <ranges>, agregar punto flotante adicional tipos, implementando <experimental/scope> y <experimental/synchronized_value>.

De los demás cambios que se destacan de esta nueva versión:

  • Se agregaron nuevos atributos de función para documentar que un descriptor de archivo se pasa en una variable entera: «__attribute__((fd_arg(N)))», «__attribute__((fd_arg_read(N)))» y «__attribute__((fd_arg_write(N)) )) «.
  • Los atributos especificados se pueden usar en un analizador estático (-fanalyzer) para detectar el trabajo incorrecto con descriptores de archivos.
  • Se ha agregado un nuevo atributo » __attribute__((assume(EXPR))) » que se puede usar para decirle al compilador que una expresión es verdadera y el compilador puede usar ese hecho sin evaluar la expresión.
  • Se ha agregado compatibilidad con las CPU STAR-MC1 (star-mc1), Arm Cortex-X1C (cortex-x1c) y Arm Cortex-M85 (cortex-m85) al backend de la arquitectura ARM.
  • Se agregó soporte para los procesadores Intel Raptor Lake, Meteor Lake, Sierra Forest, Grand Ridge, Emerald Rapids, Granite Rapids y AMD Zen 4 (znver4) al backend x86.
  • Se han implementado las extensiones de arquitectura del conjunto de instrucciones AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT, CMPccXADD, AMX-FP16, PREFETCHI, RAO-INT y AMX-COMPLEX propuestas en los procesadores Intel.
  • Para C y C++ en sistemas con SSE2, se proporciona el tipo __bf16.
  • El backend de generación de código para las GPU AMD Radeon (GCN) implementa la capacidad de usar los aceleradores AMD Instinct MI200 para mejorar el rendimiento de OpenMP/OpenACC.
  • Vectorización mejorada usando instrucciones SIMD.
  • Las capacidades de back-end para la plataforma LoongArch se han ampliado significativamente.
    Se agregó soporte para CPU T-Head XuanTie C906 (thead-c906) en el backend RISC-V.
  • Compatibilidad implementada para controladores de vectores definidos en la especificación RISC-V Vector Extension Intrinsic 0.11.
  • Se agregó soporte para 30 extensiones de especificación RISC-V.
  • La compatibilidad con el formato de depuración DWARF se implementa en casi todas las configuraciones.
  • Se agregó la opción «-gz=zstd» para comprimir la información de depuración usando el algoritmo Zstandard.
  • Se eliminó la compatibilidad con el modo obsoleto de compresión de información de depuración «-gz=zlib-gnu».

Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.