adesso Blog

Rust, eine auf Leistung, Zuverlässigkeit und Produktivität ausgerichtete Systemprogrammiersprache, hat in den letzten Jahren in der Gemeinschaft der Softwareentwicklerinnen und -entwickler große Wellen geschlagen. Diese wachsende Popularität ist zum Teil auf das eingängige Motto der Rust-Community zurückzuführen: "Rewrite everything in Rust". Doch was verbirgt sich hinter dieser Aussage und warum könnte sie eine sinnvolle Überlegung sein?

In den vorangegangenen Teilen dieses Blog-Beitrags haben wir bereits eine grundlegende Einführung in die Welt von Rust gegeben. In diesem Blogeintrag werden wir tiefer in die Vorteile eintauchen, die Rust gegenüber anderen weit verbreiteten Programmiersprachen wie Java oder Python bietet. Wir werden uns darauf konzentrieren, warum es in bestimmten Kontexten vorteilhaft sein kann, den Mut zu haben, Code in Rust neu zu schreiben oder neue Projekte von Grund auf in Rust zu entwickeln.

Ist die Umschreibung in Rust ein Meme oder ernst gemeint?

Die Idee, bestehenden Code in Rust umzuschreiben, ist mehr als nur ein Internet-Gag - es ist ein ernsthafter Trend in der Softwareentwicklung. Die Vorteile von Rust in Bezug auf Sicherheit und Leistung haben viele Organisationen dazu veranlasst, die Sprache ernsthaft in Betracht zu ziehen, um bestehenden Code zu ersetzen oder zu verbessern. Einige der größten Namen in der Technologiebranche, darunter Microsoft und Google, haben öffentlich ihre Unterstützung für Rust erklärt und sind dabei, große Teile ihrer Codebasen in Rust umzuschreiben. Open-Source-Projekte wie Firefox und Deno haben ebenfalls erhebliche Anstrengungen unternommen, um ihren Code in Rust zu implementieren. Es gibt jedoch auch ein humoristisches Element in der Community rund um die Idee der "Rustifizierung" aller Dinge. Dies hat zu Memes und Witzen geführt, die die Begeisterung für Rust und die Vision einer Welt, in der alles in Rust geschrieben ist, überzeichnen. Letztendlich ist der Umstieg auf Rust sowohl ein ernstzunehmender technischer Trend als auch ein kulturelles Phänomen innerhalb der Programmiergemeinschaft. Es ist eine ernsthafte Überlegung für viele Projekte, aber es ist auch wichtig, Kosten und Nutzen einer solchen Umstellung sorgfältig abzuwägen.

Warum alles in Rust umschreiben?

Die zentralen Motive für das Neuschreiben von Programmen in der Programmiersprache Rust lassen sich in mehrere Kategorien einteilen, die eng mit den Aspekten zusammenhängen, die bereits im ersten Teil des Blog-Beitrags hervorgehoben wurden:

  • Speichersicherheit: Rust wurde entwickelt, um die Häufigkeit von Speicherzugriffsfehlern, die in anderen Sprachen häufig auftreten, deutlich zu reduzieren. Dadurch können sicherheitskritische Systeme mit minimalen Leistungseinbußen entwickelt werden.
  • Parallelisierung: Rust bietet robuste Unterstützung für die gleichzeitige und parallele Ausführung von Code. Dies ist besonders wichtig in der heutigen digitalen Landschaft, in der Anwendungen in der Lage sein müssen, mehrere Prozessorkerne effizient zu nutzen. Die inhärente Fähigkeit von Rust, Datenrennen zu verhindern, prädestiniert es für Anwendungen, die hohe Parallelität oder Nebenläufigkeit erfordern.
  • Leistung: Rust ist auf hohe Leistung ausgelegt, vergleichbar mit den Sprachen C und C++. Dies macht es ideal für die Systemprogrammierung und andere Anwendungen, bei denen die Performance von entscheidender Bedeutung ist.
  • Mächtige Abstraktionen: Rust ermöglicht hochgradige Abstraktionen, ohne dass dies zu Lasten der Performance geht. Diese Abstraktionen haben in der Regel keine Laufzeitkosten, was bedeutet, dass sie die Leistung des Codes nicht beeinträchtigen. Dadurch können Entwicklerinnen und Entwickler eleganteren und leichter zu wartenden Code schreiben.
  • Aktive Community: Rust hat eine sehr aktive und stetig wachsende Community, die laufend neue Bibliotheken und Tools zur Verfügung stellt. Dies erleichtert nicht nur die Entwicklung, sondern auch die Wartung von Rust-Code.

