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 :

Qu'attendre de GCC 6 en C++ ?


Sujet :

GCC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2008
    Messages
    26 772
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Ao�t 2008
    Messages : 26 772
    Par d�faut Qu'attendre de GCC 6 en C++ ?
    Avec le nouveau cycle de GCC, la prochaine version majeure sera num�rot�e 6 et sera la premi�re � apporter des nouveaut�s par rapport � GCC 5, sorti en avril dernier dans sa premi�re version finale (5.1). La principale nouveaut� concerne la norme C++ par d�faut : adieu C++98, GCC s�ouvre maintenant au vingt et uni�me si�cle en activant C++14 par d�faut ! Il est toujours possible de compiler son code en C++98 ou C++11 avec l�option de compilation ad�quate (std=c++11, par exemple).

    Toujours au niveau des normes, quelques points qui devraient faire partie de la prochaine r�vision de C++, en 2017, sont d�j� impl�ment�s (et accessibles par l�option std=c++1z). Cette r�vision n��tant pas achev�e, toutes ces fonctionnalit�s sont marqu�es comme exp�rimentales. La principale est nomm�e concepts : il s�agit d�une extension du syst�me de templates du langage pour inclure des garanties formelles ; par exemple, pour imposer que le type param�tr� T d�une fonction puisse �tre compar�, on pourrait �crire ce bout de code :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    template<typename T> requires LessThanComparable<T>
    const T& min(const T &x, const T &y) {
        return (y < x) ? y : x;
    }
     
    auto concept LessThanComparable<typename T> {
        bool operator<(T, T);
    }
    Gr�ce � ces concepts, le compilateur pourrait fournir des messages d�erreur beaucoup plus explicites qu�actuellement ; ils pourraient �tre utilis�s par les outils d�analyse statique du code pour des diagnostics plus pr�cis ou encore guider l�optimisation du compilateur. Initialement, ces concepts �taient pr�vus pour C++11, mais n��taient pas encore estim�s suffisamment pr�ts alors. Au niveau de la biblioth�que standard C++17, les extensions propos�es pour la gestion des fichiers et une s�rie de fonctions estim�es de base sont impl�ment�es.

    Architectures

    Pour ARM64, le compilateur peut maintenant d�terminer le processeur utilis� et optimiser au mieux pour ce compilateur, sans n�cessiter de param�tre particulier pour march et compagnie. Aussi, l�optimisation lors de l��dition des liens fonctionne sur plusieurs unit�s de compilation.

    Sur les processeurs Intel, les extensions de protection de la m�moire (MPX) sont maintenant activ�es par d�faut : ces instructions des processeurs de g�n�ration Skylake sont pr�vues pour augmenter la s�curit� lors de l�ex�cution avec une v�rification mat�rielle des r�f�rences des pointeurs. Sur ces m�mes processeurs (gamme Xeon uniquement), pour la performance, les extensions AVX-512 sont maintenant g�r�es : elles servent � ex�cuter des op�rations math�matiques sur des vecteurs de cinq cent douze bits d�un coup (plut�t que d�effectuer une s�rie d�instructions les unes � la suite des autres), ce qui a un impact principalement sur le code scientifique.

    C�t� AMD, les processeurs de la famille Zen, qui devraient d�barquer � la fin de l�ann�e, sont d�j� g�r�s.

    OpenMP est une norme pr�vue pour aider � parall�liser du code source C, C++ et Fortran. La nouvelle version 4.5 de la norme est compl�tement impl�ment�e pour les compilateurs C et C++.

    Diagnostics du compilateur

    Une nouvelle option, -fsanitize=bounds-strict, effectue des v�rifications plus pouss�es et plus strictes au niveau des bornes des tableaux lors des appels.

    Cependant, le nouvel avertissement qui a fait le plus de bruit concerne l�indentation : par exemple, si un bout de code marque par son indentation qu�il devrait d�pendre d�une condition� mais si la syntaxe utilis�e montre le contraire, le compilateur donnera un avertissement. Il a d�j� montr� ses effets positifs pour une partie des elfutils : Mark Wielard a pu corriger un d�faut � g�nant � dans le code. Il doit cependant �tre activ� s�par�ment avec le param�tre -Wmisleading-indentation.

    Ce type d�erreur a d�j� men� � des failles de s�curit�, notamment chez Apple, o� une fonction retournait sa valeur avant d�avoir effectu� tous les tests de s�curit� n�cessaires. Encore une fois, l�indentation indiquait que le code �tait correct� alors que le retour se faisait sans la moindre condition.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    static OSStatus
    SSLVerifySignedServerKeyExchange(SSLContext *ctx, bool isRsa, SSLBuffer signedParams,
                                     uint8_t *signature, UInt16 signatureLen)
    {
        OSStatus        err;
        …
     
        if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)
            goto fail;
        if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
            goto fail;
            goto fail;
        if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
            goto fail;
        …
     
    fail:
        SSLFreeBuffer(&signedHashes);
        SSLFreeBuffer(&hashCtx);
        return err;
    }

    Cependant, pas mal d�utilisateurs craignent que ce nouveau type d�avertissements ne cr�e un grand nombre de faux positifs � c�est d�ailleurs pour cette raison qu�il n�est pas activ� par d�faut.


    GCC 6.1, la premi�re version stable de GCC 6, devrait arriver aux alentours de mars ou avril. Il devrait �tre le compilateur par d�faut pour Fedora 24, dont la sortie devrait �tre retard�e jusque juin pour laisser le temps de recompiler tous les paquets avec cette nouvelle version de GCC.


    Sources : GCC 6 Release Series, C++1z Support in GCC, libstdc++ status, Among The Changes/Features Coming For GCC 6, GCC 6 To Enable Intel�s MPX Library By Default, GCC 6 Will Warn You About Misleading Code Indentations, Apple�s SSL/TLS bug, Fedora 24 Will Likely Be Delayed.

    Et vous ?

    Qu'en pensez-vous ?

    Voir aussi

    Forum GCC


    Ce contenu a �t� publi� dans C++ par dourouc05.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Cr�er des applications graphiques en Python avec PyQt5
    Cr�er des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  2. #2
    Invit�
    Invit�(e)
    Par d�faut
    Citation Envoy� par dourouc05 Voir le message
    La principale est nomm�e concepts : il s�agit d�une extension du syst�me de templates du langage pour inclure des garanties formelles ; par exemple, pour imposer que le type param�tr� T d�une fonction puisse �tre compar�, on pourrait �crire ce bout de code : ...
    Whaou !!!
    � ce rythme l� on aura la m�me expressivit� que Haskell... dans deux si�cles.

  3. #3
    Expert confirm�
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par d�faut
    C'est pas con cette histoire d'avertissements sur l'indentation. Je trouve particuli�rement astucieux que cette nouvelle version du compilateur soit capable de tenir compte de l'intention du d�veloppeur dans quelque chose qui a plus trait au style de codage qu'au code lui-m�me.
    La FAQ JavaScript � Les cours JavaScript
    Touche F12 = la console → l�outil indispensable pour d�velopper en JavaScript !

  4. #4
    Membre actif
    Homme Profil pro
    Lyc�en
    Inscrit en
    Juillet 2015
    Messages
    26
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 26
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Lyc�en

    Informations forums :
    Inscription : Juillet 2015
    Messages : 26
    Par d�faut
    Aura-t-on enfin droit � une impl�mentation du multithreading sur Windows ?

  5. #5
    Responsable Syst�mes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Ao�t 2011
    Messages
    18 267
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Gestion de parcs informatique
    Secteur : High Tech - Mat�riel informatique

    Informations forums :
    Inscription : Ao�t 2011
    Messages : 18 267
    Par d�faut
    Pour du C simple, compiler en C++14 aura t'il des cons�quences ? N'�tant pas d�veloppeur, je ne connais m�me pas les apports des versions.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

Discussions similaires

  1. R�ponses: 3
    Dernier message: 25/11/2002, 14h15
  2. R�ponses: 1
    Dernier message: 14/11/2002, 00h09
  3. R�ponses: 1
    Dernier message: 13/11/2002, 20h34
  4. [VB6] attendre un événement pour continuer l'exécution
    Par Argonz dans le forum VB 6 et ant�rieur
    R�ponses: 21
    Dernier message: 12/11/2002, 13h08
  5. [Kylix] gcc et kylix
    Par alexsmadja dans le forum EDI
    R�ponses: 1
    Dernier message: 28/05/2002, 10h00

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