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

C++ Discussion :

Clang passe en version 6.0.0


Sujet :

C++

  1. #1
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut Clang passe en version 6.0.0
    Clang passe en version 6.0

    Le frontend C/C++ et Objective C de l'infrastructure LLVM, clang, sort en version 6.0.0 avec le reste du projet. Voici, une liste (non exhaustive) des changements apportés par cette nouvelle version :
    • support de retpoline (pour éviter les attaques Spectre, variante 2) (avec ajout des options -mretpoline pour activer la protection et -mretpoline-external-chunk pour permettre à l'utilisateur de définir le thunk à utiliser) ;
    • ajout des avertissements :
      • -Wpragma-pack pour avertir de l'absence de fin de directive #pragma pack ou lorsque le compilateur quitte un fichier d'inclusion qui a changé l'alignement,
      • -Wpragma-pack-suspicious-include (désactivé par défaut) pour avertir qu'une structure ou une union est affectée par un alignement autre que celui par défaut,
      • -Wtautological-compare et -Wtautological-constant-compare pour avertir des soucis avec les comparaisons entre nombres signés ou non et zéro ou entre un nom et sa limite,
      • -Wnull-pointer-arithmetic donne des avertissements pour des opérations arithmétiques effectuées sur un pointeur NULL,
      • -Wdelete-non-virtual-dtor surveille aussi les destructions dans les entêtes systèmes et se déclenche pour indiquer la présence d'un destructeur non virtuel, permettant ainsi de se déclencher dans le destructeur d'un std::unique_ptr,
      • -Wunreachable-code intègre __try, __except et __leave ;

    • ajout du support des fichiers de configuration (les options proviennent d'un fichier, comme s'ils provenaient de la ligne de commande) ;
    • ajout des options -fdouble-square-bracket-attributes et -fno-double-square-bracket-attributes pour activer ou désactiver le support des attributs ;
    • ajout des options -std=c17, -std=gnu17 et -std=iso9899:2017 pour être compatible avec les options GCC. Ces options activent évidemment le support du C++17 ;
    • ajout de l'option -nostdlib++ pour ne pas lier la bibliothèque standard C++ ;
    • ajout de la macro __has_c_attribute() pour savoir si un attribut est géré en mode C ;
    • le langage C++ par défaut est maintenant C++14 (option gnu++14) et non plus gnu++98 ;
    • ajout du support de fonctionnalités prévues du C++20 :
      • support de __VA_OPT__ pour permettre aux macros d'avoir différentes expansions lorsqu'elles sont invoquées sans argument variable,
      • support de l'opérateur <=>,
      • support de l’initialisation par défaut des membres des champs de bits,
      • capture de *this pour les lambdas,
      • support des pointeurs vers les membres pour les pointeurs qualifiés de const & sur les objets temporaires.


    En plus, vous pouvez trouver des améliorations dans clang-format, l'analyseur statique et le nettoyeur de comportement indéterminé (UBSan). Pour ces raisons (et plein d'autres), il est toujours bon de mettre à jour ses logiciels de compilations.


    Votre opinion

    Utilisez-vous clang ? Quel en est votre usage ?


    Source

    Notes de publication
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur multiplateformes
    Inscrit en
    Mars 2003
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur multiplateformes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 273
    Points : 628
    Points
    628
    Par défaut
    Utilisez-vous clang ? Quel en est votre usage ?

    Oui - avec C++ Builder (Embarcadero) pour le développement d'applis mobiles Android et iOS.

  3. #3
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    delete-non-virtual-dtor etait deja dispo en 5.0.0.
    Apres, je suis bien content de cette nouvelle version, mais la doc reste toujours aussi mauvaise. Meme les release notes datent.

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Pour le destructeur virtuelle, c'est une mise à jour du comportement de l'avertissement. J'ose croire qu'en 5.0, il ne vérifiait pas les include systèmes alors que maintenant, c'est le cas et ça permet de vérifier ce cas au travers de l'utilisation d'une classe dans les unique_ptr (par exemple).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/09/2009, 09h59
  2. Google App Engine passe en version 1.2.5, découvrez les nouvelles fonctionnalités
    Par Gordon Fowler dans le forum Plateformes (Java EE, Jakarta EE, Spring) et Serveurs
    Réponses: 0
    Dernier message: 04/09/2009, 17h09
  3. Réponses: 0
    Dernier message: 04/09/2009, 17h09
  4. Yellow Dog Linux passe à la version 6.2
    Par matrix788 dans le forum Distributions
    Réponses: 0
    Dernier message: 30/06/2009, 13h00
  5. Yellow Dog Linux passe à la version 6.2
    Par matrix788 dans le forum Actualités
    Réponses: 0
    Dernier message: 30/06/2009, 13h00

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