- L’équipe Chrome de Google énumère une quarantaine de problèmes rencontrés lors de l’adoption de C++20 et récapitule les solutions
- Une nouvelle norme C++ sort tous les 3 ans, et dans Chrome, la première application n’arrive qu’environ 3 ans après la sortie
- C++20 comporte de nombreux changements
- abandons de support, réordonnancement des opérateurs de comparaison, modification des règles d’agrégation...
- Problèmes
- Le guide de style de Google est basé sur C++17
- Le support de C++20 dans Clang est incomplet et nécessite un nouveau libc++
- Les binaires Windows grossissent
std::iterator n’est plus pris en charge (depuis C++17)
- De nouveaux mots-clés comme
concept et requires ont été ajoutés, ce qui crée des conflits s’ils sont utilisés comme noms de variables
- Et bien d’autres
6 commentaires
Hein… un langage comme le C++ ne devrait pas générer autant de breaking changes, non… ? Ou c’est juste mon idée préconçue…
C’est bien pour ça que le C++ est un langage bizarre... Le langage continue d’évoluer, avec l’ajout de modules, de coroutines et de tout un tas d’autres choses, en essayant de tout faire lui-même. Et quand une fonctionnalité sort, les compilateurs ne l’ajoutent que 4 ou 5 ans plus tard. Il y a des différences entre les compilateurs quant à ce qu’ils peuvent faire, et la syntaxe varie légèrement de l’un à l’autre. À chaque montée de version, plein de petites choses qu’on utilisait très bien finissent par disparaître. La STL grossit, et avec les nouvelles versions ça ne tourne même plus sur les ordinateurs de l’ancienne génération... Si vous devez choisir, je vous dirais plutôt d’utiliser Go ou Python.
Les éléments pour lesquels la rétrocompatibilité n’a pas été préservée lors de la montée de version
correspondent, dans la plupart des cas, à des améliorations de comportements non définis ou de fonctionnalités défectueuses.
Des fonctionnalités comme les modules, les concepts ou les coroutines montrent aussi que le langage continue d’évoluer, comme dans d’autres langages.
Le cas des modules en particulier répond d’ailleurs à une demande ancienne.
Je ne sais pas vraiment si l’abandon de la prise en charge de
std::iteratorentre dans le cas que vous avez mentionné, à savoir « améliorer des fonctionnalités au comportement indéfini ou présentant des défauts ».Cependant, voici globalement les points sur lesquels C++ est en retard par rapport aux autres langages.
Parmi ces points, je pense que le manque d’intérêt de la communauté entraîne une très grande pénurie d’articles de qualité, et que le faible nombre d’utilisateurs empêche la résolution des trois autres problèmes.