Die Entscheidung, bestehende Programme in Rust umzuschreiben, sollte jedoch immer auf einer sorgfältigen Analyse der spezifischen Anforderungen und des Kontextes basieren, da dies mit einem erheblichen Aufwand verbunden sein kann. Es ist daher ratsam, die Vorteile und Kosten einer solchen Entscheidung sorgfältig abzuwägen.

Microsoft setzt auf Rust: Eine Transformation im Kern von Windows

Microsoft arbeitet an der Neuimplementierung von Windows-Kernbibliotheken in Rust. Rust wird bald in den Kern des Windows-Betriebssystems implementiert werden, wie David Weston, Direktor für Betriebssystemsicherheit bei Windows, ankündigte. Der Umstieg auf Rust ist Teil von Microsofts Bemühungen, Speicherfehler zu reduzieren, die für etwa 70 Prozent der Sicherheitslücken in ihren Produkten verantwortlich sind.

Die Überarbeitung von Rust begann 2020 mit DWriteCore, einem Textanalyse-, Layout- und Rendering-Tool. Es besteht nun hauptsächlich aus Rust-Code und hat die Leistung bei der Glyphenersetzung verbessert. DWriteCore besteht nun aus ca. 152.000 Zeilen Rust-Code und ca. 96.000 Zeilen C++-Code. Die Windows-Grafikschnittstelle (Win32 GDI) wurde ebenfalls nach Rust portiert. Die neueste Version von Windows 11 bootet mit der Rust-Version, die alle GDI-Tests besteht, aber die Rust-Portierung ist derzeit hinter einem Feature-Flag deaktiviert. Abgesehen von den vermuteten Sicherheitsverbesserungen wird die Performance bei der Glyphenersetzung mit OTLS (OpenType Library Services) um 5 bis 15 Prozent beschleunigt. Obwohl Microsoft von Rust begeistert ist, zögert das Unternehmen mit einem vollständigen Umstieg. „Windows in Rust neu zu schreiben, wird wahrscheinlich nicht so schnell passieren", sagt Weston. Dennoch stärkt Microsofts Unterstützung für Rust die Sprache und kommt der Open-Source-Gemeinschaft zugute. Entwicklerinnen und Entwickler in der Industrie äußern sich positiv über Microsofts Schritt in Richtung Rust. Samuel Colvin, Gründer von Pydantic, betont die Bedeutung von Rust für leistungsfähige Low-Level-Anwendungen und freut sich über die Unterstützung durch Microsoft. Er erklärte: „Ich bin beeindruckt, dass Microsoft so zukunftsorientiert ist, aber nicht sehr überrascht. Ich bin sicher, dass sie von ihren Ingenieuren unter Druck gesetzt werden, Rust zu übernehmen. Wenn man heute eine Anwendung baut, die entweder leistungsintensiv oder Low-Level ist, dann ist Rust zu diesem Zeitpunkt ein Kinderspiel“. Colvin sagte, dass gute Rust-Ingenieure und -Ingenieurinnen vielleicht nicht überall zu finden sind, aber er glaubt, dass es einfacher ist, gute Rust-Ingenieure und -Ingenieurinnen zu finden als für C/C++.

Weitere Informationen findet ihr in diesem Video: https://www.youtube.com/watch?v=8T6ClX-y2AE

Rewritten in Rust Tools

