Die Android-Plattform unterstützt die Entwicklung nativer Betriebssystemkomponenten in Rust, einer modernen Systemprogrammiersprache, die Speichersicherheit mit einer Leistung bietet, die der von C/C++ entspricht. Rust verwendet eine Kombination aus Kompilierzeitprüfungen, die die Lebensdauer und das Eigentum von Objekten erzwingen, und Laufzeitprüfungen, die gültige Speicherzugriffe gewährleisten. Dadurch ist kein Garbage Collector erforderlich.
Rust bietet eine Reihe moderner Sprachfeatures, mit denen Entwickler produktiver arbeiten und mehr Vertrauen in ihren Code haben können:
- Sichere parallele Programmierung: Die Leichtigkeit, mit der Nutzer effizienten, threadsicheren Code schreiben können, hat zu dem Slogan Fearless Concurrency („Furchtlose Parallelität“) von Rust geführt.
- Ausdrucksstarkes Typsystem: Rust hilft, logische Programmierfehler zu vermeiden, indem es sehr ausdrucksstarke Typen zulässt (z. B. Newtype-Wrapper und Enum-Varianten mit Inhalt).
- Strengere Prüfungen zur Kompilierungszeit: Je mehr Fehler bei der Kompilierung erkannt werden, desto sicherer können sich Entwickler sein, dass der Code funktioniert, wenn er erfolgreich kompiliert wird.
- Integriertes Test-Framework: Rust bietet ein integriertes Test-Framework, in dem Unit-Tests neben der zu testenden Implementierung platziert werden können, was die Einbindung von Unit-Tests erleichtert.
- Erzwungene Fehlerbehandlung: Funktionen mit wiederherstellbaren Fehlern können einen Ergebnistyp zurückgeben, der entweder eine Erfolgsvariante oder eine Fehlervariante ist. Der Compiler erfordert, dass Aufrufer die Fehlervariante eines
Result
-Enumerations prüfen und behandeln, das von einem Funktionsaufruf zurückgegeben wird. So wird das Risiko von Fehlern, die durch nicht verarbeitete Fehler entstehen, reduziert. - Initialisierung: In Rust muss jede Variable vor der Verwendung mit einem zulässigen Mitglied ihres Typs initialisiert werden, um eine unbeabsichtigte Initialisierung mit einem unsicheren Wert zu verhindern.
- Sicherere Ganzzahlverarbeitung: Alle Ganzzahlkonvertierungen sind explizite Umwandlungen. Entwickler können bei der Zuweisung zu einer Variablen oder beim Versuch, mit anderen Typen arithmetische Operationen auszuführen, nicht versehentlich während eines Funktionsaufrufs einen Casting-Vorgang ausführen. Die Overflow-Prüfung ist in Android für Rust standardmäßig aktiviert. Overflow-Vorgänge müssen also explizit sein.
Weitere Informationen finden Sie in der Reihe von Blogposts zum Android-Rust-Support:
- Rust in der Android-Plattform
Bietet einen Überblick darüber, warum das Android-Team Rust als neue Plattformsprache eingeführt hat. - Rust in das Android Open Source Project einbinden
Beschreibt, wie die Rust-Unterstützung in das Build-System eingeführt wurde und warum bestimmte Designentscheidungen getroffen wurden. - Rust/C++ interop in the Android Platform
Beschreibt den Ansatz für die Interoperabilität von Rust/C++ in Android.