Mit dem Kernel von C nach Rust – ein Projektbericht zu Effizienz und Sicherheit

Seite 3: Fazit und Ausblick

Inhaltsverzeichnis

Rust hat sich in den vergangenen Jahren extrem weiterentwickelt. Das Team hat die Integration des Inline-Assemblers komplett überarbeitet, was gegenüber C eine deutliche Verbesserung darstellt. Auch Werkzeuge wie clippy oder die RustSec Advisory Database sind einen Blick wert, um die Code-Qualität deutlich zu erhöhen. Mit Ferrocene steht inzwischen ein nach ISO 26262 und IEC 61508 zertifizierter Rust-Compiler für sicherheitskritische Anwendungen zur Verfügung.

Durch unsafe-Codeblöcken kann auch in Rust ein undefiniertes Verhalten entstehen. Um das zu vermeiden, hilft der experimentelle Interpreter MIRI, der eine Zwischenrepräsentation des Compilers interpretiert, um undefiniertes Verhalten zu erkennen. Es existieren viele Ideen und Ansätze, die die Code-Qualität künftig weiter steigern. Die Tabelle unten verdeutlicht zentrale Unterschiede zwischen Rust und C. Einige Aspekte enthält die Tabelle nicht, die eher weiche Kriterien sind. Zum Beispiel bin ich persönlich durch Rust deutlich produktiver geworden.

Wichtige Unterschiede von C und Rust
Eigenschaft C Rust
Direkter Hardware-Zugriff ja ja
Verwendung von Zeigern möglich ja ja (unsafe)
Integration von anderen Programmiersprachen Beispielsweise über das System V Application Binary Interface (ABI) möglich Beispielsweise über das System V Application Binary Interface (ABI) möglich (unsafe)
Garbage Collection nein nein
Memory Safety nein ja
Strenge Typüberprüfung nein ja
Inline Assembler ja ja
Portierbarkeit ja (LLVM Backend u.a.) ja (LLVM Backend)
Moderne Sprachelemente (Closures, Generics, etc.) nein ja

(who)