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 :
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.
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); }
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.
Partager