O 3 de maio tivo lugar a primeira versión pública da novena versión de GCC: GCC 9.1.
Contén moitas melloras e engadidos significativos en comparación co oitavo
versión.
Cambios xerais
Opcións
- Os comandos que aceptan tamaño agora admiten valores de 64 bits e sufixos para especificar o tamaño;
- Opción engadida -flive-parcheo,para controlar optimizacións que son potencialmente destrutivas para a substitución dinámica de código;
- Engadida a opción --completion para admitir o autocompletado no shell de comandos;
- Os diagnósticos do compilador inclúen agora números de liña (-fno-diagnostics-show-line-numbers) E
información de tipo (fno-diagnostics-show-labels); - Opción engadida -fdiagnostics-format=json para emitir diagnósticos en formato JSON;
- Opcións para especificar o aliñamento (-Falign-funcións, por exemplo) agora pode aceptar un par de opcións de aliñamento;
- Opcións engadidas para filtrar a lista de ficheiros (-fprofile-filter-files, -fprofile-exclude-files), que son instrumentados polo perfilador;
- AddressSanitizer agora usa un aliñamento máis compacto para detectar accesos non válidos a variables da pila;
- Numerosas melloras de saída -fopt-info;
- Opción engadida -fsave-optimization-record para gardar o informe de optimización nun ficheiro;
- Opción engadida -fipa-stack-alignment и -referencia-fipa-direccionable.
Novas funcións integradas
- __esperanza_con_probabilidade_integrada;
- __builtin_ten_atributo;
- __valor_seguro_de_especulación_integrada.
Novo atributo
Outro
Numerosas melloras na xeración de código relacionadas con:
- xeración de construcións de interruptores;
- optimizacións interprocedementais;
- optimización baseada na información de perfil;
- optimización na fase de montaxe (LTO);
Tamén o formato interno de gcov é agora JSON e a nova opción --use-cores-quentes implica colorear liñas de código en función da frecuencia con que se usan.
Idiomas
Calidade e integridade da implantación OpenACC as linguaxes C, C++ e Fortran seguen mellorando.
Linguaxes tipo C
- Implementouse un soporte parcial para OpenMP 5.0;
- Función engadida __vector_converter integrado;
- Aviso engadido -Enderezo-do-membro-empacado;
- Melloras nunha serie de avisos existentes;
- O texto de erro ao pasar o número incorrecto de argumentos a unha macro agora inclúe a declaración da propia macro;
- Melloras nas suxestións de corrección de erros tipográficos.
C
- Soporta _Static_assert cun argumento para -std=c2x (futuro estándar C);
- Novo aviso -Valor-Wabsoluto, que capta o tipo de argumento incorrecto para funcións como abs().
C ++
- Novos avisos: -Wcopia en desuso,
-Winit-list-lifetime,
-Wredundante-movemento,
-Wpessimizing-move,
-Wclass-conversión; - Estase traballando para implementar novas funcións do estándar futuro C++2a;
- O frontend agora almacena información máis precisa sobre unha serie de elementos do código fonte, o que lle permite mostrar información máis detallada nos diagnósticos;
- Diagnóstico mellorado para funcións sobrecargadas, operadores binarios, chamadas de función e cadeas de formato;
- Engadíronse correccións automáticas soportadas por algúns contornos de desenvolvemento para unha serie de erros populares (faltan parénteses, espazos de nomes, erros tipográficos, etc.).
libstdc++
- A implementación de C++17 xa non é experimental;
- Engadidos algoritmos paralelos, , , A xa non require -lstdc++fs;
- Soporte experimental mellorado para C++2a ( , , std::bind_front, etc.);
- Soporte para abrir fluxos de ficheiros en Windows cuxos camiños conteñan caracteres que non sexan caracteres;
- Apoio inicial en Windows;
- Soporte inicial para Networking TS.
D
A versión en lingua D 2.076 inclúese en GCC.
Fortran
- Soporte completo para E/S asíncrona;
- Implementouse o argumento BACK para MINLOC e MAXLOC;
- Implementáronse as funcións FINDLOC e IS_CONTIGOUS;
- Implementouse a sintaxe para acceder aos compoñentes dos números complexos: c%re e c%im;
- Implementouse a sintaxe str%len e a%kind;
- Implementáronse descritores C e cabeceira ISO_Fortran_binding.h;
- Requisitos relaxados para o resultado das funcións MAX e MIN cando un dos argumentos é NaN;
- Opción engadida -fdec-include;
- Directiva engadida EDIFICADO.
libgccjit
- Función engadida gcc_jit_context_add_driver_option.
Outro
Moitos cambios específicos de arquitectura e SO.
Fonte: linux.org.ru