C++ sous Linux, le sujet est relancé après 6 ans

LinuxC++

L'utilisation du C++ sous Linux a de nouveau été proposée

Il paraît que l'introduction de Rust comme deuxième langue programmation dans le noyau Linux a représenté l'un des changements les plus importants que Linux a eu et ne parle pas de l'étendue des caractéristiques et des fonctionnalités, mais cela a marqué un point de départ très important dans la façon dont Linus Torvalds et l'équipe de développement ont franchi une étape significative vers la modernisation de Linux pour le mieux.

On peut noter, depuis récemment, sur les listes de diffusion du noyau Linux une discussion a été relancée qui a débuté il y a six ans et a été présenté en plaisantant le 1er avril 2018.

Et cela a été remis sur la table. la question de « la faisabilité de l’adoption du code C++ moderne dans le noyau Linux », allant au-delà de l'utilisation traditionnelle du langage C avec des fragments assembleurs et de la promotion du langage Rust.

La proposition initiale a été lancée en 2018, par un ingénieur Red Hat comme une blague pour la célèbre fête du poisson d'avril, au cours de laquelle beaucoup en profitent pour faire des farces à la communauté et à cette époque c'était comme ça, puisqu'il était censé avoir publié un ensemble de 45 correctifs incluant l'utilisation de modèles, l'héritage de classe et surcharge des fonctions C++.

À mon avis, C++14 est la version « minimale » qui a un support raisonnable pour la métaprogrammation et qui en possède le plus sans les types des versions précédentes (C++11 en avait le plus, mais C++14 comble certaines pièces manquantes clés). Cependant, à mon avis, C++20 est vraiment le plus grand changement de jeu ; Même si les versions précédentes pouvaient exécuter de nombreux hacks SFINAE, elles donnaient également des messages d'erreur absolument inutiles.

Nous faisons beaucoup de métaprogrammation dans le noyau Linux, implémentée à l'aide d'astuces macro souvent vraiment horribles. Ceux-ci sont également pratiquement impossibles à déboguer. Prenons l'exemple des hacks de type uaccess.h, dont certains que j'ai conçus et écrits. En C++, différents transtypages et instructions case peuvent être divisés en instances de modèle distinctes, et avec un peu d'ingéniosité, des éléments tels que les pointeurs d'espace utilisateur par rapport aux pointeurs d'espace utilisateur du noyau peuvent également être strictement appliqués, ainsi que les pointeurs d'espace utilisateur déjà marqués, par rapport à ceux qui ne le sont pas, sans parler de la gestion aisée du cas des types d'espace utilisateur 32 bits dans un noyau 64 bits et de l'application de la conversion endian.

maintenant, presque après 6 ans de cela, Hans Peter Anvin, un développeur clé du noyau Intel et créateur de projets tels que syslinux, klibc et LANANA, a pris l'initiative de poursuivre la discussion. Selon Anvin, depuis 1999, les langages C et C++ ont connu des progrès significatifs dans leur développement, et le langage C++ s'est avéré plus approprié que le C pour le développement du noyau du système d'exploitation.

Anvin mentionne que les fonctionnalités qui nécessitaient auparavant des extensions spécifiques du CCG, peut désormais être facilement implémenté en C++ standard, et dans de nombreux cas, l’utilisation de C++ améliorera l’infrastructure sans qu’il soit nécessaire de modifier complètement le code.

En plus de cela, Il est proposé d'utiliser au minimum la spécification C++ 14, qui inclut des outils de métaprogrammation, et l'utilisation de la spécification C++ 20 est encouragée, qui introduit la prise en charge de concepts susceptibles de réduire l'incidence des erreurs.

On fait valoir que C++ est préférable à Rust, puisque la syntaxe de ce dernier diffère considérablement de celle du langage C, est rare pour les développeurs de noyau actuels et ne permet pas une réécriture progressive du code. Dans le cas du langage C++, il est possible de traduire progressivement des parties du code du langage C, de la même manière que le code C peut être compilé en C++.

Bien que le noyau Linux soit principalement constitué de code C avec diverses parties écrites en assemblage et un travail croissant autour de la prise en charge de Rust dans le noyau Linux, il n'est toujours pas clair s'il y a suffisamment de poids pour que cela devienne une réalité, quant à la possibilité de voir le code C du noyau Linux. converti en C++ à l'avenir.

enfin si tu es intéressé à en savoir plus, vous pouvez vérifier les détails dans le lien suivant


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.