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 !

Les développeurs principaux de CPython proposent d'intégrer Rust afin d'améliorer la sécurité mémoire et de réduire les vulnérabilités dans le code source C de Python, ce qui suscite des débats

Le , par Jade Emy

5PARTAGES

6  0 
Les développeurs principaux de CPython proposent d'intégrer Rust afin d'améliorer la sécurité mémoire et de réduire les vulnérabilités dans le code source C de Python, ce qui suscite des débats

Les développeurs principaux de CPython proposent d'intégrer Rust afin d'améliorer la sécurité de la mémoire et de réduire les vulnérabilités dans le code source basé sur C de Python. Commençant par des extensions optionnelles, Rust pourrait devenir obligatoire, ce qui susciterait des débats sur la complexité par rapport aux avantages. Cette initiative s'inscrit dans la tendance de l'industrie vers une programmation sécurisée et hautement performante.

Rust est un langage de programmation polyvalent. Il est réputé pour l'importance qu'il accorde aux performances, à la sécurité des types, à la concurrence et à la sécurité mémoire. Rust prend en charge plusieurs paradigmes de programmation. Il a été influencé par des idées issues de la programmation fonctionnelle, notamment l'immuabilité, les fonctions d'ordre supérieur, les types de données algébriques et la correspondance de motifs. Il prend également en charge la programmation orientée objet via des structures, des énumérations, des traits et des méthodes.

