توفّر منصة Android إمكانية تطوير مكوّنات نظام التشغيل الأصلية بلغة Rust، وهي لغة حديثة لبرمجة الأنظمة توفّر ضمانات أمان الذاكرة مع أداء مماثل لـ C/C++. وتستخدم Rust مجموعة من عمليات التحقّق في وقت الترجمة التي تفرض مدة صلاحية العنصر وملكيته، وعمليات التحقّق في وقت التشغيل التي تضمن عمليات وصول صالحة إلى الذاكرة، ما يزيل الحاجة إلى أداة جمع المهملات.
توفّر Rust مجموعة من ميزات اللغة الحديثة التي تسمح للمطوّرين بالعمل بفعالية أكبر وثقة أكبر في رموزهم البرمجية:
- البرمجة المتزامنة الآمنة: إنّ سهولة استخدام هذه الميزة للمستخدمين في كتابة رموز برمجية فعّالة وآمنة لعمليات المعالجة المتعدّدة قد أدّت إلى ظهور شعار Rust المتمثل في البرمجة المتزامنة بلا خوف.
- نظام أنواع تعبيري: يساعد Rust في منع أخطاء البرمجة المنطقية من خلال السماح بأنواع تعبيرية للغاية (مثل أدوات تغليف Newtype وأنواع ملف السجلّ التي تحتوي على محتويات).
- عمليات تحقّق أقوى في وقت الترجمة: إنّ اكتشاف المزيد من الأخطاء في وقت الترجمة يزيد من ثقة المطوّر بأنّه عند ترجمة الرمز البرمجي بنجاح، سيعمل على النحو المقصود.
- إطار عمل الاختبار المضمّن: توفّر Rust إطار عمل اختبار مضمّنًا يمكن من خلاله وضع اختبارات الوحدة بجانب التنفيذ الذي يتم اختباره، ما يسهّل تضمين اختبارات الوحدة.
- فرض معالجة الأخطاء: يمكن للوظائف التي تتضمّن أخطاء قابلة للاسترداد
عرض نوع النتيجة،
والذي سيكون إما صيغًا للنجاح أو صيغًا للأخطاء. يطلب المُجمِّع من المُرسِلين التحقّق من متغير الخطأ في قائمة القيم الثابتة
Result
المُسترَدة من طلب استدعاء دالة ومعالجته. ويؤدي ذلك إلى تقليل احتمالية حدوث أخطاء نتيجةً لعدم معالجة حالات الفشل. - الإعداد: تتطلّب Rust إعداد كل متغيّر ليكون عضوًا شرعيًا من نوعه قبل الاستخدام، ما يمنع الإعداد غير المقصود لقيمة غير آمنة.
- معالجة أعداد صحيحة أكثر أمانًا: جميع عمليات التحويل من النوع الصحيح هي عمليات تحويل صريحة. لا يمكن للمطوّرين إجراء عملية تحويل عن طريق الخطأ أثناء استدعاء دالة عند تعيينها لمتغيّر، أو عند محاولة إجراء عمليات حسابية بأنواع أخرى. يكون التحقّق من overflow مفعَّلاً تلقائيًا في Android لبرنامج Rust، ما يتطلّب أن تكون عمليات overflow صريحة.
لمزيد من المعلومات، يُرجى الاطّلاع على سلسلة المشاركات في المدونة حول إتاحة Rust على Android:
- Rust في نظام Android الأساسي
يقدّم نظرة عامة على سبب تقديم فريق Android لـ Rust كلغة برمجة جديدة للنظام الأساسي. - دمج Rust في مشروع Android Open Source Project
يتناول هذا المقال كيفية توفير دعم Rust لنظام الإنشاء، وسبب اتخاذ قرارات تصميم معيّنة. - إمكانية التشغيل التفاعلي لـ Rust/C++ في نظام Android الأساسي
يتناول هذا المقال المنهج المُتّبع في إمكانية التشغيل التفاعلي لـ Rust/C++ في Android.