Avec la sécurité de défaut de spectre et d’autres corrections
Le c / c ++ et l’objectif c de l’infrastructure llvm, clang, est lancé dans le modèle 6.Zero.0 avec la relaxation de l’affectation. Voici une liste (maintenant non exhaustive) des modifications apportées à travers cette nouvelle version:
Retpoline assist (pour éviter les attaques par spectre, version 2) (avec l’ajout d’options -mretpoline pour permettre la protection et -mretpoline-outside-chew pour permettre à l’utilisateur de définir le thunk à appliquer);
Ajouter des avertissements:
-wpragma-p.C. Pour avertir de l’absence d’arrêt de la directive #pragma% ou alors que le compilateur laisse un enregistrement d’inclusion qui a changé l’alignement,
-wpragma -% – suspicious-include (désactivé par défaut) pour avertir qu’une forme ou une union est affectée par un alignement en plus de celui par défaut,
-wtautological-evaluate et -wtautological-constant-examine pour avertir des problèmes avec des comparaisons entre les nombres signés et non signés et zéro ou entre un nom et sa restriction,
-wnull-pointer-arithmetic donne des avertissements pour les opérations arithmétiques terminées sur un pointeur nul,
-wdelete-non-virtual-dtor aussi unités d’affichage vidéo les destructions dans les en-têtes de périphériques et les déclencheurs pour signifier la présence d’un destructeur non-virtuel, déclenchant ainsi dans le destructeur d’un std :: unique_ptr,
-wunreachable-code intègre __try, __except, et __leave;
Prise en charge des fichiers de configuration (les options proviennent d’un rapport, comme si elles provenaient de la ligne de commande);
Y compris les attributs -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 bien adapté avec les options gcc. Ces alternatives incitent vivement l’aide c ++ 17;
Introduit l’option -nostdlib ++ pour ne plus lier la bibliothèque c ++ standard;
Inclure la macro __has_c_attribute () pour découvrir si un attribut est géré en mode c;
Le langage c ++ par défaut est maintenant c ++ 14 (choix gnu ++ 14) et maintenant pas gnu ++ 98;
Prise en charge des fonctionnalités c ++ 20:
__va_opt__ guide pour permettre aux macros d’avoir des expansions exceptionnelles tout en étant invoqué avec des arguments variables,
Aide de l’opérateur <=>,
Guide pour l’initialisation par défaut des participants sujet bits,
Capture de * ceci pour les lambdas,
Conseils d’aide aux contributeurs pour les pointeurs const et les gadgets transitoires.
De même, vous pouvez trouver des améliorations dans le format clang, l’analyseur statique et le purificateur de comportement indéterminé (ubsan). Pour ces motifs (et beaucoup d’autres), il est toujours bon de mettre à jour son logiciel de compilation.