Bien que le comité ne soit pas obligé de commencer à réviser la norme actuelle, il se passe beaucoup de choses qui peuvent ou influencent directement le C. Les exemples en sont l'évolution des langages de programmation de type C (C ++, Java et C#), la menace croissante pour la sécurité sur Internet, la prise de conscience croissante des vulnérabilités des langages de programmation, le ralentissement des progrès de la loi de Moore conduisant à un besoin croissant d'exploiter un parallélisme accru et la mise à jour des normes dans des domaines connexes tels que l’arithmétique en virgule flottante.
Le Comité s’est donc efforcé d’améliorer la portabilité tout en maintenant la définition de certaines caractéristiques de C dépendant de la machine. Il a tenté d'intégrer de nouvelles idées précieuses sans perturber la structure et le tissu de base du langage. Il a essayé de développer un langage clair et cohérent sans invalider les programmes existants. Le premier brouillon contenant les modifications apportées jusqu'ici lors de la réunion d'octobre 2018 du comité à Pittsburgh vient d'être publié.
La plupart des modifications approuvées jusqu'à présent pour C2x n'impliquent pas l'ajout de nouvelles fonctionnalités, mais plutôt clarifient et affinent le comportement de C dans différentes implémentations en ce qui concerne le C ++. L'accent mis sur le raffinement va dans le sens de l'évolution des révisions précédentes du C11 et plus récemment du C17. Voici quelques changements acceptés jusqu'à présent pour le C2x :
- une clarification du mot clé restrict utilisé pour informer le compilateur qu'un objet donné en mémoire n'est accessible que par ce pointeur, à titre d'optimisation N2260 ;
- harmonisation static_assert avec C ++ N2265 ;
- meilleures définitions du comportement des syndicats DR 499 ;
- formats d'évaluation des points flottants N2186 ;
- etc.
Quelques modifications ont été aussi votées dans le C2x avec une période de 6 mois pour les éventuels commentaires ou objections en attendant la prochaine réunion du comité en avril 2019 à Londres :
- exigences d'alignement pour les fonctions de gestion de la mémoire N2293 ;
- facilitez la définition des types entiers étendus, N2303 ;
- ajouter des types entiers larges ou bignum ;
- ajoutez des interfaces génériques de type pour les fonctions de chaîne à la bibliothèque C, N2068 ;
- ajouter des constantes générales pour tous les types de données ;
- étendre le concept des expressions constantes de nombre entier ;
- etc.
La feuille de route actuelle pour C2x prévoit au moins deux ans de plus pour que les propositions soit introduites. Le WG14 vise une norme du langage révisée d'ici la fin de l'année 2021, ensuite s'ensuivra la publication en 2022. Les révisions précédentes de la norme C ont ajoutées des fonctionnalités facilitant la gestion de la mémoire, notamment la fonctionnalité de vérification des limites. Cependant, l'une des propositions pour le C2x est de rendre obsolètes ou de supprimer les API Annexe K, car leurs implémentations sur le terrain sont en grande partie incomplètes, non conformes et non portables. Les propositions alternatives incluent le remplacement de ces API par des systèmes tiers de vérification des limites tels que Valgrind ou Intel Pointer Checker, l’affinement du modèle de mémoire ou l’ajout de nouvelles méthodes de vérification des limites pour les objets de mémoire.
Source : Charte C2x
Et vous ?
Que pensez-vous de ces modifications en cours pour la prochaine révision du standard C ?
Voir aussi
GCC 8.1 est disponible, la nouvelle version majeure du compilateur libre vient avec un support expérimental de C++2a et d'autres fonctionnalités
GCC : la version 7.3 du compilateur libre est disponible avec des correctifs pour la vulnérabilité Spectre pour les dispositifs x86 et powerpc
GCC 8.1, la nouvelle version majeure du compilateur libre sera disponible début 2018 : un aperçu des fonctionnalités et changements attendus
Le projet GNU annonce l'intégration du langage de programmation D dans GCC, qui vient s'ajouter au C, C++, Objective-C, Java, Ada et Fortran