Rust est connu pour imposer la sécurité de la mémoire (c'est-à-dire que toutes les références pointent vers une mémoire valide) sans collecteur de mémoire conventionnel ; à la place, les erreurs de sécurité de la mémoire et les conflits d'accès aux données sont évités grâce au « vérificateur d'emprunt », qui suit la durée de vie des objets référencés au moment de la compilation.

Dans une initiative qui pourrait bouleverser les fondements de l'un des langages de programmation les plus populaires au monde, deux développeurs principaux de CPython, l'implémentation de référence de Python, ont proposé d'intégrer le langage de programmation Rust dans son code source. Cette initiative, détaillée dans une discussion pré-PEP (Python Enhancement Proposal), vise à tirer parti des fonctionnalités de sécurité mémoire de Rust pour remédier aux vulnérabilités de longue date de CPython, qui est principalement écrit en C.

La proposition, rédigée par les développeurs principaux de CPython Emma Twersky et Eclipse Obscura, suggère de commencer par utiliser Rust pour les modules d'extension optionnels avant d'étendre son utilisation à l'ensemble du code source de CPython. Selon le document publié sur Discussions on Python.org, Rust deviendrait à terme une dépendance obligatoire, marquant un changement significatif dans le paradigme de développement de Python.


La tentative audacieuse Rust pour renforcer le cœur de Python

L'attrait de Rust réside dans ses garanties solides contre les bogues liés à la mémoire, un problème persistant dans les projets basés sur C comme CPython. Le pré-PEP souligne que « CPython a historiquement rencontré de nombreux bogues et plantages dus à des accès mémoire invalides », comme indiqué dans la section « Motivation ». En introduisant Rust, les développeurs espèrent atténuer ces risques sans sacrifier les performances.

Ce n'est pas la première fois que Rust est envisagé pour améliorer des systèmes établis. Des projets tels que le noyau Linux et Chromium ont déjà intégré Rust pour le nouveau code, invoquant des avantages similaires. Une discussion en 2023 sur Discussions on Python.org a exploré la faisabilité de construire CPython avec Rust, en mettant l'accent sur la réduction des CVE (Common Vulnerabilities and Exposures).

L'approche progressive décrite dans la proposition commence par autoriser Rust pour les modules d'extension, qui pourraient être compilés de manière facultative. Cela reflète les stratégies d'autres écosystèmes, tels que l'adoption progressive de Rust par Git pour les composants critiques en termes de performances. Au fil du temps, Rust s'imposerait dans les domaines clés, devenant indispensable pour la construction de CPython.

Réactions et débats au sein de la communauté

Les observateurs du secteur y voient une réponse à la demande croissante de logiciels sécurisés. Une analyse décrit Rust comme le « nouveau moteur de performance » de Python, soulignant une augmentation de 22 % de l'utilisation de Rust pour les extensions Python au cours de l'année dernière.

La proposition a suscité des discussions animées au sein des communautés technologiques. Des développeurs ont noté que « CPython pourrait introduire Rust pour le développement de base », établissant un parallèle avec l'évolution de Git. Un autre développeur a mis l'accent sur la sécurité de la mémoire, citant l'importance accordée par le pré-PEP à la réduction des plantages.

Les détracteurs, cependant, s'inquiètent de la complexité supplémentaire. Un développeur a averti qu'une dépendance à Rust « éliminerait effectivement le Python moderne sur plusieurs plateformes », ce qui pourrait aliéner les utilisateurs de systèmes ne disposant pas d'un support Rust robuste. Une analyse a qualifié cette initiative d'« intéressante », prédisant qu'elle pourrait faire évoluer CPython de manière significative.

Défis techniques à relever et tendances générales du secteur

L'intégration de Rust dans CPython n'est pas simple. Le pré-PEP reconnaît la nécessité de modifier le système de compilation et d'assurer la compatibilité avec le code C existant. Des outils tels que PyO3, qui facilitent l'interopérabilité entre Rust et Python, pourraient jouer un rôle clé. Des tentatives historiques, telles que RustPython, un interpréteur Python open source entièrement écrit en Rust, constituent des précédents. Selon sa page GitHub, RustPython prend en charge CPython 3.11 et les versions supérieures, mais ne remplace pas encore CPython. Les observateurs ont salué le potentiel de RustPython, mais soulignent les obstacles à l'intégration avec les bibliothèques externes.

Cette proposition s'inscrit dans une tendance plus large à l'adoption de Rust pour les bases de code héritées. Par exemple, un projet financé par la DARPA appelé CRAM migre C++ vers Rust. Dans l'écosystème Python, des outils tels que Ruff, un linter rapide écrit en Rust, ont démontré des gains de performance. Son créateur, Charlie Marsh, affirme qu'il analyse l'ensemble de la base de code CPython en moins de 500 ms.

Des enquêtes indiquent la maturation de Python, l'intégration de Rust gagnant du terrain. Un rapport indique que la science des données domine l'utilisation de Python avec 51 %, tandis que Rust émerge comme un « partenaire de performance » pour les nouveaux venus, qui représentent la moitié des développeurs.

Pour les développeurs Python, cela pourrait signifier l'apprentissage de Rust pour les contributions essentielles, ce qui pourrait rendre la courbe d'apprentissage plus raide. Cependant, les partisans affirment que les avantages l'emportent sur les coûts. « Rust s'est imposé comme un langage de programmation système populaire et sûr pour la mémoire », indique le pré-PEP, en référence à son utilisation dans de nombreux projets.

Les performances sont un autre atout. Un rapport en 2022 comparait le temps de démarrage de 10 ms de CPython à la vitesse de Rust dans des contextes sans serveur. De même, Mara Bos a annoncé des outils tels que ct_python pour générer du code Rust à partir de Python au moment de la compilation, démontrant ainsi les possibilités d'intégration transparente.

Perspectives d'avenir

Alors que la proposition se rapproche du statut officiel de PEP, le Python Steering Council va se prononcer. Si elle est approuvée, elle pourrait créer un précédent pour d'autres langages, à l'instar de l'intégration de Rust dans le noyau Linux. En fin de compte, cette intégration reflète l'évolution de Python, qui est passé d'un langage de script à un outil robuste pour l'IA, la science des données et la programmation de systèmes. Avec le soutien de Rust, CPython pourrait gagner en fiabilité, attirer davantage d'entreprises et répondre aux besoins de sécurité dans un paysage numérique de plus en plus exposé aux menaces.

Cette proposition rappelle une initiative de 2024. Apache Software Foundation, Blender Foundation, OpenSSL Software Foundation, PHP Foundation, Python Software Foundation, Rust Foundation et Eclipse Foundation avaient alors annoncé conjointement leur intention de collaborer à l'établissement de spécifications communes pour le développement de logiciels sécurisés sur la base des meilleures pratiques open source existantes.

Source : Discussion sur la faisabilité de construire CPython avec Rust

Et vous ?

Pensez-vous que cette proposition est crédible ou pertinente ?
Quel est votre avis sur le sujet ?

Voir aussi :

La prochaine version de l'interpréteur Python standard, CPython, va s'accompagner d'améliorations significatives des performances ont annoncé les développeurs durant la PyCon

RustPython, un interpréteur Python écrit en Rust et compatible avec WebAssembly, est disponible : Pourrait-il rivaliser avec CPython ?

Le mélange de Rust et de C dans Linux est assimilé à un « cancer » par un responsable du noyau, « je ne veux pas qu'il s'approche d'une énorme base de code C que je dois maintenir », dit-il à propos de Rust
Vous avez lu gratuitement 780 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 !