3 points par GN⁺ 2024-07-31 | 1 commentaires | Partager sur WhatsApp
  • Traduire C en Rust (TRACTOR)

    • Dr Dan Wallach
    • Après plus de 20 ans d’efforts pour résoudre les problèmes de sécurité mémoire en C et C++, la communauté du génie logiciel est parvenue à une conclusion
    • S’appuyer uniquement sur des outils de détection de bugs ne suffit pas
    • Il est préférable d’utiliser des langages de programmation « sûrs » capables de rejeter à la compilation les programmes non sûrs
    • Le programme TRACTOR vise à traduire automatiquement le code C existant en Rust
    • L’objectif est d’atteindre une qualité et un style équivalents à ceux d’un développeur Rust expérimenté, afin d’éliminer les vulnérabilités de sécurité liées à la sécurité mémoire présentes dans les programmes C
    • Ce programme pourrait inclure une nouvelle combinaison d’analyse statique, d’analyse dynamique et de techniques d’apprentissage automatique comme les grands modèles de langage
    • Plus d’informations sont disponibles dans le Special Notice de TRACTOR sur SAM.Gov
  • Principales réalisations de la DARPA

    • Révolution furtive

      • Au début des recherches de la DARPA sur la technologie furtive, Have Blue, prototype du F-117A, a réussi son premier vol en 1977
      • Le succès du programme F-117A a marqué le début de la révolution furtive, apportant d’immenses bénéfices à la sécurité nationale
    • La navigation dans la paume de la main

      • Les premiers récepteurs GPS étaient volumineux et lourds
      • En 1983, la DARPA a travaillé à leur miniaturisation, favorisant une adoption beaucoup plus large des capacités GPS
    • Ouvrir la voie à l’Internet moderne

      • Les recherches de l’ARPA ont joué un rôle essentiel dans le lancement de la révolution de l’information
      • Elles ont développé les bases conceptuelles de l’ARPANET et inventé les protocoles numériques qui ont conduit à la naissance d’Internet
  • Résumé de GN⁺

    • Le programme TRACTOR constitue une tentative importante pour résoudre les problèmes de sécurité mémoire en traduisant automatiquement le code C existant en Rust
    • Les recherches de la DARPA ont fortement contribué aux avancées technologiques modernes, notamment la technologie furtive, la miniaturisation du GPS et la naissance d’Internet
    • Cet article peut être utile aux ingénieurs logiciel et aux personnes intéressées par l’histoire des technologies
    • Des projets aux fonctionnalités similaires incluent Checked C de Microsoft et le langage Carbon de Google

1 commentaires

 
GN⁺ 2024-07-31
Avis Hacker News
  • Le Rust écrit par des programmeurs expérimentés est très différent du C, et la plupart des codes intéressants sont écrits en C++

    • Déterminer statiquement toute la durée de vie des allocations d’un programme C est un problème très difficile
    • Les programmes C/C++ peuvent lier la durée de vie des allocations à des événements comme un clic utilisateur
    • Si le programme à analyser contient des bugs, la notion de durée de vie peut ne plus avoir de sens
    • Les recherches existantes supposent que le code analysé est correct
  • Il est intéressant que cette proposition ait été rendue publique

    • On essaie de tempérer les attentes quant à la faisabilité de la traduction automatique
    • Le code source C contient moins d’informations que le code source Rust
    • Il est impossible de générer les informations manquantes
    • Inférer correctement demande du jugement, ce qui peut entraîner des erreurs
    • Le projet peut réussir dans une certaine mesure, mais il faut l’aborder avec prudence
    • Espérons qu’un projet gouvernemental ne sera pas interprété comme une condamnation totale du C ou un éloge total de Rust
  • Je n’aime pas l’état d’esprit du type « réécrivons le monde en Rust »

    • Pour porter un projet vers un nouveau langage ou une nouvelle plateforme, une traduction mécanique n’est pas une bonne approche
    • Il faut investir du temps dans la planification d’une meilleure architecture et dans la conception du système logiciel
    • Si l’on décide d’utiliser Rust, il faut écrire en Rust
    • Il vaut mieux moderniser le C existant en C moderne et utiliser un model checker pour vérifier la sûreté de la mémoire, des ressources et de l’arithmétique des entiers
  • Beaucoup lisent ce projet comme une demande de traduction du code C et C++ vers Rust

    • Le C et le C++ sont fondamentalement non sûrs
    • Il faut traduire ou écrire autant de code que possible dans des langages sûrs
    • Je soutiens les logiciels qui traduisent le code C existant vers Rust
    • L’objectif n’est pas un consensus pour réécrire le monde en Rust, mais une migration vers des langages sûrs
  • Il y a un problème de maintenance des bases de code traduites

    • Il faut une base de code écrite en C et une équipe d’ingénieurs C capable de la maintenir
    • Une base de code Rust traduite automatiquement peut être plus difficile à lire et à comprendre que l’originale
    • Il faut une équipe d’ingénieurs Rust
    • S’il y a déjà des ingénieurs Rust, il vaut mieux réécrire le code manuellement
  • Un programme de portage automatique devrait inclure tout ce qui est nécessaire pour rendre le code C sûr

    • Si Rust n’a pas de bugs mémoire et qu’il peut traduire automatiquement du C, alors il pourrait corriger automatiquement tous les bugs mémoire
    • C’est généralement impossible
  • Il vaudrait mieux d’abord embaucher les ingénieurs compétents licenciés de Mozilla pour qu’ils continuent à travailler sur le langage lui-même

    • Le traitement asynchrone n’est pas encore complètement finalisé
    • Il y a plusieurs problèmes
  • C’est une bonne chose que la DARPA fasse avancer ce problème

    • Traduire vers un Rust sûr est très difficile
    • Il existe déjà des outils de traduction de C vers Rust, mais les résultats sont difficiles à maintenir
    • Pour bien faire, il faut résoudre les problèmes de taille des tableaux et d’utilisation non linéaire des pointeurs