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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Rust Discussion :

Les développeurs principaux de CPython proposent d'intégrer Rust


Sujet :

Rust

  1. #1
    Communiqués de presse

    Femme Profil pro
    Traductrice Technique
    Inscrit en
    Juin 2023
    Messages
    2 605
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Traductrice Technique

    Informations forums :
    Inscription : Juin 2023
    Messages : 2 605
    Par défaut Les développeurs principaux de CPython proposent d'intégrer Rust
    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.

    Nom : 1.jpg
Affichages : 32351
Taille : 16,9 Ko

    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
    Publication de communiqués de presse en informatique. Contribuez au club : corrections, suggestions, critiques, ... Contactez le service news et Rédigez des actualités

  2. #2
    Membre confirmé
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Février 2024
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Architecte réseau

    Informations forums :
    Inscription : Février 2024
    Messages : 344
    Par défaut
    Migrer de C vers Rust, pourquoi pas ! Ça n'a rien de trivial mais c'est faisable. Rust supportant nativement webassembly, ça a un certain intérêt.

    Par contre, ça va être excessivement compliqué de convertir la base de code C++ en Rust. Ça veut juste dire repenser de fond en comble sa conception.

  3. #3
    Membre éprouvé
    Avatar de calvaire
    Homme Profil pro
    .
    Inscrit en
    Octobre 2019
    Messages
    2 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Singapour

    Informations professionnelles :
    Activité : .
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2019
    Messages : 2 251
    Par défaut
    ca pourrait être l'occasion d'avoir un vrai multi threading et se débarrasser du gil.

    c'est toujours compliqué en python d'exploiter les cpu multicœurs, a l'inverse de C ou Java.
    La France est un pays qui redistribue tout sauf de l'espoir.

  4. #4
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 738
    Par défaut
    Comme l'article l'explique, il ne s'agit pas de tout réécrire en Rust, du moins pas à court terme, ni même moyen terme. Ils vont introduire Rust progressivement, comme pour l'inclusion de Rust dans Linux. Dans un premier temps, il s'agira de gérer les modules annexes en Rust.

    Donc ça n'est Rust qui sera responsable de la suppression du GIL. Il est de toute façon, si je ne me trompe pas, déjà en voie d'être retiré de l'implémentation de référence actuelle.

  5. #5
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 754
    Par défaut
    Il est désormais techniquement possible de se débarrasser du GIL, mais c'est encore une fonctionnalité optionnelle et expérimentale.

    Depuis Python 3.13 (sorti en octobre 2024), la PEP 703 ("Making the Global Interpreter Lock Optional in CPython") a été implémentée.

    Ce que cela signifie : Il existe désormais des builds de CPython appelés "free-threaded". Dans ce mode, le GIL est désactivé.

    La conséquence : Les threads Python peuvent enfin s'exécuter en parallèle réel sur plusieurs cœurs CPU. Auparavant, ils s'exécutaient en concurrence (un seul à la fois cause du GIL), ce qui limitait les performances pour les tâches de calcul pur.

    Le GIL et Rust : La suppression du GIL (le projet No-GIL) est principalement un travail d'ingénierie en C, mené par Sam Gross et l'équipe core dev, et non une réécriture en Rust.

    Le rôle de Rust : Rust est effectivement de plus en plus utilisé dans l'outillage (comme le linter ruff ou le gestionnaire uv) et pour écrire des extensions Python performantes (via PyO3). Cependant, le cœur de l'interpréteur CPython reste majoritairement en C. Intégrer Rust dans le noyau de CPython est un sujet de discussion, mais ce n'est pas la cause technique directe de la suppression du GIL actuelle.

    État des lieux technique (Nov 2025)

    Caractéristique Python Standard (Default Build) Python "Free-Threaded" (Experimental Build)
    GIL Actif Désactivé
    Multi-threading Concurrent (1 thread CPU à la fois) Parallèle (Multi-cœurs réels)
    Compatibilité 100% des bibliothèques Partielle (Certaines extensions C doivent être mises à jour)
    Performance Single-thread Optimale Légère régression (dûe à la gestion fine des verrous mémoire)

    • Python fait-il du vrai multi-threading ? OUI, si vous utilisez une build Python 3.13+ configurée en mode .
    • Peut-on se débarrasser du GIL ? OUI. C'est officiel depuis la version 3.13, mais ce n'est pas encore le réglage par défaut pour garantir la stabilité de l'écosystème.


    La transition complète prendra probablement encore 2 à 3 ans (horizon Python 3.15/3.16) pour devenir le standard.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  6. #6
    Membre actif

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2023
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2023
    Messages : 75
    Par défaut
    Aucun intérêt à mettre du Rust à la place du C dans Python. Aucune nécessité apparente . Pire cela complexifie le travail sur le code de Python. On peut faire en C du code sur ce n'est pas interdit.

  7. #7
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 738
    Par défaut
    Faire du code sûr en C n'est pas interdit, mais c'est loin d'être une évidence. La problématique de sécurisation a aussi des impacts, aussi bien à l'entrée dans le projet (complexité d'apprentissage, gens qui n'osent pas s'engager, ...) et sur la durée (validation, maintenance,...). Si les développeurs principaux de Python s'y intéressent, c'est sans doute qu'ils estiment que les coûts induits pas l'absence de sécurité du C sont supérieur a ceux de l'introduction de Rust.

Discussions similaires

  1. concernant les repertoires principaux d'Unix
    Par mannoul dans le forum Administration système
    Réponses: 1
    Dernier message: 29/03/2008, 00h19
  2. Réponses: 3
    Dernier message: 04/06/2007, 13h26
  3. Réponses: 3
    Dernier message: 23/04/2007, 14h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo