IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GCC Discussion :

Fedora et GCC 6 montrent de mauvaises pratiques de codage


Sujet :

GCC

  1. #1
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 675
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 675
    Points : 188 681
    Points
    188 681
    Par défaut Fedora et GCC 6 montrent de mauvaises pratiques de codage
    Pour leur version 24, les développeurs de la distribution Linux Fedora ont notamment voulu utiliser la dernière version du compilateur GCC, qui sera la GCC 6.1 quand la nouvelle version de la distribution sera disponible (GCC 6 est prévu pour avril 2016, Fedora 24 vers juin). Ainsi, cette semaine, les développeurs ont lancé une compilation complète de l’entièreté des paquets de Fedora, en préparation de ce changement de compilateur.

    Leur processus était le suivant : d’abord tenter une compilation de tous les 17 741 paquets avec GCC 6, puis, pour ceux dont la compilation a échoué, retenter la compilation avec GCC 5. Si la compilation échoue deux fois, le problème vient du paquet, sinon de GCC. Un peu moins de mille paquets ont ainsi échoué deux fois, ce qui en laisse à peu près six cents qui ont échoué avec GCC 6 mais pas GCC 5. En comparaison, pour le passage de GCC 4.9 à GCC 5, moins de la moitié avait posé problème. La nouvelle version de GCC serait-elle si mauvaise ?

    Effectivement, une série de ces problèmes était due à des régressions au niveau de GCC, des défauts qui ont rapidement été corrigés en vue de la sortie de la version finale. La majorité des cas, cependant, vient des développeurs des applications concernées. Pour une série d’entre eux, le problème vient du fait que GCC 6 compilera le code C++ par défaut en mode C++14 (au lieu de C++98, une norme bien dépassée) : ces paquets n’étaient pas prêts et ont dû être recompilés avec GCC 5.

    Pour d’autres, certains changements dans l’implémentation de la bibliothèque standard C++ et, surtout, de nouveaux messages d’erreur ont montré des pratiques de programmation douteuses dans le chef des développeurs des applications disponibles dans Fedora. Les réponses des développeurs de GCC sont parfois éloquentes quant à ces mauvaises pratiques :

    The code is nonsense, what’s it even supposed to do? […] It’s useless, and only compiled by accident.
    Allowing it with -fpermissive might make sense though, as that flag allows all kinds of terrible rubbish to compile.
    Les mêmes défauts seront probablement remarqués par les autres distributions en passant à GCC 6, comme Gentoo, habituellement prompte à se mettre à jour.

    Source : Fedora mass rebuild 2016.
    Ce contenu a été publié dans C++ par dourouc05.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Tant mieux si ça peut inciter les développeurs à mettre à jour et à assainir leur code. Mais en même temps, ce n'est pas très surprenant qu'un compilateur C++14 qui n'est pas encore sorti n'arrive pas à compiler certains codes C++98...


    Citation Envoyé par dourouc05 Voir le message
    certains changements [...] ont montré des pratiques de programmation douteuses dans le chef des développeurs des applications disponibles dans Fedora.
    Je ne comprends pas cette phrase : c'est quoi une pratique de programmation dans le chef des développeurs ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 21
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par groharpon42 Voir le message
    Je ne comprends pas cette phrase : c'est quoi une pratique de programmation dans le chef des développeurs ?
    Un exemple est dans l'article : https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69550

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    typedef struct mytype {
        struct mytype *fieldptr0[0];
        struct mytype *fieldptr[];
    } mytype;
    - Un VLA peut être présent dans une structure, à condition que ce soit le dernier membre de cette structure et qu'elle contienne au moins un champ autre que le VLA en question (ISO C99).
    - Un array de taille 0 est une extension GNU C, extension assez pratique pour implémenter un protocole réseau de style [header:2] [size:2] [payload:n] : https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html

    Ici, on est donc dans un cas complètement bordeline où on a rajouté un champ inusité de taille 0 dans le seul but d'avoir un VLA seul dans une structure. Ca compilait, ça ne compile plus, les devs de gcc considèrent que c'était un bug et que ça a été corrigé, et les devs de Julia sont embêtés parce que cette structure est dans un header public (et fait donc partie de l'API).

    Je suis plutôt d'accord avec l'équipe de GCC

Discussions similaires

  1. Quelles mauvaises pratiques de développement doivent disparaitre du Web ?
    Par Gordon Fowler dans le forum Général Conception Web
    Réponses: 72
    Dernier message: 30/07/2013, 05h22
  2. Grain de sel aléatoire, bonne ou mauvaise pratique ?
    Par Sergejack dans le forum Sécurité
    Réponses: 1
    Dernier message: 13/08/2009, 10h18
  3. typeid, mauvaise pratique de programmation ?
    Par poukill dans le forum C++
    Réponses: 8
    Dernier message: 08/06/2009, 18h07
  4. Mauvaise pratique ? throw new exception()
    Par AsPrO dans le forum Langage
    Réponses: 4
    Dernier message: 24/04/2009, 11h36
  5. [FEDORA] Installation gcc
    Par star_light dans le forum RedHat / CentOS / Fedora
    Réponses: 3
    Dernier message: 02/04/2005, 14h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo