IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)

Vous �tes nouveau sur Developpez.com ? Cr�ez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et �tre connect� pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Cr�ez-en un en quelques instants, c'est enti�rement gratuit !

Si vous disposez d�j� d'un compte et qu'il est bien activ�, connectez-vous � l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oubli� ?
Cr�er un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Le cr�ateur de C++ appelle � l'aide de la communaut� du langage pour le d�fendre contre de graves attaques
D'agences de cybers�curit� qui militent pour un passage � des langages plus s�curis�s comme le Rust

Le , par Patrick Ruiz

128PARTAGES

14  0 
Le cr�ateur de C++ appelle � l'aide de la communaut� du langage pour le d�fendre contre de graves attaques
D�agences de cybers�curit� qui militent pour un passage � des langages plus s�curis�s comme le Rust

Bjarne Stroustrup, cr�ateur du langage C++, appelle la communaut� C++ pour qu'elle d�fende ce langage de programmation. Ce dernier est sous le feu des critiques des agences de cybers�curit� et des experts techniques ces derni�res ann�es en raison de ses lacunes en mati�re de s�curit� de la m�moire. L�initiative du cr�ateur du langage C++ se fait dans un contexte d�urgence �tant donn� l�appel du CISA � l�abandon du C++ d�ici � 2026.

� Il ne s'agit manifestement pas d'une note technique traditionnelle proposant un nouveau langage ou une nouvelle fonctionnalit� de biblioth�que. Il s'agit d'un appel � une action urgente, en partie en r�ponse � des attaques graves et sans pr�c�dent contre le C++. Je pense que le WG21 doit faire quelque chose de significatif et �tre per�u comme tel. Profiles est un cadre qui peut le faire �, d�clare-t-il dans le cadre de la pr�sentation de nouvelles lignes directrices pour la s�curit� des ressources et des types.

� Comme je l'ai d�j� dit, il s'agit �galement d'une opportunit� car la s�curit� des types et la s�curit� des ressources (y compris la s�curit� de la m�moire) ont �t� des objectifs cl�s du C++ depuis le tout d�but �, ajoute-t-il.



Certains acteurs de la fili�re du d�veloppement de logiciels sont d�avis qu�il faut arr�ter d�initier de nouveaux projets en C++ et passer au Rust

Mark Russinovich de Microsoft recommande le langage Rust plut�t que le C ou C++. Les raisons : la parit� en termes de vitesse d�ex�cution en comparaison avec le C ; la s�curisation et la fiabilit� du Rust en comparaison avec C ou C++. C�est en droite ligne avec cet �tat de choses que l��diteur de RisingWave a abandonn� son projet de SGBD cloud natif initialement d�velopp� en C++ pour le r��crire en Rust.

� Rust garantit la s�curisation de la m�moire et des threads au moment de la compilation en introduisant des r�gles de propri�t�. Il va au-del� du RAII, un m�canisme de gestion de la m�moire couramment utilis� en C++. Il pr�sente deux avantages. Le premier est �vident : une fois que le compilateur Rust a valid� notre programme, nous n'aurons pas de d�fauts de segmentation ou de conditions de concurrence lors de l'ex�cution, ce qui n�cessiterait des dizaines d'heures de d�bogage, en particulier dans une base de code hautement concurrente et principalement asynchrone. La seconde est plus subtile : le compilateur Rust restreint simplement les types de fautes, ce qui r�duit les fragments de code �troitement imbriqu�s qui peuvent causer un tel comportement bogu�. La r�plication des bogues est consid�rablement am�lior�e avec l'aide de l'ex�cution d�terministe �, explique-t-il.



Linus Torvalds est d�avis que Rust est une solution d�avenir pour le noyau Linux mais certains intervenants pensent le choix de Rust est une erreur et que C++ moderne est une meilleure alternative

Il consid�re la prise en charge de Rust pour le d�veloppement du noyau Linux comme une � une �tape importante vers la capacit� d'�crire les pilotes dans un langage plus s�r. � Rust de Mozilla Research est le type de langage de programmation auquel ceux qui �crivent du code pour des syst�mes d�entr�e/sortie de base (BIOS), des chargeurs d�amorce, des syst�mes d�exploitation, etc. portent un int�r�t. D�avis d�observateurs avertis, c�est le futur de la programmation syst�me en lieu et place du langage C. En effet, des experts sont d�avis qu�il offre de meilleures garanties de s�curisation des logiciels que le couple C/C++. Chez AWS on pr�cise que choisir Rust pour ses projets de d�veloppement c�est ajouter l�efficacit� �nerg�tique et la performance d�ex�cution du C � l�atout s�curit�.

