Die Android-Plattform unterstützt die Entwicklung nativer Betriebssystemkomponenten in Rust, einer modernen Systemprogrammiersprache, die Speichersicherheit mit einer Leistung bietet, die C/C++ entspricht. Rust verwendet eine Kombination aus Kompilierzeitprüfungen, die die Lebensdauer und den Besitz von Objekten erzwingen, und Laufzeitprüfungen, die gültige Speicherzugriffe gewährleisten. Dadurch ist kein Garbage Collector erforderlich.
Rust bietet eine Reihe moderner Sprachfunktionen, mit denen Entwickler produktiver sein 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 „Furchtlose Parallelität“ (Fearless Concurrency) von Rust geführt.
- Ausdrucksstarkes Typsystem : Rust hilft, logische Programmierfehler zu vermeiden, indem es sehr ausdrucksstarke Typen ermöglicht (z. B. Newtype-Wrapper und Enum-Varianten mit Inhalten).
- Stärkere Kompilierzeitprüfungen : Wenn mehr Fehler zur Kompilierzeit erkannt werden, steigt das Vertrauen der Entwickler, dass der Code wie beabsichtigt funktioniert, wenn er erfolgreich kompiliert wird.
- Integriertes Testframework : Rust bietet ein integriertes Testframework in dem Unit-Tests neben der Implementierung platziert werden können, die sie testen. Dadurch wird es einfacher, Unit-Tests einzubeziehen.
- Erzwingung der Fehlerbehandlung : Funktionen mit wiederherstellbaren Fehlern können
einen Ergebnistyp zurückgeben,
der entweder eine Erfolgs- oder eine Fehler-Variante ist. Der Compiler erfordert, dass Aufrufer die Fehler-Variante einer
Result-Enum prüfen und verarbeiten, die von einem Funktionsaufruf zurückgegeben wird. Dadurch wird das Potenzial für Fehler reduziert, die durch nicht behandelte Fehler entstehen. - Initialisierung : In Rust muss jede Variable vor der Verwendung auf ein gültiges Mitglied ihres Typs initialisiert werden. So wird eine unbeabsichtigte Initialisierung auf einen unsicheren Wert verhindert.
- Sicherere Integer-Verarbeitung : Alle Integer-Typkonvertierungen sind explizite Umwandlungen. Entwickler können nicht versehentlich während eines Funktionsaufrufs umwandeln, wenn sie einer Variablen einen Wert zuweisen oder versuchen, mit anderen Typen zu rechnen. Die Überlaufprüfung ist in Android für Rust standardmäßig aktiviert. Daher müssen Überlaufoperationen explizit sein.
Weitere Informationen finden Sie in der Blogpostreihe zur Android-Rust-Unterstützung:
- Rust in the Android Platform
Bietet einen Überblick darüber, warum das Android-Team Rust als neue Plattformsprache eingeführt hat. - Integrating Rust into the Android Open Source Project
Erklärt, 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
Erklärt den Ansatz zur Rust/C++-Interoperabilität in Android.