Red Hat Training

A Red Hat training course is available for RHEL 8

Capítulo 6. Cambios en la cadena de herramientas desde RHEL 7

The following sections list changes in toolchain since the release of the described components in Red Hat Enterprise Linux 7. See also Release notes for Red Hat Enterprise Linux 8.0.

6.1. Cambios en GCC en RHEL 8

En Red Hat Enterprise Linux 8, la cadena de herramientas GCC está basada en la serie de versiones GCC 8.2. Los cambios notables desde Red Hat Enterprise Linux 7 incluyen:

  • Se han añadido numerosas optimizaciones generales, como el análisis de alias, las mejoras del vectorizador, el plegado de código idéntico, el análisis interprocedimental, el pase de optimización de la fusión de almacenes y otras.
  • Se ha mejorado el desinfectante de direcciones.
  • Se ha añadido el Sanitizador de fugas para la detección de fugas de memoria.
  • Se ha añadido el Sanitizador de Comportamientos Indefinidos para la detección de comportamientos indefinidos.
  • Ahora se puede producir información de depuración en el formato DWARF5. Esta capacidad es experimental.
  • La herramienta de análisis de cobertura del código fuente GCOV se ha ampliado con varias mejoras.
  • Se ha añadido soporte para la especificación OpenMP 4.5. Además, las características de descarga de la especificación OpenMP 4.0 son ahora compatibles con los compiladores de C, C , y Fortran.
  • Se han añadido nuevas advertencias y diagnósticos mejorados para la detección estática de ciertos errores probables de programación.
  • Las ubicaciones de las fuentes ahora se rastrean como rangos en lugar de puntos, lo que permite un diagnóstico mucho más rico. El compilador ofrece ahora pistas de "arreglo", sugiriendo posibles modificaciones del código. Se ha añadido un corrector ortográfico para ofrecer nombres alternativos y facilitar la detección de errores tipográficos.

Seguridad

GCC se ha ampliado para proporcionar herramientas que garanticen un endurecimiento adicional del código generado.

Para más detalles, consulte Sección 6.2, “Mejoras de seguridad en GCC en RHEL 8”.

Arquitectura y soporte del procesador

Las mejoras en la arquitectura y el soporte del procesador incluyen:

  • Se han añadido múltiples opciones nuevas específicas para la arquitectura Intel AVX-512, varias de sus microarquitecturas y las extensiones de protección de software de Intel (SGX).
  • La generación de código ahora puede dirigirse a las extensiones LSE de la arquitectura ARM de 64 bits, a las extensiones de punto flotante (FPE) de 16 bits de ARMv8.2-A y a las versiones de la arquitectura ARMv8.2-A, ARMv8.3-A y ARMv8.4-A.
  • Se ha corregido la gestión de la opción -march=native en las arquitecturas ARM y ARM de 64 bits.
  • Se ha añadido soporte para los procesadores z13 y z14 de la arquitectura IBM Z.

Lenguas y normas

Entre los cambios notables relacionados con las lenguas y las normas se encuentran:

  • El estándar por defecto utilizado al compilar código en el lenguaje C ha cambiado a C17 con extensiones GNU.
  • El estándar por defecto utilizado al compilar código en el lenguaje C ha cambiado a C 14 con extensiones GNU.
  • La biblioteca de tiempo de ejecución de C es ahora compatible con los estándares C 11 y C 14.
  • El compilador de C ahora implementa el estándar C 14 con muchas características nuevas, como plantillas de variables, agregados con inicializadores de miembros de datos no estáticos, el especificador extendido constexpr, funciones de desasignación de tamaño, lambdas genéricas, matrices de longitud variable, separadores de dígitos y otros.
  • Se ha mejorado el soporte del lenguaje C estándar C11: Ahora están disponibles los atómicos ISO C11, las selecciones genéricas y el almacenamiento local de hilos.
  • La nueva extensión __auto_type GNU C proporciona un subconjunto de la funcionalidad de la palabra clave C 11 auto en el lenguaje C.
  • Los nombres de los tipos _FloatN y _FloatNx especificados por la norma ISO/IEC TS 18661-3:2015 son ahora reconocidos por el front end de C.
  • El estándar por defecto utilizado al compilar código en el lenguaje C ha cambiado a C17 con extensiones GNU. Esto tiene el mismo efecto que utilizar la opción --std=gnu17. Anteriormente, el estándar por defecto era C89 con extensiones GNU.
  • GCC puede ahora compilar experimentalmente código utilizando el estándar del lenguaje C 17 y ciertas características del estándar C 20.
  • Pasar una clase vacía como argumento ahora no ocupa espacio en las arquitecturas Intel 64 y AMD64, como lo requiere la ABI de la plataforma. Pasar o devolver una clase con sólo constructores de copia y movimiento eliminados ahora utiliza la misma convención de llamada que una clase con un constructor de copia o movimiento no trivial.
  • El valor devuelto por el operador C 11 alignof ha sido corregido para que coincida con el operador C _Alignof y devuelva la alineación mínima. Para encontrar la alineación preferida, utilice la extensión GNU __alignof__.
  • La versión principal de la biblioteca libgfortran para el código del lenguaje Fortran se ha cambiado a la 5.
  • Se ha eliminado el soporte para los lenguajes Ada (GNAT), GCC Go y Objective C/C. Utilice el conjunto de herramientas Go para el desarrollo de código Go.

Recursos adicionales