Vous n'avez pas encore de notification

Page d'accueil

Options d'affichage

Abonné

Actualités

Abonné

Des thèmes sont disponibles :

Thème de baseThème de baseThème sombreThème sombreThème yinyang clairThème yinyang clairThème yinyang sombreThème yinyang sombreThème orange mécanique clairThème orange mécanique clairThème orange mécanique sombreThème orange mécanique sombreThème rose clairThème rose clairThème rose sombreThème rose sombre

Vous n'êtes pas encore INpactien ?

Inscrivez-vous !

GCC 5.0 prochainement disponible avec de nombreuses améliorations

Un « petit » bond de C89 vers C11
Logiciel 2 min
GCC 5.0 prochainement disponible avec de nombreuses améliorations
Crédits : scyther5/iStock

GCC est un ensemble de compilateurs largement utilisé pour la création des logiciels open source. La version 5.0, qui sera publiée dans quelques semaines, proposera une vaste liste d’améliorations, dont la plus importante est très clairement l’utilisation par défaut de la norme C11, en lieu et place de la C89.

GCC passe de la norme C89 à C11

GCC (GNU Compiler Collection) 5.0 arrivera bientôt et les développeurs devront absorber une vraie vague de nouveautés. La plus importante concerne ceux qui codent en C puisque le compilateur utilisera par défaut GNU11 au lieu de GNU89. Il s’agit respectivement des implémentations des normes ISO C11 et C89, ce qui signifie une modernisation évidente dans le compilateur dans ses réglages par défaut. On remarquera d’ailleurs que GCC avait fait l’impasse sur la norme C99, sortie entre temps, comme norme de base pour la compilation.

Les normes C définissent le socle standard qu’un développeur peut attendre d’un compilateur en particulier. Par exemple, C11 a apporté la possibilité d’aligner les structures, le support des structures et des unions anonymes, a amélioré la gestion du multithreading et la gestion des chaines Unicode, etc. Bien entendu, rien n’empêchait les développeurs d’activer la norme C11, mais l’utilisation par défaut reste une étape cruciale.

Nombreux ajouts d'architectures et optimisations diverses

GCC 5.0 contiendra également de nombreuses améliorations. Par exemple, les optimisations interprocédurales (conçues pour améliorer les performances dans le code utilisant fréquemment les mêmes fonctions de petite et moyenne tailles) peuvent réaliser une nouvelle passe Identical Code Folding (ICF) permettant de regrouper les fonctions identiques. Diverses optimisations sont présentes, notamment sur les tables virtuelles, les variables en écriture seule ou encore quand les link-time optimizations (LTO) sont activées.

Côté support, cette version 5.0 de GCC ne sera pas en reste, avec notamment :

  • Les extensions AVX-512 dans les futurs processeurs Xeon de la génération Skylake
  • De nombreuses fonctionnalités de C++14
  • L’interface de programmation parallèle Cilk Plus d’Intel
  • OpenMP 4.0 (programme parallèle là encore) pour C, C++ et Fortran
  • Le langage Go (de Google) dans sa version 1.4.2
  • MIPS Release 3, 5 et 6
  • L’arrivée de la compilation du Just-In-Time (JIT) pour la bibliothèque libgccjit, même si cette dernière est toujours expérimentale.

Les développeurs intéressés pourront lire sur le site officiel de GCC la très longue liste des améliorations prévues. Nous mettrons évidemment à jour cette actualité pour signaler la disponibilité du compilateur. On notera également que la future version 22 de Fedora intègrera GCC 5.0 par défaut.

51 commentaires
Avatar de vampire7 INpactien
Avatar de vampire7vampire7- 07/04/15 à 13:18:44

Etant un grand utilisateur de MinGW, j'attends de voir si ce sera plus performant que la 4.7, parce que pour l'instant, autant au niveau taille de code que vitesse d'exécution, les 4.8 et 4.9 (surtout la 4.8 qui est une horreur sans nom) sont vraiment à la ramasse.
Dans tous mes projets, je suis bloqué sur la 4.7 pour ces raisons.

Avatar de tazvld Abonné
Avatar de tazvldtazvld- 07/04/15 à 13:20:39

Plus qu'à attendre que tout le monde se mettent à jour...
.... et je crains que le processus dure encore plus longtemps que la disparition d'IE6.