En effet, il y a une liste de griefs qui reviennent � l�encontre du langage C : les probl�mes li�s � la gestion de la m�moire � d�passements de m�moire tampon, allocations non lib�r�es, acc�s � des zones m�moire invalides ou lib�r�es, etc. D�apr�s les chiffres du dictionnaire Common Vulnerabilities and Exposure (CVE), 15,9 % des 2288 vuln�rabilit�s qui ont affect� le noyau Linux en 20 ans sont li�es � des d�passements de m�moire tampon.

De plus, certains benchmarks sugg�rent que les applications Rust sont plus rapides que leurs �quivalents en langage C. Et c�est justement pour ces atouts que sont la parit� en termes de vitesse d�ex�cution en comparaison avec le C, mais surtout pour la s�curisation et la fiabilit� que de plus en plus d�acteurs de la fili�re du d�veloppement informatique recommandent le Rust plut�t que le C ou le C++.

Ainsi, en adoptant Rust, la communaut� autour du noyau Linux devrait mettre � profit ces atouts du langage sur le C. Et elle devrait faire d�une pierre deux coups �tant donn� que Rust peut faciliter l�arriv�e de nouveaux contributeurs. C�est en tout cas ce que laisse entrevoir une �tude de l�universit� de Waterloo.

N�anmoins, certains intervenants comme le d�veloppeur Peter Anvin sont d�avis que C++ moderne est une meilleure alternative que Rust pour le d�veloppement du noyau Linux :

� Maintenant, "pourquoi pas Rust" ? Tout d'abord, Rust utilise une syntaxe diff�rente (souvent, � mon avis, gratuitement), et non seulement tous les d�veloppeurs du noyau devraient se familiariser intimement avec la syntaxe afin d'obtenir le m�me type de "feeling" que nous avons pour le C, mais convertir du code C en Rust n'est pas quelque chose qui ne peut �tre fait par les d�veloppeurs du noyau qu'au coup par coup, alors qu'avec quelques nettoyages le code C existant peut �tre compil� en C++.

Cependant, je ne suis pas d'accord avec certaines des conclusions de David. en fait, je crois que David est inutilement pessimiste, du moins en ce qui concerne le C++ moderne.

