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

  1. #1
    Chroniqueur Actualités

    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    juin 2016
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : juin 2016
    Messages : 326
    Points : 11 257
    Points
    11 257

    Par défaut Le premier brouillon de la prochaine révision du standard C, le C2x, est publié

    Le premier brouillon de la prochaine révision du standard C, le C2x, est publié
    et met l'accent sur la compatibilité du langage

    A l'indice TIOBE de novembre 2018, le langage C plane toujours dans le top 3 en occupant la deuxième place juste derrière Java et devant le C++. La popularité du langage n'est donc plus à démontrer. Le comité de normalisation du langage, le WG14, travaille activement sur la prochaine révision du standard C (ISO / IEC 9899). On parle de « C2x », où le "x" représente le chiffre de l'année dans laquelle cette nouvelle norme apparaîtra. L'ensemble de la procédure est régie par la Charte C2x qui décrit et corrige le type d'ajouts et d'améliorations qui seront disponible dans le C2x.

    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.

    Nom : faceb.jpg
Affichages : 3101
Taille : 99,0 Ko

    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
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Membre averti
    Homme Profil pro
    Développeur C++
    Inscrit en
    octobre 2008
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur C++

    Informations forums :
    Inscription : octobre 2008
    Messages : 148
    Points : 341
    Points
    341

    Par défaut

    Quasiment aucun compilateur a implémenté le C11. Donc j'ose pas imaginer le C2x.

  3. #3
    Expert confirmé
    Inscrit en
    mars 2005
    Messages
    1 374
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 1 374
    Points : 4 028
    Points
    4 028

    Par défaut

    Citation Envoyé par Bill Fassinou Voir le message
    • meilleures définitions du comportement des syndicats DR 499 ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    union U {
      struct {
        char B1;
        char B2;
        char B3;
        char B4;
      };
      int word;
    } u;
    Incroyable, merci pour ça. J'ai du code qui dépend du comportement de GCC sur ce point..


    Citation Envoyé par Markand Voir le message
    Quasiment aucun compilateur a implémenté le C11. Donc j'ose pas imaginer le C2x.

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2005
    Messages
    26 824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2005
    Messages : 26 824
    Points : 39 523
    Points
    39 523

    Par défaut

    meilleures définitions du comportement des syndicats DR 499;
    Il est rare que je ne comprenne pas une trouduction à partir du français, mais là j'étais au point mort et il a vraiment fallu que je regarde l'anglais pour comprendre.
    ajoutez des interfaces génériques de type pour les fonctions de chaîne à la bibliothèque C, N2068 ;
    Rétablir la const-correctness des fonctions *chr? Hell yes!

    Reste à savoir si Visual C++ implémentera ça d'ici 2040.

    Edit: Pour les histoires d'alignement de malloc(), je suis surpris que tant d'implémentations reposent sur le weak-alignment (c'est-à-dire pouvoir allouer des petits espaces sans leur donner l'alignement des grands). Vue toute la gestion à faire autour des allocations, je me serais attendu à ce que pratiquement toutes les implémentations utilisent le strong-alignment (genre, chaque allocation alignée sur 16 octets) parce que c'est plus facile à coder, surtout dans une implémentation "liste chaînée" du tas (dans laquelle on n'est plus forcément à 15 octets près pour chaque allocation)...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2017
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : avril 2017
    Messages : 440
    Points : 1 801
    Points
    1 801

    Par défaut

    Citation Envoyé par Markand Voir le message
    Quasiment aucun compilateur a implémenté le C11. Donc j'ose pas imaginer le C2x.
    N'importe quoi. Il ne faut pas prendre visual c++ pour une généralité.

    Visual C++ doesn't support most of the changes in ISO C11
    https://docs.microsoft.com/en-us/cpp...e?view=vs-2017

    GCC 4.9 Changes: “ISO C11 support is now at a similar level of completeness to ISO C99 support: substantially complete
    https://gcc.gnu.org/wiki/C11Status

    Clang strives to both conform to current language standards (up to C11 and C++11) and also to implement many widely-used extensions
    https://clang.llvm.org/compatibility.html

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    6 729
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2006
    Messages : 6 729
    Points : 19 080
    Points
    19 080
    Billets dans le blog
    1

    Par défaut

    Bonjour
    Citation Envoyé par Matt_Houston Voir le message
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    union U {
      struct {
        char B1;
        char B2;
        char B3;
        char B4;
      };
      int word;
    } u;
    Incroyable, merci pour ça. J'ai du code qui dépend du comportement de GCC sur ce point..
    Y aurait-il plusieurs façons de comprendre ce truc ? Parce que pour moi ça me semble assez clair quoi (excepté qu'il manque le nom de la structure mais il doit s'agir d'un simple oubli de transcription). Toutefois j'aurais mis "word" en long pour être certain qu'il fasse bien 4 octets.

    Ceci dit, peut-être que remplacer la structure par un tableau de char serait plus simple à écrire et tout aussi simple à utiliser...
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

  7. #7
    Expert confirmé
    Inscrit en
    mars 2005
    Messages
    1 374
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 1 374
    Points : 4 028
    Points
    4 028

    Par défaut

    Citation Envoyé par Sve@r Voir le message
    (excepté qu'il manque le nom de la structure mais il doit s'agir d'un simple oubli de transcription)
    Il s'agit d'un anonymous struct C11 et c'est le cœur du problème, décrit plus en détails par ce ticket sur SO : https://stackoverflow.com/questions/...ctly-described .


    Citation Envoyé par Sve@r Voir le message
    Y aurait-il plusieurs façons de comprendre ce truc ?
    C'est cela qui est fou. Lis la DR d'où j'ai tiré cet exemple. Le compilateur IBM pour AIX considère cela comme équivalent à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    union U {
      char B1;
      char B2;
      char B3;
      char B4;
      int word;
    } u;
    Autrement dit B1, B2, B3 et B4 partagent la même adresse et le struct anonyme qui les englobe est pour ainsi dire ignoré.

    Ça ne m'était même pas venu à l'esprit qu'on pouvait interpréter ce point de la norme (bien mal rédigé, il est vrai) différemment de ce que le comité a confirmé - les champs ne se chevauchent pas - mais force est de constater que même dans le cadre le plus formel on n'est jamais à l'abri d'une mésentente due aux préconceptions des uns et des autres.

    En attendant de devoir peut-être réécrire mon code, je suis bon pour ajouter quelques static_assert pour me prémunir d'éventuelles déconvenues.


    Citation Envoyé par Sve@r Voir le message
    Toutefois j'aurais mis "word" en long pour être certain qu'il fasse bien 4 octets.
    Pour ce problème c'est sans importance, on aurait pu écrire n'importe quel type. Dans le cas général, autant recourir à stdint.h / inttypes.h lorsqu'il s'agit d'en être certain.

  8. #8
    Membre éclairé
    Inscrit en
    juillet 2012
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : juillet 2012
    Messages : 231
    Points : 866
    Points
    866

    Par défaut Plus d’info

    Pour ceux que ça intéressent, j’avais posté un lien vers un article de blog qui contient plus d’info dans cette autre discussion.

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/05/2018, 15h16
  2. Réponses: 0
    Dernier message: 15/10/2016, 19h14
  3. Le W3C publie un premier brouillon pour l’API Pointer Events
    Par Hinault Romaric dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 24/01/2013, 15h04
  4. Le W3C publie un premier brouillon de l’API Push
    Par Hinault Romaric dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 25/10/2012, 09h14
  5. Le W3C publie un premier brouillon sur l’API WebDriver
    Par Hinault Romaric dans le forum Général Conception Web
    Réponses: 5
    Dernier message: 16/07/2012, 14h56

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