Avatar de lancelotsix Abonné
Avatar de lancelotsixlancelotsix- 07/04/15 à 13:22:06

> On remarquera d’ailleurs que GCC avait fait l’impasse sur la norme C99 sortie entre temps.

Dire que l'impasse a été faite sur c99 est un peu fort... Voir ici et pour les supports de c99 dans gcc (depuis la version 4.5).

Après, on es d'accord, par défaut, gcc ne compile pas du c99, il faut lui demander explicitement pour qu'il le fasse.

Avatar de Vincent_H Équipe
Avatar de Vincent_HVincent_H- 07/04/15 à 13:28:57

Ça tombe bien, on parle de norme par défaut pour la compilation. Mais j'ai insisté un peu plus sur ce point dans une petite modification.

Avatar de kade Abonné
Avatar de kadekade- 07/04/15 à 13:34:39

Je me demandais si "ton" problème venait de GCC ou du couple GCC/Windows.

Avatar de vampire7 INpactien
Avatar de vampire7vampire7- 07/04/15 à 13:53:11

Qu'est-ce que Windows vient faire là-dedans ?
Je parle de performance pure, de code effectuant des calculs qui pourrait être porté sur Linux avec pratiquement aucune modification.
Quant aux appels système, c'est toujours le même système qui est en-dessous. Windows ne se décide pas à ralentir subitement s'il détecte que l'exécutable est issu d'une version de GCC qu'il n'aime pas.

Je ne suis d'ailleurs pas le seul à avoir constaté ça : https://bbs.archlinux.org/viewtopic.php?id=160566
Et là, c'est pas du Windows...

Pour moi c'est un fait : il n'y a aucune vérification des performances globales dans la pratique. Lorsque la 4.7 est sortie, je l'ai comparée aux compilos d'Intel et de MS : GCC 4.7 produit un code presque aussi rapide que le compilateur d'Intel de l'époque (et bien sûr, je l'ai testé sur plusieurs trucs).
Et je me souviens, avant d'avoir arrêté de coder pendant quelques années, qu'il y a une dizaine d'années, c'était pareil : les performances variaient vers le haut ou vers le bas d'une version à l'autre, et les différences étaient à chaque fois énormes, tout comme aujourd'hui.

Ca ne m'arrange pas parce que l'implémentation des intrinsics AVX de la 4.7 n'est pas complète. Et l'ASM n'est plus trop ma tasse de thé.

Avatar de kade Abonné
Avatar de kadekade- 07/04/15 à 14:03:50

vampire7 a écrit :

Je parle de performance pure, de code effectuant des calculs qui pourrait être porté sur Linux avec pratiquement aucune modification.
[...]
Je ne suis d'ailleurs pas le seul à avoir constaté ça : https://bbs.archlinux.org/viewtopic.php?id=160566
Et là, c'est pas du Windows...

Merci pour ces précisions.

C'était par curiosité, j'utilise très peu GCC (mais CC sous UX)

Avatar de brokensoul INpactien
Avatar de brokensoulbrokensoul- 07/04/15 à 14:09:17

Peut être pas assez présent dans la news, mais ca fait longtemps que C++11 était supporté, contrairement par exemple à msvc.. On peut critiquer GCC pour la vitesse de compilation (encore que, avec ccache sous linux ce n'est pas vraiment un souci), mais on peut dans la même phrase se souvenir que les binaires produits sont super rapides, et que le support des nouvelles normes arrive bien plus vite que chez Microsoft.
 On utilise c++11 autant que possible dans ma boîte, ca change vraiment la vie, presqu'un nouveau langage (mais toujours aussi rapide). Le meilleur de plusieurs mondes !

Édité par brokensoul le 07/04/2015 à 14:11
Avatar de anonyme_1381648ca5f01dae1be3577db260942c INpactien

{{trololololo}}
booba à propos du développeur C "fouiny babe" : sale pointeur!{{/trololololo}}

Avatar de Mudman INpactien
Avatar de MudmanMudman- 07/04/15 à 14:16:15

La référence en matière de perf c'est quand même CLang. Même si GCC rattrape son retard.

Il n'est plus possible de commenter cette actualité.
Page 1 / 6