Rust
Kurz: Eine kompilierte Systemprogrammiersprache mit Fokus auf Speichersicherheit ohne Garbage Collector — verhindert viele klassische C/C++-Fehler (z. B. Use-after-free) bereits beim Kompilieren.
Genauer: Rusts “Ownership”-System prüft zur Kompilierzeit, wer wann auf welchen Speicher zugreifen darf, und verhindert dadurch ganze Fehlerklassen (Speicherlecks, Data Races), ohne die Laufzeitkosten eines Garbage Collectors. Dadurch bei ähnlicher Performance wie C/C++, aber deutlich sicherer — beliebt für Systemsoftware, Browser-Engines und performancekritische Tools.
Im Detail
fn main() {
let s1 = String::from("hallo");
let s2 = s1; // s1 ist jetzt ungültig - "moved" zu s2
println!("{}", s2); // funktioniert
// println!("{}", s1); // Compiler-Fehler: s1 wurde bereits "moved"
}Das “Ownership”-Modell ist Rusts zentrale Innovation: jeder Wert im Speicher hat genau EINEN “Besitzer” (eine Variable), und wird dieser Besitz an eine andere Variable übertragen (“Move”, wie im Beispiel), wird die ursprüngliche Variable ungültig — der Compiler verweigert jeden weiteren Zugriff darauf. Das verhindert klassische Fehlerklassen wie doppeltes Freigeben von Speicher oder Zugriff auf bereits freigegebenen Speicher, komplett zur Kompilierzeit geprüft, ohne den Laufzeit-Overhead eines Garbage Collectors wie in Java.
Dieser Ansatz macht die Lernkurve steiler als bei den meisten anderen Sprachen (der “Borrow Checker” lehnt zunächst intuitiv wirkenden Code oft ab, bis man die Regeln verinnerlicht hat), zahlt sich aber besonders in Bereichen aus, wo Speichersicherheit UND hohe Performance gleichzeitig kritisch sind: Browser-Engines (Teile von Firefox sind in Rust geschrieben), Betriebssystem-Komponenten und performancekritische Infrastruktur-Tools.
Entstehung bei Mozilla
Rust wurde ursprünglich von Graydon Hoare als persönliches Projekt begonnen und ab 2009 von Mozilla gesponsert, mit dem konkreten Ziel, eine sicherere Alternative zu C++ für die Firefox-Browser-Engine zu entwickeln — Speicherfehler in C/C++ waren (und sind) eine der häufigsten Ursachen für Sicherheitslücken in Browsern, da ein einzelner Fehler beim manuellen Speichermanagement zu ausnutzbaren Schwachstellen führen kann. Die erste stabile Version erschien 2015. Mozillas Servo-Projekt (eine experimentelle, in Rust geschriebene Browser-Engine) diente dabei als praktischer Härtetest für die Sprache in einem sehr komplexen, performancekritischen realen System.
Fehlerbehandlung ohne Exceptions
Anders als Java oder Python kennt Rust keine klassischen Exceptions für erwartbare Fehler — stattdessen gibt eine Funktion, die fehlschlagen kann, explizit einen Result-Typ zurück, der entweder den Erfolgswert oder eine Fehlerbeschreibung enthält. Der Aufrufer muss diesen Rückgabewert explizit behandeln (der Compiler erzwingt das), statt dass ein Fehler unsichtbar die Kontrolle an einen entfernten catch-Block weiterreicht:
fn teile(a: i32, b: i32) -> Result<i32, String> {
if b == 0 {
return Err(String::from("Division durch Null"));
}
Ok(a / b)
}Dieses Muster macht mögliche Fehlerquellen im Funktionssignatur selbst sichtbar (man sieht an der Rückgabetyp-Deklaration sofort, dass eine Funktion fehlschlagen kann) und verhindert, dass Fehler versehentlich unbehandelt durchrutschen — ein häufiges Problem bei klassischen Exception-Systemen, wo ein catch-Block leicht vergessen werden kann.
Praktische Verbreitung
Rust wird regelmäßig in Umfragen (z. B. Stack Overflow Developer Survey) als eine der beliebtesten Programmiersprachen unter Entwicklern genannt, auch wenn die absolute Verbreitung geringer ist als bei etablierten Sprachen wie JavaScript oder Python. Größere Projekte, die auf Rust setzen, umfassen Teile des Linux-Kernels (seit einigen Jahren experimentell erlaubt), Dropboxs Speicher-Backend, und viele moderne Kommandozeilen-Tools (z. B. ripgrep, fd), die für ihre Geschwindigkeit bekannt sind.
Siehe auch: C, Go, Garbage Collector