Mit dem Kernel von C nach Rust – ein Projektbericht zu Effizienz und Sicherheit
Seite 3: Fazit und Ausblick
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)