www.wikidata.de-de.nina.az
Rust ist eine Multiparadigmen Systemprogrammiersprache die von der Open Source Community entwickelt wurde und unter anderem von Mozilla Research gesponsert wird 12 Sie wurde mit dem Ziel entwickelt sicher nebenlaufig und praxisnah zu sein 13 Sicherheit bezieht sich dabei insbesondere auf die Vermeidung von Programmfehlern die zu Speicherzugriffsfehlern oder Pufferuberlaufen und damit unter Umstanden auch zu Sicherheitslucken fuhren vor allem auch in nebenlaufigen Prozessen Im Gegensatz zu anderen Programmiersprachen mit automatischer Speicherverwaltung verwendet Rust hierfur keine Garbage Collection sondern ein besonderes Typsystem Dessen Typsicherheit wurde formal bewiesen 14 RustBasisdatenParadigmen multiparadigmatisch generisch nebenlaufig funktional imperativ strukturiert Erscheinungsjahr 2010 erste stabile Version 2015Designer Graydon HoareEntwickler Mozilla 1 Graydon Hoare 1 2 Rust Stiftung 3 Aktuelle Version 1 74 0 4 16 November 2023 Typisierung stark statisch affin 5 TypinferenzBeeinflusst von Alef 6 C 6 C 6 Cyclone 6 Erlang 6 Haskell 6 Limbo 6 Newsqueak 6 Objective CAML 6 Ruby 6 Scheme 6 Standard ML 6 Swift 6 Betriebssystem Linux macOS Windows FreeBSD Android iOS 7 und weitere 8 9 Lizenz Apache Lizenz Version 2 0 10 11 MIT Lizenz 10 11 www rust lang orgRust vereint Ansatze aus verschiedenen Programmierparadigmen unter anderem aus der funktionalen der objektorientierten und der nebenlaufigen Programmierung und erlaubt so ein hohes Abstraktionsniveau Beispielsweise gibt es in Rust algebraische Datentypen Pattern Matching Traits ahnlich den Typklassen in Haskell Closures sowie Unterstutzung fur RAII Die Sprache wurde so entworfen dass die Kosten der Abstraktionen zur Laufzeit so gering wie moglich bleiben konnen zero cost abstractions um eine mit C vergleichbare Performanz zu erreichen 15 Inhaltsverzeichnis 1 Geschichte 2 Sprachdesign 2 1 Syntax Sprachkonstrukte 2 2 Typsystem 2 3 Zeiger Speicherverwaltung 2 4 Fehlerbehandlung 3 Beispiele 3 1 Hello World Funktion 3 2 Fakultats Funktion 3 2 1 Iterativ 3 2 2 Rekursiv 3 2 3 Behandlung von Uberlauf 3 3 Stapelspeicher 4 Verwendung 4 1 Betriebssysteme 4 1 1 Microsoft Windows 4 1 2 Google Android 4 1 3 Linux Kernel 5 Literatur 6 Weblinks 7 EinzelnachweiseGeschichte BearbeitenDie Sprache entstand aus einem personlichen Projekt des Mozilla Mitarbeiters Graydon Hoare Mozilla begann das Sponsoring des Projekts im Jahr 2009 16 Es wurde 2010 zum ersten Mal angekundigt 17 Im selben Jahr begann der Wechsel von einem noch in OCaml geschriebenen ersten Compiler zu einem neuen Compiler der selbst in Rust geschrieben ist 18 Dieser rustc genannte Compiler verwendet LLVM als Back End und kann sich seit 2011 erfolgreich selbst ubersetzen 19 Eine erste stabile Version von Compiler und Standardbibliothek Rust 1 0 wurde am 15 Mai 2015 veroffentlicht 20 Im August 2020 entliess Mozilla im Rahmen einer Unternehmensumstrukturierung unter anderem grosse Teile des Rust Teams 21 Das Servo Team wurde komplett aufgelost Nach Angaben der Vorstandsvorsitzenden Mitchell Baker wurde dies durch die Folgen der COVID 19 Pandemie notwendig 22 23 Das Ereignis fuhrte zu Bedenken uber die Zukunft von Rust 24 Daher grundete das Rust Kernteam eine Rust Stiftung um das Eigentum an allen Markenzeichen und Domainnamen zu ubernehmen wie auch die finanzielle Verantwortung fur deren Kosten 25 Am 8 Februar 2021 gaben die Unternehmen AWS Huawei Google Microsoft und Mozilla sowie funf Mitglieder aus dem Rust Team die Grundung der Rust Foundation bekannt 26 27 Sprachdesign BearbeitenSyntax Sprachkonstrukte Bearbeiten Syntaktisch ist die Sprache an C angelehnt Mehrere aufeinanderfolgende Anweisungen werden durch ein Semikolon getrennt Blocke stehen in geschweiften Klammern In vielen Details weicht die Syntax allerdings davon ab So werden beispielsweise keine Klammern um die Bedingungen von if und while Statements benotigt stattdessen aber geschweifte Klammern um den dahinterstehenden Block erzwungen auch wenn dort nur eine Anweisung steht Das Schlusselwort for leitet in Rust immer eine Foreach Schleife ein die das Iterieren uber beliebige auch benutzerdefinierte Container und Objekte ermoglicht Anstelle des switch Statements gibt es die wesentlich machtigeren match Ausdrucke die nicht nur mit Zahlen und Zeichenketten umgehen konnen sondern Pattern Matching auf beliebig verschachtelten Strukturen durchfuhren konnen Variablen werden normalerweise klein snake case geschrieben Datentypen mit Ausnahme der primitiven mit grossem Anfangsbuchstaben PascalCase Typparameter von generischen Typen und Funktionen stehen in spitzen Klammern Zwei Doppelpunkte drucken aus dass der Bezeichner auf der rechten Seite aus dem Namensraum des Bezeichners auf der linken Seite entstammen soll Die Bindung eines Bezeichners x an einen Wert wird let x Typ Wert geschrieben wobei die Angabe des Typs auch entfallen darf wenn der Typ abgeleitet werden kann Eine Variablen Deklaration fur die Variable v hat die Form let mut v Typ Initialwert oder allgemeiner let mut v Typ v Wert Der Compiler uberpruft mittels Datenflussanalyse ob alle Bindungen und Variablen vor dem Auslesen initialisiert wurden Verwendung von uninitialisiertem Speicher ist nur uber einen speziellen Befehl moglich welcher zwingend mit unsafe markiert werden muss Typsystem Bearbeiten Benutzerdefinierte Datentypen konnen entweder als struct Struktur wie in C oder als enum tagged Union definiert werden Fur beide Arten von Datentypen kann man mittels des impl Schlusselwortes Methoden definieren Die sonst fur objektorientierte Programmierung ubliche Vererbung gibt es in Rust allerdings nicht Polymorphie wird stattdessen durch Traits und generische Programmierung ermoglicht Ein Trait definiert eine Menge von Funktionen und Methoden die dann jeweils zusammen von Datentypen implementiert werden und bei Typparametern als Einschrankung fur die erlaubten Typen dienen konnen Dies wird auch fur Operatoren verwendet sodass beispielsweise der Operator mit jedem Datentyp verwendet werden kann der den Trait Add implementiert 28 Alle Funktions Methoden und Operatoraufrufe werden dabei statisch gebunden wodurch dem Compiler einige Optimierungen ermoglicht werden Allerdings kann uber sogenannte Trait Objects auch mittels dynamischer Bindung auf Trait Methoden zugegriffen werden Es ist erlaubt sowohl existierende Traits aus fremdem Code fur benutzerdefinierte Typen als auch neue benutzerdefinierte Traits fur existierende Typen zu implementieren Zeiger Speicherverwaltung Bearbeiten Rust kennt neben den sogenannten Raw Pointern die Zeigern in C entsprechen und nur in explizit als unsafe markiertem Code dereferenziert werden durfen auch noch Referenzen Diese zeigen immer auf gultigen Speicher und durfen niemals den Wert null annehmen Es werden zwei verschiedene Arten von Referenzen unterschieden gemeinsame Referenzen shared references eingeleitet durch amp und veranderbare Referenzen mutable references eingeleitet durch amp mut Der Rust Compiler garantiert statisch dass keine Referenz das von ihr referenzierte Objekt uberlebt dass das referenzierte Objekt nicht verandert wird wahrend eine Referenz egal ob gemeinsam oder veranderbar existiert und dass eine veranderbare Referenz wenn eine solche existiert stets die einzige Referenz auf ein Objekt ist sodass Veranderungen am Objekt vorgenommen werden konnen ohne dabei Referenzen zum selben Objekt an anderen Stellen im Code oder sogar in anderen Threads ungultig zu machen Das Erstellen von Referenzen wird auch als Borrowing Ausleihen bezeichnet und bildet zusammen mit dem Konzept der Ownership Besitz die Grundlage fur die sichere Speicherverwaltung ohne Garbage Collection Ownership bedeutet hier dass jedes Objekt im Speicher im Besitz derjenigen Variable ist der es bei der Erstellung zugewiesen wird Am Ende der Lebensdauer dieser Variable wird der Speicher automatisch freigegeben Fur die meisten komplexeren Datentypen verwendet Rust die sogenannte Move Semantik sodass bei Zuweisung eines Objektes zu einer anderen Variablen das Objekt verschoben wird und ein Zugriff auf die alte Variable daraufhin nicht mehr moglich ist Auch beim Ubergeben von Objekten als Wertparameter an Funktionen call by value werden solche Objekte in die Funktion hineingeschoben und sind von aussen nicht mehr zugreifbar wenn sie nicht wieder von der Funktion zuruckgegeben werden Primitive Datentypen im engeren Sinne verwenden keine Move Semantik sondern die sonst ubliche Copy Semantik Zuweisungen erstellen eine Kopie Dies gilt nicht fur folgende Datentypen die in Rust als primitiv gelten veranderbare Referenzen mutable references 29 manche Closures 30 str 31 und manche Arrays 32 und manche Tupel 33 Bei benutzerdefinierten Datentypen kann mittels des Copy Traits selbst entschieden werden ob Move oder Copy Semantik verwendet werden soll Zur dynamischen Speicherverwaltung stehen die Smart Pointer Typen Box Rc und der Hilfstyp RefCell zur Verfugung welche einerseits dem System Ownership Borrowing Lifetime Move unterworfen sind dieses System andererseits auf die Laufzeitdynamik ubertragen Der Typ Box lt T gt beschreibt einen besitzenden Zeiger auf einen Wert vom Typ T im dynamisch allozierten Speicher Der Typ Rc lt T gt beschreibt uber Referenzzahlung einen gemeinschaftlichen Besitz auf einen unveranderlichen Wert Ein unveranderlicher Wert kann jedoch veranderliche innere Daten vom Typ RefCell lt T gt besitzen wobei jeweils ein Referenzzahler fur einen Zugriff analog zu amp und amp mut das sichere dynamische Borrowing durch Prufung zur Laufzeit ermoglicht Mit Rc allein ist keine Dynamik zyklischer Datenstrukturen moglich Hierzu kann wieder RefCell herangezogen werden wobei die Zyklen manuell aufgebrochen werden mussen damit es nicht zu einem Speicherleck kommt Als alternatives Konzept ist der Zeigertyp Weak lt T gt vorhanden bei dem die Zeiger analog zu Rc sind jedoch keinen Besitz am Wert haben Zur Umsetzung von Weak ist in Rc ein zweiter Referenzzahler implementiert Ein Zeiger vom Typ Weak verhindert zwar nicht den Destruktor Aufruf beim Verschwinden aller Zeiger vom Typ Rc die Deallokation des brach liegenden Knotens geschieht dann allerdings erst beim Verschwinden des letzten Zeigers vom Typ Weak Die Destruktor Aufrufe sorgen dabei fur ein automatisches Aufbrechen der Zyklen Fur die nebenlaufige Programmierung ist ein Austausch von Rc gegen Arc und RefCell gegen die analogen Konzepte Mutex oder RwLock notwendig Nullzeiger kommen in Rust nicht vor Abwesenheit eines Werts wird stattdessen durch den Typ Option lt T gt modelliert welcher es als enum ermoglicht zwischen Some T Vorhandensein und None Abwesenheit zu unterscheiden Die Verwendung von Optionen ist nicht auf Zeiger beschrankt Mochte man z B einen grossen Teil einer struct zunachst uninitialisiert lassen dann kann man diesen als innere struct hinter einer Option verbergen und mit None initialisieren Fehlerbehandlung Bearbeiten Rust unterscheidet zwischen nicht behebbaren unrecoverable und behebbaren recoverable Fehlern Tritt ein nicht behebbarer Fehler auf wird eine Meldung ausgegeben der Stack aufgeraumt unwinding und der betroffene Thread beendet Wenn dies nicht der Haupt Thread ist lauft das Programm weiter Ein sofortiger Programmabbruch via abort ist auch konfigurierbar Fur behebbare Fehler gibt es in Rust die in vielen Sprachen vorhandene Ausnahmebehandlung mit automatischem Stack Unwinding nicht Stattdessen werden behebbare Fehler als gewohnliche Ruckgabewerte von Funktionen modelliert Zur strengen Typisierung dienen dabei die Typen Result lt T E gt und Option lt T gt Beide Typen sind als enum formuliert Result unterscheidet hierbei zwischen Ok T normale Werte und Err E Fehlerwerte Option definiert hingegen Some T normale Werte und None kein Wert 34 Ein Laufzeitnachteil entsteht bei der Ruckgabe von enum bzw struct in vielen Fallen nicht da der Compiler in der Lage ist fur grossere Objekte automatisch Zeiger zu erzeugen und Nullzeiger Optimierungen durchzufuhren Beispiele BearbeitenHello World Funktion Bearbeiten fn main println Hello world Das obige Beispiel gibt den Text Hello world am Ausgabemedium aus println ist hierbei keine gewohnliche Funktion sondern ein Makro Die Funktionsdeklaration erfolgt in Rust mit dem Schlusselwort fn Fakultats Funktion Bearbeiten Fur die Berechnung der Fakultat einer Zahl n displaystyle n nbsp also n 1 2 3 n k 1 n k displaystyle n 1 cdot 2 cdot 3 dotsm n prod k 1 n k nbsp existieren verschiedene Losungswege insbesondere ein rekursiver und ein iterativer Beide sind in Rust umsetzbar Iterativ Bearbeiten fn fakultaet i u64 gt u64 let mut acc 1 for num in 2 i acc num acc Da die Fakultat fur alle naturlichen Zahlen definiert ist kann als Datentyp auf u64 eine vorzeichenlose 64 Bit Ganzzahl 35 zuruckgegriffen werden In dieser Variante wird die Fakultat nach obiger Definition umgesetzt Auffallig ist das Schlusselwort mut in Zeile 2 das in der Deklaration der Variable acc vorkommt um diese als veranderlich mutable zu kennzeichnen da im Schleifenkorper in Zeile 4 eine erneute Wertzuweisung vorgenommen wird Eine explizite return Anweisung wird in Rust nicht benotigt weil der letzte Ausdruck der aufgrund des fehlenden Semikolons keine Anweisung ist als Ruckgabewert gilt 36 Dieser Ausdruck muss dem Ruckgabetypen aus dem Funktionskopf entsprechen Alternativ erlaubt es Rust das Problem im Sinne der funktionalen Programmierung anzugehen Sogenannte Iterators bieten eine Moglichkeit iterierbare Objekte zu verarbeiten So lasst sich die Fakultat mit Hilfe des Iterators 1 i und dessen Methode product 37 wie folgt darstellen fn fakultaet i u64 gt u64 1 i product Rekursiv Bearbeiten fn fakultaet i u64 gt u64 match i 0 gt 1 n gt n fakultaet n 1 Bei dieser Variante liegt der Kern in einer Fallunterscheidung mit der die Fakultat ebenfalls definiert werden kann n 1 n 0 n n 1 n gt 0 displaystyle n begin cases 1 amp n 0 n cdot n 1 amp n gt 0 end cases nbsp Dieser Ausdruck lasst sich in Rust mittels Pattern Matching und rekursivem Funktionsaufruf implementieren Behandlung von Uberlauf Bearbeiten Mit dem hier benutzten 64 Bit Integer Datentyp lasst sich die Fakultat nur bis 20 berechnen bis ein Uberlauf passiert welcher nur noch falsche Ergebnisse liefert Dies geschieht haufig unbemerkt Je nach Kompiliermethode wurde dieser Uberlauf in den obigen Beispielen als nicht behebbarer Fehler bemerkt sodass das Programm sich beendet oder es wurde mit dem Uberlauf weitergerechnet Stattdessen kann dieser Fehlerfall wie folgt mit Hilfe des Typsystems behandelt werden fn fakultaet i u64 gt Option lt u64 gt match i 0 gt Some 1 n gt match fakultaet n 1 Some m gt n checked mul m None gt None Stapelspeicher Bearbeiten Die kombinierte Nutzung von Enumerationen Strukturen und Zeigern erlaubt die Konstruktion komplexer Datenstrukturen Das folgende Beispiel zeigt die Implementierung eines unbeschrankten Stapelspeichers als einfach verkettete Liste der durch Verhullung in ein Modul zu einem abstrakten Datentyp gemacht wird Die offentliche Schnittstelle ist durch das Schlusselwort pub gekennzeichnet Die Formulierung des abstrakten Datentyps Stack lt T gt ist generisch uber seinem Elementtyp T gestaltet Man sagt auch Stack lt T gt ist parametrisch polymorph oder ist allquantifiziert uber die Typvariable T Bei der Erzeugung von Maschinencode stehen dem Compiler nun zwei Moglichkeiten zur Wahl Entweder die Funktionalitat wird fur jeden Elementtyp neu generiert ein Monomorphisierung genannter Prozess oder aber eine Laufzeit polymorphe Schnittstelle wird generiert die einen beliebigen Elementtyp uber eine Dispatch Tabelle verarbeiten kann Der aktuelle Compiler ist nur zu Ersterem fahig welches den Vorteil der hoheren Optimierbarkeit bietet mod stack struct Node lt T gt data T next Option lt Box lt Node lt T gt gt gt pub struct Stack lt T gt top Option lt Box lt Node lt T gt gt gt impl lt T gt Stack lt T gt pub fn new gt Self Self top None pub fn push amp mut self element T let node self top take self top Some Box new Node data element next node pub fn pop amp mut self gt Option lt T gt if let Some node self top take self top node next Some node data else None use stack Stack fn main let mut a Stack lt i32 gt Stack new a push 1 a push 2 println a pop println a pop println a pop Die Notation amp mut self ist eine Kurzschreibweise fur self amp mut Self Eine Problemsituation tut sich bei der Entnahme des Knotens aus top auf Weil es hier zur Besitzubertragung an node kommt wurde die Speicherzelle ungultig werden Zur Umgehung dieser gefahrlichen Situation wurde die Methode Option take genutzt die die ungultige Speicherzelle sogleich mit dem Wert None uberschreibt Die Standardbibliothek enthalt viele Hilfsfunktionen von denen einige manchmal sogar lediglich zur moderaten Verknappung von Quelltext herangezogen werden Benutzung der monadischen Methode Option map gestattet bspw eine kurzere Formulierung der Methode pop pub fn pop amp mut self gt Option lt T gt self top take map node self top node next node data Es ist im Allgemeinen nicht empfehlenswert grundlegende Datenstrukturen neu zu erfinden da dies eine vermeidbare Fehlerquelle ist und den Datenaustausch verkomplizieren kann Anstelle des hier beispielhaft gezeigten Stack sollte Vec verwendet werden 38 Verwendung BearbeitenDer Rust Compiler wird standardmassig mit Cargo einer Paketverwaltung fur Rust Software ausgeliefert die verwendete Bibliotheken automatisch herunterladt und Abhangigkeiten auflost Jedes Paket beinhaltet eine Konfigurationsdatei im TOML Format die als Cargo toml im Paketverzeichnis abgelegt wird In dieser werden neben allgemeinen Informationen zum Paket u a Name Version und Autoren auch die benotigten Abhangigkeiten angegeben 39 Eine Vielzahl wiederverwendbarer Open Source Komponenten stehen im offiziellen Paket Repository crates io 40 zur Verfugung Ab der Version 1 34 0 ist es zudem moglich andere Paket Repositories zu nutzen Dies ermoglicht beispielsweise dass Unternehmen eigene interne Paket Repositories erstellen und fur Closed Source Komponenten nutzen Rust findet unter anderem in folgenden Projekten Verwendung Mozilla Firefox 41 42 Servo eine neue Layout Engine fur Webbrowser von Mozilla 43 OpenDNS verwendet Rust in zwei Softwarekomponenten 44 45 librsvg freie SVG Bibliothek Teil des Gnome Projektes Google Fuchsia ein Betriebssystem das von Google entwickelt wird 46 Deno eine Laufzeitumgebung fur JavaScript und TypeScript als Alternative zu Node js RustDesk eine Remote Desktop Anwendung Signal Messenger Kernfunktionalitaten wie Signal Protokoll oder Kryptographie fur alle Apps Android iOS Desktop 47 Betriebssysteme Bearbeiten Rust findet in vielen Betriebssystemen zunehmend Anwendung da vor allem Speicherzugriffsfehler oder Pufferuberlaufe immer wieder zu Sicherheitslucken fuhren welche mit Rust von Haus aus vermieden werden konnen Dabei wird zumeist C oder C ersetzt Microsoft Windows Bearbeiten Microsoft selbst ist bereits Grundungsmitglied der Rust Foundation und bezahlt als Platinum Sponsor 300 000 US Dollar im Jahr an die Organisation 48 2020 hatte Microsoft angekundigt Teile von Windows in Rust neu zu schreiben DWriteCore eine Engine zur Textanalyse Layout und Rendering besteht mittlerweile aus rund 150 000 Zeilen Rust 49 Auch wenn es sich um einen kleinen Test handelt werden wir die Nutzung von Rust im Kernel weiter steigern heisst es in einem Windows Blog Post aus Juli 2023 zur Implementierung der GDI Region in win32kbase rs sys in sicherem Rust 50 Bereits im Oktober 2023 war Rust im Kernel von Windows 11 als ein SysCall angekommen 51 Im November 2023 hat der bei Microsoft fur Betriebssystemsicherheit zustandige David Weston angegeben dass Rust von Microsofts hauseigenen Entwicklungswerkzeugen kunftig erstklassig unterstutzt werden und damit auf einer Stufe wie C oder C stehen soll Die bedeutet vor allem Arbeiten an sowie Investitionen in interne Systeme Dafur sind 10 Millionen US Dollar veranschlagt Als Ziel mochte man vor allem die Speichersicherheit der eigenen Anwendungen erhohen Zusatzlich zu der Ankundigung hat man neben dem Mitgliedsbeitrag eine Million an die Rust Foundation gespendet 52 Google Android Bearbeiten Google selbst ist Grundungsmitglied der Rust Foundation und bezahlt als Platinum Sponsor 300 000 US Dollar im Jahr an die Organisation 48 Bereits seit 2019 wird Rust von Google in Android verwendet was laut Aussage von Android Sicherheit Ingenieur Jeffrey Vander Stoep von 2019 bis 2022 bereits 223 Speichersicherheitsfehler auf 85 pro Jahr reduzieren konnte Bisher wurden auch keine Speicherfehler im hinzugefugten Rust Code gefunden 53 In Android 12 wurde Rust Support erstmals angekundigt in Android 13 war bereits ein grosserer Teil des neu hinzugefugten Code in Rust geschrieben 53 Fur Android 14 wurde bereits eine Bare Metal Rust Umsetzung veroffentlicht Die Protected Virtual Machine Firmware ersetzt den in C geschriebenen Open Source Bootloader U Boot Grund dafur sind Speicherfehler wie Pufferuberlauf oder Out of Bounds Fehler im Bootloader welche aufgrund der Angreifbarkeit eines Bootloaders zumeist als kritisch eingestuft werden und zukunftig damit vermieden werden konnten 54 Im November 2023 wurde der erste komplette Linux Treiber fur Android erstellt namens Binder Dabei handelt es sich um eine komplett neue Umsetzung der Interprozesskommunikation IPC zuvor in C umgesetzt und im Zuge wurden auch weitere Plane und Funktionen umgesetzt 55 Linux Kernel Bearbeiten Mit dem Linux Kernel 6 1 wurde erstmals die Moglichkeit geschaffen neben der Programmiersprache C auch Rust als zweite Programmiersprache im Kernel zu verwenden Dies war aber noch nicht als produktiv zu bezeichnen da noch entsprechende Rust Module im Kernel fehlten 56 57 Erst mit den folgenden Kerneln wurden Module und mehrere Updates der Toolchain gemacht um dem produktiven Einsatz naher zu kommen sowie um zukunftig naher an der aktuellen Entwicklung von Rust zu sein 58 59 In einem Interview mit Rust fur Linux Betreuer Miguel Ojeda wird berichtet dass rund 70 der Sicherheitslucken auf Speichersicherheitsprobleme der C C Codebasis zuruckzufuhren sind welche sich zukunftig mit Rust vermeiden liessen Fur Entwickler bietet Rust als Sprache Bibliothek und Tooling viele moderne Verbesserungen im Vergleich zu C 60 Literatur BearbeitenGeorg Nold Neuling im Programmiersprachenwald Was Rust hat das andere nicht haben In iX Magazin fur professionelle Informationstechnik Nr 5 Mai 2021 ISSN 0935 9680 S 42 44 Weblinks BearbeitenOffizielle Website Offizielles Lehrbuch englisch Deutsche Ubersetzung Offizielle Syntaxreferenz Introduction Rust By Example In rustbyexample com Abgerufen am 9 Februar 2018 englisch Einzelnachweise Bearbeiten a b prev rust lang org abgerufen am 24 Februar 2019 jaxenter com abgerufen am 31 Januar 2018 foundation rust lang org Announcing Rust 1 74 0 Rust Blog 16 November 2023 englisch abgerufen am 16 November 2023 Alexis Beingessner The Pain Of Real Linear Types in Rust In Beingessners Blog 8 Mai 2017 abgerufen am 10 Oktober 2019 a b c d e f g h i j k l m In Influences The Rust Reference Doc building for ios In GitHub Abgerufen am 4 Januar 2015 Rust Platform Support In Rust Forge Abgerufen am 3 Juni 2019 englisch Frequently Asked Questions In Rust Embedded Abgerufen am 3 Juni 2019 englisch a b In GitHub a b github com Rust Mozilla Research abgerufen am 3 Mai 2019 The Rust Programming Language Abgerufen am 21 Oktober 2012 Dr Ralf Jung Understanding and Evolving the Rust Programming Language Abgerufen am 15 Juli 2021 The Rust Project Developers The Rust Language FAQ How fast is Rust Abgerufen am 27 Juni 2021 englisch Project FAQ 14 September 2010 abgerufen am 11 Januar 2012 Future Tense 29 April 2011 abgerufen am 6 Februar 2012 At Mozilla Summit 2010 we launched Rust a new programming language motivated by safety and concurrency for parallel hardware the manycore future which is upon us Graydon Hoare Rust Progress In Graydon s work on Mozilla 2 Oktober 2010 archiviert vom Original am 19 Marz 2012 abgerufen am 3 April 2016 englisch Graydon Hoare rust dev stage1 rustc builds 20 April 2011 abgerufen am 20 April 2011 After that last change fixing the logging scope context bug looks like stage1 rustc builds Just shy of midnight Announcing Rust 1 0 Mozilla streicht Stellen und Projekte heise online 29 August 2020 abgerufen am 9 Februar 2021 tschneidereit Much of the team I used to manage was part of the Mozilla layoffs on Tuesday That team was Mozilla s Rust team and Mozilla s Wasmtime team I thought I d know how to talk about it by now but I don t It s heartbreaking incomprehensible and staggering in its impact In Twitter 12 August 2020 abgerufen am 9 Februar 2021 englisch asajeffrey Mozilla is closing down the team I m on so I am one of the many folks now wondering what the next gig will be It s been a wild ride In Twitter 11 August 2020 abgerufen am 9 Februar 2021 englisch Is Rust in Trouble After Big Mozilla Layoffs In Dice 27 August 2020 abgerufen am 9 Februar 2021 englisch Laying the foundation for Rust s future In Rust Blog 18 August 2020 abgerufen am 9 Februar 2021 englisch Hello World In Rust Blog Rust Foundation 8 Februar 2021 abgerufen am 9 Februar 2021 englisch Silke Hahn Willkommen Rust Foundation Die Programmiersprache hat eine neue Heimat In heise online 8 Februar 2021 abgerufen am 9 Februar 2021 Dokumentation des Add Traits Trait Implementierungen fur Referenzen In Dokumentation der Rust Standardbibliothek Abgerufen am 7 August 2023 englisch Der Copy Trait In Dokumentation der Rust Standardbibliothek Abgerufen am 7 August 2023 englisch Der str Datentyp In Dokumentation der Rust Standardbibliothek Abgerufen am 7 August 2023 Der array Datentyp In Dokumentation der Rust Standardbibliothek Abgerufen am 7 August 2023 englisch Der tuple Datentyp In Dokumentation der Rust Standardbibliothek Abgerufen am 7 August 2023 englisch Recoverable Errors with Result The Rust Programming Language Abgerufen am 23 April 2019 u64 Rust Abgerufen am 21 April 2019 Functions Rust By Example Abgerufen am 21 April 2019 std iter Product Rust Documentation Abgerufen am 21 April 2019 std collections In Rust documentation Abgerufen am 13 Oktober 2020 The Manifest Format The Cargo Book Abgerufen am 19 April 2019 The Rust community s crate host Abgerufen am 3 April 2017 englisch Dave Herman Shipping Rust in Firefox In Mozilla Hacks 12 Juli 2016 abgerufen am 2 April 2017 englisch Quantum In Mozilla Wiki Abgerufen am 3 April 2017 englisch Rainald Menge Sonnentag Mozilla veroffentlicht erste Preview der neuen Browser Engine Servo In Heise Newsticker 4 Juli 2016 abgerufen am 4 Juli 2016 Denis Frank Using HyperLogLog to Detect Malware Faster Than Ever In OpenDNS Security Labs Archiviert vom Original am 3 Juni 2016 abgerufen am 19 Marz 2016 Frank Denis ZeroMQ Helping us Block Malicious Domains in Real Time In OpenDNS Security Labs Archiviert vom Original am 30 Juni 2016 abgerufen am 19 Marz 2016 Fuchsia Rust In fuchsia googlesource com Abgerufen am 5 Marz 2019 Overview Signal 26 Marz 2023 abgerufen am 27 Marz 2023 englisch a b Rust Foundation In foundation rust lang org Abgerufen am 7 November 2023 englisch Thomas Claburn Microsoft is rewriting core Windows libraries in Rust In The Register 27 April 2023 abgerufen am 7 Juni 2023 englisch Amanda Langowski Brandon LeBlanc Announcing Windows 11 Insider Preview Build 25905 In blogs windows com 12 Juli 2023 abgerufen am 5 November 2023 amerikanisches Englisch Rust is now up and running in Windows 11 kernel In windowsreport com 11 Mai 2023 abgerufen am 4 November 2023 amerikanisches Englisch Golem de IT News fur Profis In golem de Abgerufen am 7 November 2023 a b Memory Safe Languages in Android 13 In Google Online Security Blog Abgerufen am 4 November 2023 englisch heise online Weniger Speicherfehler Google setzt fur Android nun auch auf Bare Metal Rust 11 Oktober 2023 abgerufen am 4 November 2023 Android Google zeigt ersten Linux Treiber in Rust Abgerufen am 4 November 2023 heise online Linux 6 1 als nachster Langzeit Kernel erschienen 13 Dezember 2022 abgerufen am 4 November 2023 Ferdinand Thommes Linux 6 1 mit initialem Rust Code freigegeben 12 Dezember 2022 abgerufen am 10 Mai 2023 Linux 6 5 Upgrading The Rust Toolchain New Modules Added Abgerufen am 4 November 2023 englisch Rust WQ Abstractions Rust Toolchain Upgrade amp Android Kernel Builds For Linux 6 7 Abgerufen am 4 November 2023 englisch heise online Drei Fragen und Antworten Was die Rust Zukunft fur Linux bringt 6 Marz 2023 abgerufen am 4 November 2023 Normdaten Sachbegriff GND 1078438080 lobid OGND AKS Abgerufen von https de wikipedia org w index php title Rust Programmiersprache amp oldid 239168455