Im Folgenden möchten wir eine Reihe von Projekten vorstellen, die den entscheidenden Schritt gegangen sind und eine komplette Neuentwicklung in Rust initiiert haben. Diese Projekte zeigen das wachsende Vertrauen in Rust als leistungsfähige und effiziente Programmiersprache, die sich sowohl für bestehende Systeme als auch für Neuentwicklungen eignet. Dies ist nur eine kleine Auswahl interessanter Projekte.

  • Firecracker: Ein Open-Source-Virtualisierungsprojekt, das von Amazon Web Services (AWS) initiiert wurde. Ursprünglich in C++ implementiert, wurde ein Großteil des Codes in Rust umgeschrieben, um erweiterte Sicherheitsgarantien zu bieten.
  • Servo: Eine experimentelle Webbrowser-Engine, die von Mozilla entwickelt wurde. Obwohl einige Teile in C++ geschrieben sind, wurde der Großteil des Codes in Rust implementiert.
  • Sudo RS: Ein sicherheitszentriertes, speichersicheres Redesign der sudo- und su-Befehle in Rust. Es soll als nahtloser und sicherer Ersatz für gängige Anwendungsfälle dienen.
  • Deno: Eine sichere Laufzeitumgebung für JavaScript und TypeScript, die auf der V8 JavaScript Engine und der Programmiersprache Rust basiert. Sie wurde von Ryan Dahl, dem ursprünglichen Schöpfer von Node.js, entwickelt und stellt eine Art "Neudenken" von Node.js dar, bei dem viele der ursprünglichen Designentscheidungen von Node revidiert wurden.
  • uutils coreutils: Eine plattformübergreifende Neuimplementierung der GNU coreutils in Rust mit dem Ziel, ein nahtloser Ersatz für die GNU utils zu sein. Es ist so konzipiert, dass es auf vielen Plattformen wie Linux, Mac und Windows läuft, was eine einfache Übertragung von Skripten zwischen diesen Plattformen ermöglicht.
  • Discord: Discord wechselte von Go zu Rust, um die Leistung und Effizienz zu verbessern. Dies betraf vor allem den "Read States"-Dienst, der durch das Speichermodell und den Garbage Collector von Go beeinträchtigt wurde. Rusts Ownership-Modell für die Speicherverwaltung beseitigte Leistungsspitzen und verbesserte die Speicherverwaltung. Rust wurde bereits erfolgreich in der Software-Infrastruktur von Discord eingesetzt, so dass der Wechsel ein logischer Schritt war. Durch die Migration zu Rust konnte Discord die Latenz, CPU- und Speichernutzung verbessern und eine effizientere Programmierung ermöglichen. Neben den Leistungsvorteilen bietet Rust auch Vorteile für das Entwicklungsteam, erleichtert das Refactoring und verfügt über ein ausgezeichnetes Ökosystem und Tools.

Ausblick

Zusammenfassend lässt sich sagen, dass der Umstieg auf Rust für viele Organisationen erhebliche Vorteile bringen kann, wie das Beispiel Discord zeigt. Von Leistungsverbesserungen über Speichersicherheit bis hin zu Typsicherheit bietet Rust eine Vielzahl von Funktionen, die sowohl die Produktivität der Entwicklerinnen und Entwickler als auch die Benutzererfahrung verbessern können. Es ist jedoch wichtig, darauf hinzuweisen, dass der Umstieg auf Rust - oder jede andere Programmiersprache - nicht ohne Herausforderungen ist. Sie erfordert Zeit, Ressourcen und eine Lernkurve seitens der Entwicklerinnen und Entwickler. Es ist daher wichtig, die spezifischen Bedürfnisse und Umstände des Projekts zu berücksichtigen, bevor eine solche Entscheidung getroffen wird.

Abschließend sei gesagt, dass die "Rewrite Everything in Rust"-Bewegung zwar eine starke Botschaft hat, aber nicht wörtlich genommen werden sollte. Jede Technologie hat ihre Stärken und Schwächen und es ist wichtig, die richtige Technologie für das richtige Problem zu wählen. Der Umstieg auf Rust ist ein spannender Trend in der Softwareentwicklung und wir sind gespannt, wie sich diese Sprache weiterentwickelt und in Zukunft eingesetzt wird. Der Umstieg auf Rust ist kein Allheilmittel, aber für viele kann es eine starke Option sein, um die Leistung, Sicherheit und Wartbarkeit ihrer Software zu verbessern.

Bild Marc Mezger

Autor Marc Mezger

Marc Fabian Mezger ist AI Specialist Consultant, der sich auf die Bereiche Medical Deep Learning, Computer Vision und Drift spezialisiert hat. In seiner aktuellen Rolle im Competence Center AI & Data Science ist er für die Beratung von Kunden zu AI-Lösungen und deren Umsetzung verantwortlich. Er verfügt über umfangreiche Kenntnisse im Bereich Machine und Deep Learning.

Bild Moritz Momper

Autor Moritz Momper

Moritz ist Data Engineer bei adesso. Er hat sich auf Python-basierte Data Engineering und Backend-Entwicklung in Go spezialisiert, um innovative Lösungen für Datenverarbeitung und -analyse zu schaffen.

Kategorie:

Methodik

Schlagwörter:

Rust

Python

Diese Seite speichern. Diese Seite entfernen.