El compilador GCC GNU agrega compatibilidad con C ++ 17

Con la versión 7.1 de GCC (GNU Compiler Collection), lanzada esta semana, la plataforma obtiene soporte temprano para el estándar C ++ 17 y mejoras de diagnóstico.

La versión 7.1 tiene una interfaz C ++ con soporte experimental para todas las especificaciones preliminares de C ++ 17. El -std=c++1zy -std=gnu++1zopciones y el libstdc++son compatibles, y la biblioteca tiene más de C ++ 17 proyectos de biblioteca de características implementadas. La versión anterior de GCC 6.1 cumplía con el estándar C ++ 14.

La serie GCC 7 se diferencia de las versiones anteriores al usar LRA (Local Register Allocator) de forma predeterminada para nuevos destinos y desaprobar las extensiones Cilk + para los lenguajes C y C ++. Además, algunos comportamientos se han relajado para mejorar la compilación o el rendimiento en tiempo de ejecución. Sin embargo, algunos cambios podrían "causar molestias" al migrar a GCC 7, según las notas de la versión, que citan problemas de preprocesador y C, así como problemas del lenguaje C ++, como reglas más estrictas para las plantillas. "GCC 7 ya no acepta varias construcciones mal formadas que implican el uso de plantillas", dicen las notas.

GCC 7.1 también impulsa los diagnósticos emitidos, incluidas las ubicaciones mejoradas, y las mejoras del optimizador aparecen en todas las optimizaciones intra e interprocedimiento, optimizaciones de tiempo de enlace y varios backends de destino, como adiciones de pase de fusión de tiendas, optimización de código de elevación, división de bucle, y mejoras de envoltura retráctil. Además, el desinfectante de direcciones de GCC ahora puede informar los usos de las variables después de que dejan su alcance. GCC se puede configurar para que la API OpenMP se descargue en GPGPU Nvidia PTX, pero es posible que algunos códigos compilados con versiones anteriores de GCC necesiten ajustes. La colección incluye interfaces para C, C ++, Objective-C, Fortran, Ada y Go.