Notez que personne de sain d'esprit ne s'attend � utiliser toutes les fonctionnalit�s de C++. Tout comme nous avons le "kernel C" (actuellement un sous-ensemble de C11 avec un avec un ensemble relativement large d'extensions sp�cifiques au compilateur), nous aurions le "noyau C++", que je sugg�re d'�tre un sous-ensemble strictement d�fini de de C++20, combin� � un ensemble similaire d'extensions de compilateur). Je me rends compte que que la prise en charge du C++20 par les compilateurs est encore tr�s r�cente pour des raisons �videntes, de sorte qu'au moins une partie de ce qui pr�c�de est tourn�e vers l'avenir. �

Avec l�introduction des extensions Safe C++, le C++ se positionne pour rester pertinent et comp�titif face aux nouveaux langages de programmation. Cette �volution devrait permettre au C++ de s�adapter et �voluer pour r�pondre aux besoins modernes de s�curit� et de fiabilit� des logiciels. Les extensions Safe C++ repr�sentent une avanc�e majeure pour un langage qui continue de jouer un r�le crucial dans le monde de la programmation.

Source : Bjarne

Et vous ?

Partagez-vous les avis selon lesquels les extensions Safe C++ peuvent permettre au C++ de rivaliser avec les langages modernes comme Rust en termes de s�curit� ? Pourquoi ou pourquoi pas ?
Partagez-vous les avis selon lesquels le choix de Rust comme langage de d�veloppement du noyau est une erreur ? Voyez-vous le C++ moderne comme meilleure solution aux questions d��volution du noyau ?

Voir aussi :

Programmation : une �tude r�v�le les langages les plus voraces en �nergie, Perl, Python et Ruby en t�te, C, Rust et C++, les langages les plus verts

Linus Torvalds souligne une bonne avanc�e du langage Rust dans le d�veloppement du noyau Linux, et aurait qualifi� le C++ de � langage de m... �, apr�s le message de Google

Microsoft, Google, AWS, Huawei et Mozilla s'associent pour cr�er la Fondation Rust, une organisation � but non lucratif charg�e de g�rer le langage de programmation

Facebook rejoint AWS, Huawei, Google, Microsoft et Mozilla dans la Fondation Rust, et renforce son �quipe Rust par des nouveaux talents
Vous avez lu gratuitement 0 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer � vous proposer des publications.

Une erreur dans cette actualit� ? Signalez-nous-la !

Avatar de kmedghaith
Membre confirm� https://www.developpez.com
Le 03/03/2025 � 14:37
A mon humble avis, et en tant qu'utilisateur de C++ depuis presque 20 ans, la meilleure fa�on de d�fendre le langage est de le faire �voluer en arr�tant de faire la sourde oreille � certaines demandes tr�s raisonnables:
* Une nouvelle librairie standard, memory safe par d�faut. De pr�f�rence commune � touts les compilateurs autant que possible, opensource et r�guli�rement mise � jour.
* Une syntaxe "C++2", sous ensemble du langage safe par d�faut plus quelques additions pour le comfort. Pourquoi pas empreinter le borrow checker et les lifetimes (c'est fait dans circle)
* Un syst�me de build et de d�pendances standard et moderne

J'utilise pas mal Rust. Je comprends les gens qui veulent y passer: c'est moderne, simple et efficace. Ce n'est pas encore � parit� avec le C++ concernant la programmation g�n�rique mais �a suffit pour 99% des d�veloppeurs.
Il est temps que le C++ apprenne de ses concurrents, juste comme ses concurrents ont appris du C++.
17  0 
Avatar de Jacti
Membre habitu� https://www.developpez.com
Le 10/03/2025 � 12:26
Il fut un temps o�, en plus de mon m�tier de concepteur/consultant, j'enseignais le C++ en entreprise � des d�veloppeurs qui connaissaient d�j� d'autres langages (environ 1 cours de 5 jours/mois). Il s'agissait � l'�poque de C++11. J'ai aussi audit�, � l'aide de Logiscope des millions de lignes de C++ pour des applications militaires principalement (les fameux SIC et SIR). On pouvait d�j� �crire du code tr�s propre en C++ � condition d'�tre tr�s disciplin� et d'avoir fait une conception objet impeccable. H�las, je me suis rendu compte que peu de d�veloppeurs comprenaient r�ellement et ma�trisaient la conception objet et la programmation en C++ "safe". Il me semble que les ajouts sont fait pour aider les d�veloppeurs et les guider dans des concepts qu'ils ne comprennent pas toujours jusqu'au fond des choses.
Peut-�tre que mon post est un peu provocateur mais c'est vraiment ce que je pense ayant pratiqu� la conception objet d�s le d�but en 1983 avec les articles de Grady Booch et le C++ d�s 1993.
PS : j'ai pratiqu� intensivement la m�taprogrammation en C++ avec la g�n�ricit� et il me semble que ce n'est qu'avec C++ qu'on arrive � faire des choses vraiment sophistiqu�es dans ce domaine. Rust ne lui arrive pas � la cheville.
5  0 
Avatar de freesket
Membre du Club https://www.developpez.com
Le 04/03/2025 � 9:58
Note this good summary by David Chisnall (ancien de chez Microsoft Research, chercheur � l'University de Cambridge et architecte syst�me chez SCI Semiconductor) in a January 2024 FreeBSD mailing list post:
"Between modern C++ with static analysers and Rust, there was a small safety delta. The recommendation [to prefer Rust for new projects] was primarily based on a human- factors decision: it�s far easier to prevent people from committing code that doesn�t compile than it is to prevent them from committing code that raises static analysis warnings. If a project isn�t doing pre-merge static analysis, it�s basically impossible."

C++26 r�pondra � un certain nombre de points:
* La STL "hardened" par d�faut (proposition rapidement adopt�e car presque tous les fournisseurs de STL ont cette "option" => suppression des violations de type "bound safety".
* Le "initialisation safety"
* Les contrats (possibilit� de v�rifier les pr�-requis et post-requis)
* Probablement la r�flection statique
* Devrait apporter des profils (possiblement incomplets) pour v�rifier les "type, bound, lifetime safety", inspir�s de ce qu'il se fait avec les outils fournis avec clang ou cl. L'avantage c'est que ce sera directement � la compilation et non pas dans un outil s�par�.
=> Cons�quence, C++26 va rendre les m�thodes "unsafe" (venant souvent du C) visibles (naked union, variant, enum C, NULL, pointeur de type array, for � l'ancienne, naked new/delete, malloc/free, cast douteux, les fonctions C unsafe...) et donc rendre le language plus propre et �pur� pour ceux qui ne d�sactiverons pas la v�rification � la compilation.
* Pour le petit plus (exemple not_null<T>, narrow_cast...) il faut voir du c�t� de la GSL (Guideline Support Library).
4  0