Platforma Android zapewnia wsparcie dla tworzenia natywnych komponentów systemu operacyjnego w Rust, nowoczesnym języku programowania systemów, który zapewnia gwarancje bezpieczeństwa pamięci z wydajnością równoważną C/C++. Rust używa kombinacji kontroli w czasie kompilacji, które wymuszają czas życia i własności obiektu, oraz kontroli w czasie wykonywania, które zapewniają prawidłowy dostęp do pamięci, eliminując w ten sposób potrzebę garbage collectora.
Rust zapewnia szereg nowoczesnych funkcji językowych, które pozwalają programistom być bardziej produktywnym i pewnym siebie w kodzie:
- Bezpieczne programowanie współbieżne — łatwość, z jaką umożliwia to użytkownikom pisanie wydajnego, bezpiecznego dla wątków kodu, dała początek sloganowi Rusta Fearless Concurrency .
- Ekspresyjny system typów — Rust pomaga zapobiegać błędom programowania logicznego, umożliwiając stosowanie wysoce ekspresyjnych typów (takich jak otoki Newtype i warianty wyliczenia z zawartością).
- Silniejsze kontrole w czasie kompilacji — więcej błędów wykrytych w czasie kompilacji zwiększa pewność programistów, że gdy kod skompiluje się pomyślnie, będzie działał zgodnie z założeniami.
- Wbudowana platforma testowa — Rust zapewnia wbudowaną platformę testową, w której testy jednostkowe można umieszczać obok testowanej implementacji, co ułatwia uwzględnienie testów jednostkowych.
- Wymuszanie obsługi błędów — funkcje z możliwymi do naprawienia błędami mogą zwracać typ wyniku , który będzie wariantem powodzenia lub wariantem błędu. Kompilator wymaga, aby wywołujące sprawdzały i obsługiwały wariant błędu wyliczenia
Result
zwróconego z wywołania funkcji. Zmniejsza to ryzyko błędów wynikających z nieobsługiwanych awarii. - Inicjalizacja — Rust wymaga, aby każda zmienna została zainicjowana do prawnego elementu członkowskiego tego typu przed użyciem, zapobiegając niezamierzonej inicjalizacji do niebezpiecznej wartości.
- Bezpieczniejsza obsługa liczb całkowitych — wszystkie konwersje typu liczb całkowitych są jawnymi rzutowaniami. Deweloperzy nie mogą przypadkowo rzutować podczas wywołania funkcji podczas przypisywania do zmiennej lub podczas próby wykonywania operacji arytmetycznych z innymi typami. Sprawdzanie przepełnienia jest domyślnie włączone w systemie Android for Rust, co wymaga, aby operacje przepełnienia były jawne.
Aby uzyskać więcej informacji, zapoznaj się z serią wpisów na blogu na temat obsługi Androida Rust:
- Rdza na platformie Android
Zawiera omówienie, dlaczego zespół Androida wprowadził Rust jako nowy język platformy. - Integracja Rust z projektem Android Open Source
Omawia, w jaki sposób obsługa Rust została wprowadzona do systemu budowania i dlaczego podjęto pewne decyzje projektowe. - Współpraca Rust/C++ z platformą Android
Omawia podejście do interoperacyjności Rust/C++ w systemie Android.