Dans la liste de diffusion des développeurs du noyau Linux, une discussion reprise il y a six ans sur les perspectives d'utilisation du code moderne en C++ dans le noyau Linux, en plus de l'usage actuel du langage C avec des insertions en assembleur et de la promotion du langage Rust. À l'origine, le sujet du développement du noyau en C++ a été soulevé en 2018 par un ingénieur de Red Hat, qui a publié le 1er avril en guise de blague un ensemble de 45 patches pour utiliser des modèles, des classes héritées et la surcharge de fonctions C++ dans le code du noyau.
L'initiative de poursuivre la discussion a été menée par Hans Peter Anvin, l'un des développeurs clés du noyau chez Intel et créateur de projets tels que syslinux, klibc et LANANA, ayant développé pour le noyau Linux un système de montage automatique, une implémentation de RAID 6, et le pilote CPUID et x32 ABI. Selon Anvin, qui est l'auteur de nombreux macros et insertions en assembleur dans le noyau, les langages C et C++ ont considérablement progressé depuis 1999 et C++ est devenu plus adapté que C pour le développement du noyau des systèmes d'exploitation.
Les fonctionnalités, qui nécessitaient encore récemment des extensions spécifiques à GCC, peuvent désormais être facilement réalisées en C++ standard, et dans de nombreux cas, l'utilisation de C++ permettra d'améliorer l'infrastructure sans modification globale du code. Comme minimum, l'utilisation de la spécification C++14 est mentionnée, qui inclut les outils nécessaires à la métaprogrammation, et comme souhaitable, l'utilisation de la spécification C++20, qui a introduit le support des concepts capables d'éliminer de nombreuses erreurs.
Anvin estime que C++ est préférable à Rust, car ce dernier diffère considérablement du langage C au niveau de la syntaxe, est inhabituel pour les développeurs du noyau actuels et ne permet pas de réécrire progressivement le code (dans le cas de C++, le code peut être traduit morceau par morceau depuis C, car le code C peut être compilé en C++). Jiri Slaby de SUSE et David Howells de Red Hat ont également soutenu l'utilisation de C++ dans le noyau.
Source : opennet.ru
