3 Punkte von GN⁺ 2024-07-31 | 1 Kommentare | Auf WhatsApp teilen
  • C in Rust übersetzen (TRACTOR)

    • Dr. Dan Wallach
    • Nach mehr als 20 Jahren Bemühungen, die Probleme der Speichersicherheit in C und C++ zu lösen, ist die Software-Engineering-Community zu einem Schluss gekommen
    • Sich allein auf Tools zur Fehlersuche zu verlassen, reicht nicht aus
    • Bevorzugt wird die Verwendung "sicherer" Programmiersprachen, die unsichere Programme bereits zur Compile-Zeit ablehnen können
    • Das Programm TRACTOR zielt darauf ab, bestehenden C-Code automatisch in Rust zu übersetzen
    • Ziel ist es, dieselbe Qualität und denselben Stil zu erreichen wie von erfahrenen Rust-Entwicklern geschriebener Code und damit Speichersicherheits-Sicherheitslücken aus C-Programmen zu beseitigen
    • Das Programm kann eine neue Kombination aus statischer Analyse, dynamischer Analyse und Machine-Learning-Techniken wie Large Language Models umfassen
    • Weitere Informationen sind im TRACTOR Special Notice auf SAM.Gov zu finden
  • Wichtige Errungenschaften von DARPA

    • Stealth-Revolution

      • In der frühen Forschung von DARPA zur Stealth-Technologie absolvierte Have Blue, der Prototyp der F-117A, 1977 erfolgreich seinen Erstflug
      • Der Erfolg des F-117A-Programms markierte den Beginn der Stealth-Revolution, die der nationalen Sicherheit enorme Vorteile brachte
    • Navigation in der Handfläche

      • Frühe GPS-Empfänger waren große und schwere Geräte
      • 1983 arbeitete DARPA daran, sie zu miniaturisieren, was zu einer deutlich breiteren Verbreitung der GPS-Funktionalität führte
    • Den Weg für das moderne Internet bereiten

      • Die ARPA-Forschung spielte eine wichtige Rolle beim Start der Informationsrevolution
      • Sie entwickelte die konzeptionellen Grundlagen von ARPANET und erfand digitale Protokolle, die zur Entstehung des Internets führten
  • Zusammenfassung von GN⁺

    • Das TRACTOR-Programm ist ein wichtiger Versuch, Probleme der Speichersicherheit zu lösen, indem bestehender C-Code automatisch in Rust übersetzt wird
    • Die Forschung von DARPA trug wesentlich zur Entwicklung moderner Technologien bei, darunter Stealth-Technologie, die Miniaturisierung von GPS und die Entstehung des Internets
    • Dieser Artikel kann für Softwareingenieure und Menschen mit Interesse an Technikgeschichte nützlich sein
    • Projekte mit ähnlicher Zielsetzung sind unter anderem Microsofts Checked C und die Sprache Carbon von Google

1 Kommentare

 
GN⁺ 2024-07-31
Hacker-News-Kommentare
  • Von erfahrenen Programmierern geschriebener Rust-Code unterscheidet sich stark von C, und der Großteil des wirklich interessanten Codes wird in C++ geschrieben

    • Die Lebensdauer aller Allokationen in einem C-Programm statisch zu bestimmen, ist ein sehr schwieriges Problem
    • C-/C++-Programme können die Lebensdauer von Allokationen an Ereignisse wie einen Benutzerklick koppeln
    • Wenn das zu analysierende Programm Bugs hat, kann das Konzept von Lebensdauer bedeutungslos sein
    • Bisherige Forschung geht davon aus, dass der zu analysierende Code korrekt ist
  • Es ist interessant, dass dieser Vorschlag veröffentlicht wurde

    • Es wird versucht, die Erwartungen an die Machbarkeit automatischer Übersetzung zu dämpfen
    • C-Quellcode enthält weniger Informationen als Rust-Quellcode
    • Es ist unmöglich, fehlende Informationen zu erzeugen
    • Um korrekt zu schlussfolgern, ist Urteilsvermögen nötig, und dabei können Fehler entstehen
    • Das Projekt könnte bis zu einem gewissen Grad erfolgreich sein, man sollte aber vorsichtig herangehen
    • Hoffentlich wird ein Regierungsprojekt nicht als pauschale Verdammung von C oder als uneingeschränktes Lob für Rust interpretiert
  • Die Denkweise „Lasst uns die Welt in Rust neu schreiben“ gefällt mir nicht

    • Für das Portieren eines Projekts auf eine neue Sprache oder Plattform ist mechanische Übersetzung keine gute Lösung
    • Man sollte Zeit in die Planung einer besseren Architektur und in das Design des Softwaresystems investieren
    • Wenn man sich für Rust entschieden hat, sollte man in Rust schreiben
    • Es ist besser, C auf modernes C zu aktualisieren und mit Model Checkern Speicher-, Ressourcen- und Sicherheit der Ganzzahlarithmetik zu verifizieren
  • Viele lesen dieses Projekt als Forderung, C- und C++-Code nach Rust zu übersetzen

    • C und C++ sind von Grund auf unsicher
    • So viel Code wie möglich sollte in sichere Sprachen übersetzt oder direkt in ihnen geschrieben werden
    • Unterstützung für Software, die bestehenden C-Code nach Rust übersetzt, wird befürwortet
    • Ziel ist kein Konsens darüber, die Welt in Rust neu zu schreiben, sondern die Migration zu sicheren Sprachen
  • Es gibt Probleme bei der Pflege einer übersetzten Codebasis

    • Man braucht eine in C geschriebene Codebasis und ein Team aus C-Ingenieuren, das sie pflegen kann
    • Eine automatisch übersetzte Rust-Codebasis kann schwerer lesbar und schwerer verständlich sein als das Original
    • Man braucht zusätzlich ein Team aus Rust-Ingenieuren
    • Wenn es bereits Rust-Ingenieure gibt, ist es besser, den Code manuell neu zu schreiben
  • Ein Programm zum automatischen Portieren müsste alle Fähigkeiten enthalten, die nötig sind, um C-Code sicher zu machen

    • Wenn Rust keine Speicherfehler hat und C automatisch übersetzt werden könnte, müsste man damit alle Speicherfehler automatisch beheben können
    • Das ist im Allgemeinen unmöglich
  • Es wäre besser, zuerst die fähigen Ingenieure einzustellen, die bei Mozilla entlassen wurden, damit sie weiter an der Sprache selbst arbeiten können

    • Die asynchrone Verarbeitung ist noch nicht vollständig ausgereift
    • Es gibt verschiedene Probleme
  • Es ist gut, dass DARPA dieses Problem vorantreibt

    • Die Übersetzung in sicheres Rust ist sehr schwierig
    • Es gibt bereits Werkzeuge, die C nach Rust übersetzen, aber die Ergebnisse sind schwer wartbar
    • Um es richtig zu machen, müssen Probleme mit Array-Größen und nichtlinearer Zeigernutzung gelöst werden