En effet, on peut citer les grandes lignes suivantes :
- support complet du C++11 et C++14 (notamment grâce au passage à la Dual ABI) ;
- la compilation C adopte l'utilisation du C11 et des extensions GNU, par défaut ;
- nombreuses optimisations (optimisations interprocédurales, nouvelle passe pour les codes identiques, améliorations à l'édition des liens, ...) ;
- support partiel de OpenACC et support complet de OpenMP ;
- le nommage des versions a changé.
Dual ABI
La bibliothèque standard C++ apporte une nouvelle ABI, incluant les implémentations de std::string et std::list. Cela a été nécessaire pour intégrer pleinement le standard C++11. Pour des raisons de compatibilité, le nommage de la bibliothèque n'a pas été modifié et les deux implémentations (ancienne et nouvelle) sont supportées en parallèle. Cela est possible grâce à un nouveau namespace std::__cxx11::. La macro _GLIBCXX_USE_CXX11_ABI détermine quelle ABI utiliser. Pour utiliser l'ancienne, il suffit de définir la macro à 0, avant l'inclusion des en-têtes. Il est possible que certaines distributions définissent cette macro à 0, par défaut et il faudra donc mettre à 1 pour utiliser la nouvelle ABI.
À cause des différences d'ABI, il est possible d'avoir des erreurs à l'édition de liens, notamment si vous utilisez une bibliothèque tierce ayant recours à une autre ABI que celle de votre programme. Les solutions sont :
- recompiler la bibliothèque tierce avec GCC 5.1 ;
- recompiler votre programme en désactivant la nouvelle ABI.
Activation du C11 par défaut
Le C11 change, entre autres, le comportement du mot clé inline. Comme les répercussions sont visibles et impactent le développeur, l'équipe de GCC a écrit un guide de migration vers GCC 5. Si vous ne voulez pas de C11, vous pouvez toujours utiliser gnu89 avec l'option de compilation -std=gnu89.
De plus, pour faciliter la migration, GCC propose deux options d'avertisseurs : -Wc90-c99-compat et -Wc99-c11-compat.
Nommage des versions
Le nommage des versions change. La prochaine version majeure sera 6.1 et est prévue pour la fin de l'année. La prochaine version mineure sera appelée 5.2 et est prévue pour juin/juillet. On remarque ainsi que GCC perd un indicateur dans les versions (passage d'une numérotation X.Y contre X.Y.Z).
Compilateur JIT
GCC peut être compilé comme une bibliothèque partagée et peut donc être intégré dans une application pour servir de compilateur JIT. Cela est possible pour le C et le C++, mais aussi pour le D et le Python. La bibliothèque appelée libgccjit est sous licence GPLv3. Pour le moment, la bibliothèque n'est qu'au stade expérimental.
Pour connaître la totalité des changements, je vous invite à consulter cette page officielle.
Vous pouvez dès à présent télécharger GCC 5.1 sur le site officiel ou attendre son intégration dans les paquets de votre distribution préférée.
Source
Site officiel de GCC
Votre opinion
Allez-vous passer directement à GCC 5 ? Quels sont les avantages que vous pouvez en tirer ?
Utilisez-vous toujours GCC ou êtes-vous passé à LLVM ? Pourquoi ?