Le 15 mars dernier, Bjarne Stroustrup, le créateur du C++, a répondu au rapport de l'administration Biden qui recommande aux développeurs d’utiliser des langages sécurisés pour la mémoire (Rust, C#, Go, Java, Ruby et Swift) et d'éviter ceux vulnérables comme C++ et le C. Pour défendre son bébé, largement utilisé par les développeurs, le responsable a voulu rappeler les points forts du langage conçu en 1979. S’il s’étonne de voir que les auteurs de ces documents gouvernementaux ignorent les atouts du C++ contemporain et les efforts déployés pour fournir de solides garanties de sécurité, les auteurs du rapport, selon lui, semblent avoir compris qu'un langage de programmation n'est qu'un élément dans une chaîne d'outils, et qu'il est essentiel d'améliorer les outils et les processus de développement.
« Dès l’origine, et tout au long de l’évolution du C++, l'amélioration de la sécurité a toujours été au cœur de nos efforts de développement », a rappelé Bjarne Stroustrup. « Pour s’en rendre compte, il suffit de comparer le langage C de K&R avec le premier C++, et le premier C++ avec le C++ actuel, comme je l’ai fait lors de mon discours d'ouverture de la CppCon 2023 », a-t-il ajouté. « Une grande partie de la qualité du C++ résulte de l’usage de techniques basées sur RAII (Resource Acquisition Is Initialization), des conteneurs et des pointeurs de gestion des ressources plutôt que des désordres de pointeurs conventionnels de style C ».
Plusieurs efforts de documentation et de créations de profils
Parmi les efforts visant à améliorer la sécurité du C++, Bjarne Stroustrup a cité deux problèmes en particulier. « Sur les milliards de lignes de C++, peu suivent complètement les directives modernes, et l’approche de la sécurité diffère d'une personne à l'autre. Le comité de normalisation du C++ et moi-même essayons de résoudre ce problème », a-t-il déclaré. « Les profils offrent un cadre pour spécifier les garanties nécessaires pour un morceau de code donné et permettent aux implémentations de les vérifier. Des documents décrivant cette approche sont disponibles sur le site web du comité - rechercher WG21 - et d'autres sont en cours d'élaboration. Cependant, certains d'entre nous n’ont pas forcément la patience d’attendre les progrès forcément lents du comité », a-t-il ajouté.
« Néanmoins, ces profils servent de cadre pour améliorer progressivement les garanties - par exemple, supprimer la plupart des erreurs RANGE relativement rapidement - et introduire progressivement des garanties dans de grandes bases de code à l’aide d'une analyse statique locale et de vérifications minimales au moment de l'exécution », a-t-il expliqué. « Mon objectif à long terme pour le C++ a toujours été de faire en sorte que le langage offre la sécurité des types et des ressources quand et où cela est nécessaire. Peut-être que le mouvement actuel en faveur de la sécurisation de la mémoire, que je souhaite, s'avérera utile à mes efforts partagés par de nombreux membres du comité de normalisation du C++ ». En novembre 2022, Bjarne Stroustrup avait déjà dû défendre la sécurité du C++ contre la NSA. À l’époque, l’agence avait recommandé dans un bulletin d’utiliser des langages à mémoire sécurisée au lieu du C++ et du C