4.10. Compiladores y herramientas de desarrollo (traducción automática)

Boost actualizado a la versión 1.66

La biblioteca Boost C++ ha sido actualizada a la versión 1.66. La versión de Boost incluida en Red Hat Enterprise Linux 7 es la 1.53. Para más detalles, vea los registros de cambios: https://www.boost.org/users/history/

Esta actualización introduce los siguientes cambios que rompen la compatibilidad con las versiones anteriores:

  • Se han eliminado la bs_set_hook()función, la splay_set_hook()función de los contenedores splay y el parámetro bool splay = trueadicional de la splaytree_algorithms()función de la biblioteca Intrusive.
  • Los comentarios o la concatenación de cadenas en archivos JSON ya no son compatibles con el analizador de la biblioteca de árboles de propiedades.
  • Algunas distribuciones y funciones especiales de la librería Math se han arreglado para que se comporten como están documentadas y aumenten en overflow_errorlugar de devolver el valor finito máximo.
  • Algunas cabeceras de la biblioteca Math se han movido al directoriolibs/math/include_private.
  • El comportamiento de las basic_regex<>::mark_count()basic_regex<>::subexpression(n)funciones de la biblioteca Regex ha sido cambiado para que coincida con su documentación.
  • El uso de modelos variádicos en la biblioteca de variantes puede romper las funciones de metaprogramación.
  • La boost::python::numericAPI ha sido eliminada. Los usuarios pueden usar en su boost::python::numpylugar.
  • Las operaciones aritméticas en punteros a tipos que no son objetos ya no se proporcionan en la biblioteca Atómica.

