Hohe Performance, gute Fehlerprüfung: Darum ist Rust so beliebt

Rust gibt es seit 2006. Die Programmiersprache entstammt den Tasten eines Mozilla-Entwicklers. Seit ihrem Launch wächst die Nutzerbasis der Sprache – mittlerweile findet sie Anwendung beim Bauen von Webanwendungen, Command-Line-Tools oder verteilten Services.
Die Low-Level-Sprache Rust ist so effizient, dass sie ohne automatische Speicherbereinigung auskommt. Dennoch bietet sie die Performance von C und C++, allerdings ohne die Stolperfallen, die Entwickler bei der Arbeit kennen und beachten müssen.
Die Entwickler hinter Rust wollten eine Sprache kreieren, mit der Systemprogrammierung sicherer und Nebenläufigkeit, also die gleichzeitige Ausführung mehrerer Berechnungen, Anweisungen oder Befehle, einfacher wird. Sowohl Speichersicherheits- als auch Nebenläufigkeitsfehler entstehen, wenn Code auf Daten zugreift, auf die er zum jeweiligen Zeitpunkt nicht zugreifen soll.
Das erreicht Rust über sein zentrales Feature, die sogenannte Ownership. Wer mit Rust arbeitet, muss sich darum allerdings nicht selber kümmern, der Rust-Compiler checkt das statisch für euch. Das ist auch der Grund, warum Rust ohne Garbage-Collector (automatische Speicherbereinigung) auskommt und ihr euch über Speicherzugriffsfehler – anders als zum Beispiel in C – keine Sorgen machen müsst. Bezogen auf das Konzept der Nebenläufigkeit bedeutet das, dass ihr nach verschiedensten Paradigmen arbeiten könnt. Message-Passing, geteilter State, Lock-Free- oder auch komplett funktionale Programmierung sind in Rust möglich. Das Design der Programmiersprache hilft euch dabei, gängige Fehlerquellen zu vermeiden.
Werden Messages entlang eines Channels versandt, wird deren Ownership mit transferiert. Das ermöglicht es, einen Pointer von einem zum anderen Thread zu schicken, ohne befürchten zu müssen, dass die Threads später versuchen, über diesen Pointer auf den Speicher zuzugreifen. Die Channels in Rust forcieren isolierte Threads. Ein Lock weiß, welche Daten es schützt. Die Datentypen in Rust wissen, ob sie zwischen mehreren Threads verschickt werden dürfen und ob mehrere Threads sicher auf sie zugreifen können – Rusts Design erzwingt diese sichere Nutzung. Ihr könnt sogar Stack-Frames zwischen Threads teilen – Rust sorgt dafür, dass die Frames aktiv bleiben, während andere Threads auf sie zugreifen. Alle diese Benefits gehen auf Rusts Ownership-Modell zurück. Locks, Channels und Datenstrukturen ohne Lock sind übrigens außerhalb der Kernsprache in Bibliotheken definiert.
Der Rust-Compiler ist strikter und bietet sichere Speicherverwaltung ohne Runtime-Overhead. Generell hat Rusts Lifetime-Management einen starken Fokus auf Sicherheit: Die Thread-Safety in Rust ist aus genannten Gründen im Vergleich zu anderen Sprachen deutlich höher. Dem Sicherheitsgedanken tragen auch Features wie Sum-Types und die generelle Unveränderlichkeit der Sprache Rechnung.
Die Sprache bietet so interessante Features wie Cross-Compilation, Web-Assembly-Targets für die Frontend-Entwicklung, Unterstützung für die Entwicklung mobiler Anwendungen und mittlerweile einige nützliche Libraries. Rust-Code ist – im Vergleich zu Code in C++ – relativ einfach zu lesen. Die Sprache verfügt über funktionale Features wie map()
, find()
oder filter()
. Rust ist eine Programmiersprache mit imperativer Syntax. Higher-Order-Funktionen könnt ihr trotzdem definieren.
TL;DR: Wer mit Rust arbeitet, ist gezwungen, sich über Speicherbelegung Gedanken zu machen. Smart Pointer und Referenzen sind quasi die Basis von Rusts Speichermanagement. Wer von C++ kommt, dürfte sich hier relativ schnell einarbeiten können. Wer von Python oder JavaScript kommt, braucht wahrscheinlich etwas länger, um mit den Konzepten vertraut zu werden. Der daraus resultierende Code ist quasi „clean by default“. Was den Speicher angeht, habt ihr mit Rust sehr genaue Kontrollmöglichkeiten – bei mehr Sicherheit im Vergleich zu Sprachen wie zum Beispiel C.
Bitte beachte unsere Community-Richtlinien
Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.
Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.
Dein t3n-Team
Finde die breite Nutzungsmöglichkeiten gut, so wird ja z.B. Fuchsia als Betriebssystem in Rust geschrieben, genauso können Rust-programme als webassembly erzeugt werden, so dass fast jeder Browser die Programme nativ ausführen kann.
Guten Abend,
ich bin Laie und wage die Frage ob in PP erstellte Daten und Entwürfe in eine Homepage übertragen werden könnten. Kurze Antwort mit JA oder NEIN wäre ok.
Danke im Voraus.
Ja, hat aber nichts mit Rust zu tun.