פלטפורמת Android מספקת תמיכה בפיתוח רכיבים מקומיים של מערכת ההפעלה ב-Rust, שזו שפת תכנות מודרנית למערכת שמספקת ערבויות לאבטחת זיכרון עם ביצועים שדומים ל-C/C++. ב-Rust נעשה שימוש בשילוב של בדיקות בזמן הידור שמחייבות את משך החיים והבעלות של האובייקט, ובדיקות בסביבת זמן הריצה שמבטיחות גישה תקינה לזיכרון, וכך מבטלות את הצורך באיסוף אשפה.
חלודה מספקת מגוון של תכונות שפה מודרניות שמאפשרות למפתחים להיות פרודוקטיביים יותר ובטוחים יותר בקוד שלהם:
- תוכניות בטוחות בו-זמנית – הקלות שבה משתמשים יכולים לכתוב קוד יעיל ובטוח לשרשורים, הובילה ליצירת סיסמת Fearless Concurrency של Rust.
- Expressive type system – חלודה עוזרת למנוע באגים בתכנות לוגי על ידי מתן הרשאה לסוגים שונים של אקספרסיביות (כמו Newtype wrappers ווריאציות enum עם תוכן).
- בדיקות חזקות יותר בזמן הידור – ככל שמתגלים יותר באגים בזמן הידור, כך המפתחים יכולים להיות בטוחים יותר שהקוד יפעל כמצופה אחרי הידור.
- Built-in Testing Framework (מסגרת בדיקה מובנית) – Rust מספק מסגרת בדיקה מובנית שבה אפשר למקם בדיקות יחידה לצד היישום שהן בודקות, וכך קל יותר לכלול את בדיקות היחידה.
- אכיפה של טיפול בשגיאות – פונקציות עם כשלים שניתן לשחזר יכולות להחזיר סוג תוצאה, שיהיה וריאנט של הצלחה או וריאנט של שגיאה. המהדרר מחייב את מבצעי הקריאה לבדוק את וריאנט השגיאה של
Result
enum שמוחזר מקריאה לפונקציה ולטפל בו. כך אפשר לצמצם את הסיכוי לבאגים שנובעים מכשלים שלא טופלו. - אתחול – חלודה דורשת אתחול של כל משתנה למשתמש חוקי מסוג שלו לפני השימוש, כדי למנוע אתחול לא מכוון לערך לא בטוח.
- טיפול בטוח יותר במספרים שלמים – כל ההמרות מסוג מספר שלם הן המרות מפורשות. מפתחים לא יכולים לבצע הטמעה בטעות במהלך קריאה לפונקציה כשמקצים למשתנה, או כשמנסים לבצע פעולות חשבון עם סוגים אחרים. בדיקת Overflow מופעלת כברירת מחדל ב-Android עבור Rust, וכדי לבצע פעולות Overflow צריך להגדיר אותן במפורש.
למידע נוסף, אפשר לעיין בסדרת הפוסטים בבלוג על התמיכה ב-Rust ל-Android:
- Rust ב-Android Platform
מספקת סקירה כללית על הסיבה שצוות Android השיק את Rust כשפת פלטפורמה חדשה. - שילוב Rust בפרויקט Android Open Source
הסבר על האופן שבו הוספנו תמיכה ב-Rust למערכת ה-build, ועל הסיבות לקבלת החלטות מסוימות לגבי העיצוב. - יכולת פעולה הדדית של Rust/C++ בפלטפורמת Android
התייחסות לגישה ליכולת הפעולה ההדדית של Rust/C++ ב-Android.