(BZ#1494495)

Compatibilidad con Unicode 11.0.0

La biblioteca C de Red Hat Enterprise Linux core, glibc, ha sido actualizada para soportar la versión 11.0.0 del estándar Unicode. Como resultado, todas las APIs de caracteres anchos y de caracteres multibyte, incluyendo la transliteración y la conversión entre conjuntos de caracteres, proporcionan información precisa y correcta conforme a este estándar.

(BZ#1512004)

El boostpaquete es ahora independiente de Python

Con esta actualización, la instalación del boostpaquete ya no instala la Boost.Pythonbiblioteca como una dependencia. Para poder utilizar Boost.Python, es necesario que instale explícitamente los paquetes boost-python3oboost-python3-devel.

(BZ#1616244)

Un nuevo compat-libgfortran-48paquete disponible

Para la compatibilidad con las aplicaciones Red Hat Enterprise Linux 6 y 7 que utilizan la biblioteca de Fortran, ahora hay disponible un nuevo paquete de compat-libgfortran-48compatibilidad, que proporciona la libgfortran.so.3biblioteca.

(BZ#1607227)

Soporte de Retpoline en GCC

Esta actualización añade soporte para retpolines a GCC. Una retpolina es una construcción de software utilizada por el núcleo para reducir la sobrecarga de la mitigación de los ataques de Spectre Variant 2 descritos en CVE-2017-5715.

(BZ#1535774)

Soporte mejorado para la arquitectura ARM de 64 bits en componentes de la cadena de herramientas

Toolchain, GCCy binutilsahora ofrecen soporte extendido para la arquitectura ARM de 64 bits. Por ejemplo:

  • GCC y binutilsahora soporta Extensión Vectorial Escalable (SVE).
  • El soporte para el tipo de FP16datos, proporcionado por ARM v8.2, ha sido agregado a GCC. El tipo de FP16datos mejora el rendimiento de ciertos algoritmos.
  • Las herramientas a partir binutilsde ahora soportarán la definición de la arquitectura ARM v8.3, incluyendo la Autenticación de Punteros. La característica de Autenticación de Punteros evita que el código malicioso corrompa la ejecución normal de un programa o del kernel al crear sus propios punteros de función. Como resultado, sólo se utilizan direcciones de confianza cuando se bifurcan a diferentes lugares del código, lo que mejora la seguridad.

(BZ#1504980, BZ#1550501, BZ#1504995, BZ#1504993, BZ#1504994)

Optimizaciones para glibcsistemas IBM POWER

Esta actualización proporciona una nueva versión optimizada glibcpara las arquitecturas IBM POWER 8 e IBM POWER 9. Como resultado, los sistemas IBM POWER 8 e IBM POWER 9 cambian automáticamente a la variante adecuada y optimizada glibcen tiempo de ejecución.

(BZ#1376834)

La biblioteca C de GNU actualizada a la versión 2.28

Red Hat Enterprise Linux 8 incluye la versión 2.28 de la biblioteca C de GNU (glibc). Entre las mejoras notables se incluyen

  • Elementos de seguridad de endurecimiento:

    • Los archivos binarios seguros marcados con la AT_SECUREbandera ignoran la variable de LD_LIBRARY_PATHentorno.
    • Los backtraces ya no se imprimen para comprobar las fallas de la pila para acelerar el apagado y evitar la ejecución de más código en un entorno comprometido.
  • Mejoras en el rendimiento:

    • El rendimiento de la malloc()función se ha mejorado con una caché local de hilos.
    • Adición de la variable de GLIBC_TUNABLESentorno para alterar las características de rendimiento de la biblioteca.
    • Se ha mejorado la implementación de semáforos roscados y se han añadido nuevas funciones escalablespthread_rwlock_xxx().
    • Se ha mejorado el rendimiento de la biblioteca de matemáticas.
  • Se ha añadido soporte para Unicode 11.0.0.
  • Se ha añadido una compatibilidad mejorada con los números de coma flotante de 128 bits definidos por las normas ISO/IEC/IEEE 60559:2011, IEEE 754-2008 e ISO/IEC TS 18661-3:2015.
  • Mejoras en la resolución de talones del Servicio de nombres de dominio (DNS) relacionadas con el archivo de /etc/resolv.confconfiguración:

    • La configuración se recarga automáticamente cuando se cambia el archivo.
    • Se ha añadido soporte para un número arbitrario de dominios de búsqueda.
    • Se ha añadido la selección aleatoria adecuada para la rotateopción.
  • Se han añadido nuevas características para el desarrollo, entre ellas:

    • Funciones del envoltorio de Linux para las llamadas al preadv2y al pwritev2kernel
    • Nuevas funciones que incluyen reallocarray()y explicit_bzero()
    • Nuevos indicadores para la posix_spawnattr_setflags()función, como por ejemplo POSIX_SPAWN_SETSID

(BZ#1512010, BZ#1504125, BZ#506398)

CMake disponible en RHEL

La versión 3.11 del sistema de construcción CMake está disponible en Red Hat Enterprise Linux 8 como el cmakepaquete.

(BZ#1590139, BZ#1502802)

make versión 4.2.1

Red Hat Enterprise Linux 8 se distribuye con la versión 4.2.1 de la herramienta de makeconstrucción. Los cambios notables incluyen:

  • Cuando una receta falla, se muestran el nombre del makefile y el número de línea de la receta.
  • Se ha añadido esta --traceopción para permitir el seguimiento de los objetivos. Cuando se utiliza esta opción, cada receta se imprime antes de la invocación, incluso si se suprime, junto con el nombre de archivo y el número de línea en el que se encuentra esta receta, y también con las condiciones previas que hacen que se invoque.
  • La mezcla de reglas explícitas e implícitas ya no causa makela terminación de la ejecución. En su lugar, se imprime un mensaje de advertencia. Tenga en cuenta que esta sintaxis está obsoleta y puede que se elimine por completo en el futuro.
  • Se ha añadido la $(file …​)función para escribir texto en un archivo. Cuando se llama sin un argumento de texto, sólo se abre y cierra inmediatamente el archivo.
  • Una nueva opción, --output-synco -O, hace que una salida de varios trabajos se agrupe por trabajo y permite una depuración más fácil de las compilaciones paralelas.
  • La --debugopción ahora acepta también el indicador (nonen) para desactivar todos los ajustes de depuración actualmente habilitados.
  • El operador de asignación de !=shell ha sido añadido como una alternativa a la $(shell …​)función para incrementar la compatibilidad con makefiles BSD. Para más detalles y diferencias entre el operador y la función, vea el manual de GNU make.

Tenga en cuenta que, en consecuencia, las variables con un nombre que terminan en signo de exclamación e inmediatamente seguidas de una asignación, como por ejemplo variable!=value,, se interpretan ahora como la nueva sintaxis. Para restaurar el comportamiento anterior, añada un espacio después del signo de exclamación, como por ejemplovariable! =value

+

  • Se ha añadido el operador de ::=asignación definido por el estándar POSIX.
  • Cuando se especifica la .POSIXvariable, se makeobservan los requisitos de la norma POSIX para manejar la barra invertida y la nueva línea. En este modo, cualquier espacio de arrastre antes de la barra invertida se conserva, y cada barra invertida seguida de una nueva línea y caracteres de espacio en blanco se convierte en un solo carácter de espacio.
  • El comportamiento de las variables MAKEFLAGSy MFLAGSde las variables se define ahora con mayor precisión.
  • Una nueva variable, GNUMAKEFLAGS, se analiza para los makeindicadores de forma idéntica a MAKEFLAGS. Como consecuencia, las banderas makeespecíficas de GNU pueden ser almacenadas fuera MAKEFLAGSy la portabilidad de los makefiles se incrementa.
  • Se ha añadido una nueva variable, MAKE_HOST, que contiene la arquitectura del host.
  • Las nuevas variables, MAKE_TERMOUTe MAKE_TERMERRindican si makese está escribiendo salida estándar y error en un terminal.
  • Establecer las -Ropciones -ry en la MAKEFLAGSvariable dentro de un makefile ahora funciona correctamente y elimina todas las reglas y variables incorporadas, respectivamente.
  • El .RECIPEPREFIXajuste se recuerda ahora por receta. Además, las variables expandidas en esa receta también utilizan esa configuración de prefijo de receta.
  • El .RECIPEPREFIXajuste y todas las variables específicas del objetivo se muestran en la salida de la -popción como si estuvieran en un makefile, en lugar de como comentarios.

(BZ#1641015)

Los programas Go creados con Go Toolset son compatibles con FIPS

La biblioteca criptográfica disponible en Go Toolset se ha cambiado para utilizar la versión 1.1.0 de la biblioteca OpenSSL si el sistema host está configurado en modo FIPS. Como consecuencia, los programas creados con esta versión de Go Toolset son compatibles con FIPS.

Para hacer que los programas Go utilicen sólo las rutinas criptográficas estándar no certificadas, utilice la -tags no_opensslopción del gocompilador en el momento de la compilación.

(BZ#1512570)

SystemTap versión 4.0

Red Hat Enterprise Linux 8 se distribuye con la herramienta de instrumentación SystemTap versión 4.0. Entre las mejoras notables se incluyen

  • Se ha mejorado el backend del Berkeley Packet Filter (eBPF) extendido, especialmente las cadenas y funciones. Para utilizar este backend, inicie SystemTap con la --runtime=bpfopción.
  • Se ha añadido un nuevo servicio de red de exportación para su uso con el sistema de monitorización Prometheus.
  • Se ha mejorado la implementación de la llamada de sondeo del sistema para utilizar los puntos de seguimiento del núcleo si es necesario.

(BZ#1641032)

Mejoras en la binutilsversión 2.30

Red Hat Enterprise Linux 8 incluye la versión 2.30 del binutilspaquete. Entre las mejoras notables se incluyen

  • Se ha mejorado la compatibilidad con las nuevas extensiones de la arquitectura de la s390x.

Ensamblador:

  • Se ha agregado soporte para el formato de archivo WebAssembly y la conversión de WebAssembly al formato de archivo ELF wasm32.
  • Se ha agregado soporte para la arquitectura ARMv8-R y los procesadores Cortex-R52, Cortex-M23 y Cortex-M33.
  • Se ha añadido soporte para la arquitectura RISC-V.

Enlazadores:

  • El enlazador ahora pone el código y los datos de sólo lectura en segmentos separados por defecto. Como resultado, los archivos ejecutables creados son más grandes y seguros de ejecutar, ya que el cargador dinámico puede desactivar la ejecución de cualquier página de memoria que contenga datos de sólo lectura.
  • Se ha añadido soporte para notas de propiedades de GNU que proporcionan pistas al cargador dinámico sobre el archivo binario.
  • Anteriormente, el enlazador generaba código ejecutable no válido para la tecnología Intel Indirect Branch Tracking (IBT). Como consecuencia, los archivos ejecutables generados no pudieron iniciarse. Este error ha sido corregido.
  • Anteriormente, el goldenlazador fusionaba las notas de propiedad de forma incorrecta. Como consecuencia, se podrían habilitar características de hardware incorrectas en el código generado, y el código podría terminar inesperadamente. Este error ha sido corregido.
  • Anteriormente, el goldenlazador creaba secciones de nota con bytes de relleno al final para lograr la alineación según la arquitectura. Debido a que el cargador dinámico no esperaba el relleno, podía terminar inesperadamente el programa que estaba cargando. Este error ha sido corregido.

Otras herramientas:

  • Las objdumpherramientas readelfy ahora tienen opciones para seguir los enlaces en archivos de información de depuración separados y mostrar información en ellos también.
  • La nueva --inlinesopción amplía la opción existente --line-numbersde la objdumpherramienta para mostrar información de anidamiento para funciones en línea.
  • La nmherramienta obtuvo una nueva opción --with-version-stringspara mostrar la información de la versión de un símbolo después de su nombre, si está presente.

(BZ#1641004, BZ#1637072, BZ#1501420, BZ#1504114, BZ#1614908, BZ#1614920)

Realizar co-piloto versión 4.1.3

Red Hat Enterprise Linux 8 se distribuye con Performance co-pilot (pcp) versión 4.1.3. Entre las mejoras notables se incluyen

  • La pcp-dstatherramienta ahora incluye análisis histórico y salida en formato CSV (Valores separados por comas).
  • Las utilidades de registro pueden utilizar etiquetas métricas y registros de texto de ayuda.
  • La pmdaperfeventherramienta ahora reporta los números de CPU correctos en los niveles inferiores de Enhebrado Múltiple Simultáneo (SMT).
  • La pmdapostgresqlherramienta ahora soporta Postgres serie 10.x.
  • La pmdaredisherramienta ahora es compatible con la serie 5.x de Redis.
  • La pmdabccherramienta ha sido mejorada con filtrado dinámico de procesos y syscalls, ucalls y ustat por proceso.
  • La pmdammvherramienta ahora exporta etiquetas métricas y la versión de formato se incrementa a 3.
  • La pmdagfs2herramienta soporta métricas adicionales de glock y soporte de glock.
  • Se han realizado varias correcciones a la política de SELinux.

(BZ#1641034)

Teclas de protección de memoria

Esta actualización habilita características de hardware que permiten cambios de bandera de protección por página de hilo. Se han añadido las nuevas envolturas de llamadas del glibcsistema para las pkey_alloc()pkey_mprotect()funciones , pkey_free(), y. Además, se han añadido las funciones pkey_set()y pkey_get()para permitir el acceso a los indicadores de protección por hilo.

(BZ#1304448)

elfutils actualizado a la versión 0.174

En Red Hat Enterprise Linux 8, el paquete elfutils está disponible en la versión 0.174. Los cambios notables incluyen:

  • Anteriormente, la eu-readelfherramienta podía mostrar una variable con un valor negativo como si tuviera un gran valor sin signo, o mostrar un gran valor sin signo como un valor negativo. Esto se ha corregido y eu-readelfahora busca el tamaño y la firma de los tipos de valores constantes para visualizarlos correctamente.
  • Se ha añadido una nueva función dwarf_next_lines()para leer .debug_linelos datos que carecen de CU a la biblioteca libdw. Esta función puede utilizarse como alternativa a las funciones dwarf_getsrclines()ydwarf_getsrcfiles().
  • Anteriormente, los archivos con más de 65280 secciones podían causar errores en las bibliotecas libelf y libdw y en todas las herramientas que las utilizaban. Este error ha sido corregido. Como resultado, los valores extendidos shnumy shstrndxlos valores en las cabeceras de los archivos ELF se manejan correctamente.

(BZ#1641007)

Valgrind actualizado a la versión 3.14

Red Hat Enterprise Linux 8 se distribuye con la herramienta de análisis de código ejecutable Valgrind versión 3.14. Los cambios notables incluyen:

  • Se ha añadido una nueva --keep-debuginfoopción para permitir la retención de la información de depuración para el código descargado. Como resultado, las trazas de pila guardadas pueden incluir información de archivos y líneas para código que ya no está presente en la memoria.
  • Se han añadido supresiones basadas en el nombre del archivo fuente y el número de línea.
  • La Helgrindherramienta se ha ampliado con una opción --delta-stacktracepara especificar el cálculo de trazas completas de la pila de historial. En particular, el uso de esta opción junto con --history-level=fullpuede mejorar Helgrindel rendimiento hasta en un 25%.
  • Se ha reducido la tasa de falsos positivos en la Memcheckherramienta para código optimizado en las arquitecturas Intel y AMD de 64 bits y en la arquitectura ARM de 64 bits. Observe que puede utilizar la --expensive-definedness-checksfunción para controlar la gestión de verificaciones de definición y mejorar la tasa a expensas del rendimiento.
  • Valgrind ahora puede reconocer más instrucciones de la variante de pequeño dinosaurio de IBM Power Systems.
  • Valgrind puede ahora procesar parcialmente instrucciones vectoriales enteras y en cadena del procesador IBM Z architecture z13.

Para obtener más información sobre las nuevas opciones y sus limitaciones conocidas, consulte la página del valgrind(1)manual.

(BZ#1641029, BZ#1501419)

GDB versión 8.2

Red Hat Enterprise Linux 8 se distribuye con la versión 8.2 del depurador de GDB:

  • El protocolo IPv6 es compatible con la depuración remota con GDB ygdbserver...
  • Se ha mejorado la depuración sin información de depuración.
  • Se ha mejorado la finalización de símbolos en la interfaz de usuario del GDB para ofrecer mejores sugerencias mediante el uso de construcciones más sintácticas, como etiquetas ABI o espacios de nombre.
  • Ahora los comandos pueden ejecutarse en segundo plano.
  • Los programas de depuración creados en el lenguaje de programación Rust ahora son posibles.
  • La depuración de los lenguajes C y C++ ha sido mejorada con soporte de parser para los _Alignofalignofoperadores, referencias de valor de C++, y arreglos automáticos de longitud variable C99.
  • Los scripts de extensión GDB ahora pueden usar el lenguaje de scripts Guile.
  • La interfaz de lenguaje de scripting de Python para extensiones ha sido mejorada con nuevas funciones de API, decoradores de marcos, filtros y desbobinadores. Además, los scripts en la .debug_gdb_scriptssección de configuración de GDB se cargan automáticamente.
  • GDB ahora utiliza Python versión 3 para ejecutar sus scripts, incluyendo bonitas impresoras, decoradores de marcos, filtros y desbobinadores.
  • Las arquitecturas ARM y ARM de 64 bits han sido mejoradas con el registro y reproducción de la ejecución del proceso, incluyendo instrucciones de llamada de sistema y Thumb 32 bits.
  • Se ha agregado soporte para el registro Intel MPX y la violación de límites, el registro PKU y Intel Processor Trace.
  • La funcionalidad de grabación y reproducción se ha ampliado para incluir las rdrandrdseedinstrucciones de los sistemas basados en Intel.
  • La funcionalidad del GDB en la arquitectura IBM Z se ha ampliado con soporte para tracepoints y traceppoints rápidos, registros vectoriales y ABI, y la llamada al Catchsistema. Además, GDB ahora soporta instrucciones más recientes de la arquitectura.
  • GDB ahora puede utilizar las sondas estáticas de espacio de usuario SystemTap (SDT) en la arquitectura ARM de 64 bits.

(BZ#1641022, BZ#1497096, BZ#1505346, BZ#1592332)

La localización para RHEL se distribuye en varios paquetes

En RHEL 8, las localizaciones y las traducciones ya no se proporcionan en un solo glibc-commonpaquete. En su lugar, cada lugar e idioma está disponible en un glibc-langpack-CODEpaquete. Además, no todas las locales se instalan de forma predeterminada, sólo las seleccionadas en el instalador. Los usuarios deben instalar todos los demás paquetes de localización que necesiten por separado.

Para obtener más información sobre el uso de langpacks, véaseInstalling and using langpacks

(BZ#1512009)

strace actualizado a la versión 4.24

Red Hat Enterprise Linux 8 se distribuye con la versión 4.24 de la straceherramienta. Los cambios notables incluyen:

  • Se han añadido funciones de manipulación de llamadas del sistema con esta -e inject=opción. Esto incluye inyección de errores, valores de retorno, retardos y señales.
  • Se ha mejorado la calificación de las llamadas del sistema:

    • Se ha añadido una -e trace=/regexopción para filtrar las llamadas del sistema con expresiones regulares.
    • Pendiente de un signo de interrogación a una cualificación de llamada de sistema en la -e trace=opción, permite stracecontinuar, incluso si la cualificación no coincide con ninguna llamada de sistema.
    • Se ha añadido la designación de personalidad a las cualificaciones de llamada del sistema en la -e traceopción.
  • Se ha añadido la decodificación del motivo de kvm vcpusalida. Para ello, utilice la -e kvm=vcpuopción.
  • La libdwbiblioteca se utiliza ahora para el desbobinado de pilas cuando se utiliza la -kopción. Además, es posible el desmantelamiento de símbolos cuando la libibertybiblioteca está instalada en el sistema.
  • Anteriormente, la -ropción causó que se ignorara la -topción. Esto se ha arreglado y las dos opciones son ahora independientes.
  • Se ha añadido la opción[option]`-A para abrir archivos de salida en modo append.
  • Se ha añadido la -Xopción para configurar el formato de xlatsalida.
  • Se ha mejorado la decodificación de las direcciones de los zócalos con la -yyopción. Además, se ha añadido la impresión de números de bloque y de dispositivo de caracteres en -yymodo.

Además, se ha añadido, mejorado o actualizado la decodificación de los siguientes elementos:

  • netlink protocolos, mensajes y atributos
  • arch_prctl, bpf, getsockopt, io_pgetevent, , kern_featureskeyctl, prctl, , pkey_alloc, pkey_free, pkey_mprotect, , ptrace, rseq, , , setsockopt, socketstatxy otras llamadas del sistema
  • Muchos comandos para la llamada del ioctlsistema
  • Constantes de varios tipos
  • Rastreo de rutas para execveatllamadas inotify_add_watchde symlinkatsistema y mmapllamadas de sistema con argumentos indirectosinotify_initselect
  • Llamadas al sistema específicas para las arquitecturas ARM __ARM_NR_*
  • Listas de códigos de señales

(BZ#1641014)