El pasado 3 de mayo tuvo lugar el primer lanzamiento público de la novena versión de GCC: GCC 9.1.
Contiene muchas mejoras y adiciones significativas en comparación con el octavo.
versión.
Cambios generales
Opciones
- Los comandos que aceptan tamaño ahora admiten valores de 64 bits y sufijos para especificar el tamaño;
- Opción añadida -flive-parcheo,para controlar optimizaciones que son potencialmente destructivas para el reemplazo dinámico de código;
- Se agregó la opción --completion para admitir la finalización automática en el shell de comandos;
- Los diagnósticos del compilador ahora incluyen números de línea (-fno-diagnostics-mostrar-números-de-línea) Y
escriba información (fno-diagnostics-show-etiquetas); - Opción añadida -fdiagnostics-format=json generar diagnósticos en formato JSON;
- Opciones para especificar la alineación (-funciones-falsas, por ejemplo) ahora puede aceptar un par de opciones de alineación;
- Se agregaron opciones para filtrar la lista de archivos (-fprofile-filtro-archivos, -fprofile-excluir-archivos), que son instrumentados por el perfilador;
- AddressSanitizer ahora usa una alineación más compacta para detectar accesos no válidos a variables en la pila;
- Numerosas mejoras de salida -fopt-info;
- Opción añadida -fsave-optimización-registro guardar el informe de optimización en un archivo;
- Opción añadida -alineación-de-pila-fipa и -fipa-referencia-direccionable.
Nuevas funciones integradas
- __incorporado_esperar_con_probabilidad;
- __builtin_has_attribute;
- __builtin_speculación_valor_seguro.
Nuevo atributo
Otro
Numerosas mejoras en la generación de código relacionadas con:
- generación de construcciones de interruptores;
- optimizaciones entre procedimientos;
- optimización basada en información de perfiles;
- optimización en la etapa de montaje (LTO);
Además, el formato interno de gcov ahora es JSON y la nueva opción --usa-colores-picantes Implica colorear líneas de código según la frecuencia con la que se utilizan.
Idiomas
Calidad e integridad de la implementación. AbrirACC los lenguajes C, C++ y Fortran continúan mejorando.
lenguajes tipo C
- Se ha implementado soporte parcial para OpenMP 5.0;
- Característica añadida __builtin_convertvector;
- Advertencia agregada -Waddress-de-miembro-empaquetado;
- Mejoras a una serie de advertencias existentes;
- El texto de error al pasar una cantidad incorrecta de argumentos a una macro ahora incluye la declaración de la macro misma;
- Mejoras en las sugerencias de corrección de errores tipográficos.
C
- Admite _Static_assert con un argumento para -std=c2x (futuro estándar C);
- Nueva advertencia -Wabsoluto-valor, que detecta el tipo de argumento incorrecto para funciones como abs().
C + +
- Nuevas advertencias: -Wcopia en desuso,
-Winit-lista-vida,
-movimiento redundante,
-Wpesimizador-movimiento,
-Wclass-conversión; - Se está trabajando para implementar nuevas características del futuro estándar. C++2a;
- La interfaz ahora almacena información más precisa sobre una serie de elementos del código fuente, lo que le permite mostrar información más detallada en los diagnósticos;
- Diagnóstico mejorado para funciones sobrecargadas, operadores binarios, llamadas a funciones y cadenas de formato;
- Se agregaron correcciones automáticas admitidas por algunos entornos de desarrollo para una serie de errores populares (faltan paréntesis, espacios de nombres, errores tipográficos, etc.).
libstdc ++
- La implementación de C++17 ya no es experimental;
- Se agregaron algoritmos paralelos, , , A ya no requiere -lstdc++fs;
- Soporte experimental mejorado para C++2a ( , , std::bind_front, etc.);
- Soporte para abrir secuencias de archivos en Windows cuyas rutas contienen caracteres que no son caracteres;
- Soporte inicial en Windows;
- Soporte inicial para Networking TS.
D
La versión 2.076 del lenguaje D está incluida en GCC.
Fortran
- Soporte completo para E/S asincrónicas;
- Se implementó el argumento BACK para MINLOC y MAXLOC;
- Funciones FINDLOC e IS_CONTIGOUS implementadas;
- Se ha implementado la sintaxis para acceder a los componentes de números complejos: c%re y c%im;
- Sintaxis implementada str%len y a%kind;
- Se implementaron descriptores de C y encabezado ISO_Fortran_binding.h;
- Requisitos relajados para el resultado de las funciones MAX y MIN cuando uno de los argumentos es NaN;
- Opción añadida -fdec-incluir;
- Directiva añadida INCORPORADO.
libgccjit
- Característica añadida gcc_jit_context_add_driver_option.
Otro
Muchos cambios específicos de arquitectura y sistema operativo.
Fuente: linux.org.ru