Programmiersprachen: Die nützlichen Besonderheiten von Rust

Rust räumt Hindernisse aus dem Weg, an denen Sprachen wie C und C++ bisher gescheitert sind. Dabei verspricht es Speichersicherheit und gewinnt stetig Anhänger.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht 36 Kommentare lesen
Lesezeit: 9 Min.
Von
  • Georg Nold
Inhaltsverzeichnis

Wer die Wirtschaftspresse verfolgt, stellt fest, dass der digitale Wandel weite Teile der Industrie in Deutschland erreicht hat. Es sind nicht mehr ausschließlich die Protagonisten der IT-Branche, die Software als zentrales Mittel zur Entwicklung neuer Produkte nutzen. Mit der Automobilindustrie sind auch die Schwergewichte der deutschen Wirtschaft vom Wandel betroffen. In globalisierten Märkten wächst der Druck zur Automatisierung und zur Datenökonomie; der Umstieg auf nachhaltige Energienutzung treibt die Digitalisierung zusätzlich an. Statt elektromechanischer Getriebe und Steuerungen setzt man Computer in Verbindung mit Sensoren und Aktoren ein, um "intelligente" Geräte und Abläufe zu schaffen. Die Produkte werden komplexer und die Software beansprucht einen wachsenden Anteil an der Wertschöpfung.

Da trifft es sich schlecht, dass der sichere Einsatz softwaregestützter Produkte für Konsumenten und Unternehmen mit wachsenden Schwierigkeiten verbunden ist. Regelmäßig tauchen Berichte über Sicherheitslücken in Software auf, die es Angreifern erlauben, Computer und Geräte zu übernehmen, und der Aufwand für Gegenmaßnahmen steigt. IT-Sicherheitsfachleute von Microsoft und Google berichten übereinstimmend, dass 70 Prozent aller Schwachstellen ihrer Produkte im Zusammenhang mit Speicherverwaltungsfehlern entstehen. In der Regel entwickelt man diese Produkte mit C oder C++. Offensichtlich sind die Anstrengungen der zurückliegenden Jahre gescheitert, die Speicherverwaltung von C/C++ zu verbessern.

Schon vor zehn Jahren begann Graydon Hoare als Mitarbeiter der Mozilla Foundation die Arbeit an Rust. Aus den Erfahrungen mit dem Firefox-Browser reifte die Überzeugung, dass eine neue Compilersprache nötig sei, die sich an C- und C++-Entwickler richtet und dazu dienen sollte, Teile des Firefox neu zu implementieren. Sein zentrales Ziel lautete, mittels Automatisierung die Speicherverwaltung anzugehen, den Hauptgrund für Schwachstellen in systemnaher Software. Die Herausforderung hier ist, auf hardwarenahe Ressourcen bei ungebremster Geschwindigkeit zuzugreifen. Programmiersprachen mit Laufzeitumgebung (Lisp, Smalltalk, Python, Ruby, Java, C#, Go …) lösen das Speicherverwaltungsproblem mit einem Garbage Collector (GC), der über alle Variablen und Speicherbereiche Buch führt und sie nach Gebrauch bereinigt. Das Laufzeitsystem bremst dabei aber die Anwendung.