في مارس من هذا العام على فرع لينكس المقبل التي كانت تعمل فيها في ذلك الوقت مع Linux kernel 5.13 ، تم تضمين مجموعة أولية من المكونات لتطوير برامج تشغيل الأجهزة في اللغة الصدأ والآن تم تقديم الطلب لتضمين طبعة ثانية من التصحيحات لإضافة دعم Rust إلى Linux kernel.
الشخص الذي أرسل الطلب إلى مطوري Linux هو Miguel Ojeda ، مؤلف مشروع Rust-for-Linux والذي تحدثنا عنه أيضًا منذ بضعة أيام ، منذ أن تم تعيينه لتولي مسؤولية مشروع "Prossimo" الذي كان أساسًا يركز على تنسيق الجهود لنقل البنية التحتية الحيوية للبرامج إلى رمز آمن لتأمين ذاكرة Linux kernel باستخدام Rust (إذا كنت تريد معرفة المزيد عن المشروع ، يمكنك الرجوع إلى النشر على الرابط أدناه.)
الطلب الذي أرسله ميغيل أوجيدا هو نسخة ثانية محدثة من مكونات تطوير برامج تشغيل الأجهزة بلغة Rust والتي تم فيها حذف التعليقات التي تم إجراؤها أثناء مناقشة الإصدار الأول من التصحيحات والتي انضم إليها Linus Torvalds بالفعل إلى المناقشة واقترح تغيير المنطق لمعالجة بعض عمليات البت.
داخل الفوائد المذكورة هي أن إدارة الذاكرة الآمنة مضمونة في Rust في وقت الترجمة عن طريق التحقق من المراجع وتتبع ملكية الكائن وعمر الكائن ، بالإضافة إلى تقييم صحة الوصول إلى الذاكرة في وقت التشغيل.
يوفر الصدأ أيضًا حماية تجاوز عدد صحيح، يتطلب تهيئة إلزامية للقيم المتغيرة قبل الاستخدام ، ويتعامل بشكل أفضل مع الأخطاء في المكتبة القياسية ، ويعتمد مفهوم المراجع والمتغيرات الثابتة بشكل افتراضي ، ويقدم كتابة ثابتة قوية لتقليل الأخطاء المنطقية.
من التغييرات التي تبرز من هذا الإصدار الجديد من الباتشات المذكورة:
- يمنع رمز تخصيص الذاكرة إمكانية توليد حالة ذعر عند حدوث أخطاء مثل نفاد الذاكرة.
- متضمن متغير من مكتبة تخصيص Rust ، حيث تمت إعادة صياغة الكود للتعامل مع الأقفال، ولكن الهدف النهائي هو إحضار جميع الميزات الضرورية للنواة إلى الإصدار الرئيسي من التخصيص (تم بالفعل إعداد التغييرات ونقلها إلى مكتبة Rust القياسية).
- بدلاً من الإصدارات الليلية ، يمكن الآن استخدام الإصدارات التجريبية والمستقرة برنامج التحويل البرمجي rustc لتجميع نواة تدعم الصدأ. حاليًا ، يتم استخدام rustc 1.54-beta1 كمترجم مرجعي ، ولكن بعد الإصدار 1.54 في نهاية الشهر ، سيتم دعمه كمترجم مرجعي.
- تمت إضافة دعم لكتابة الاختبارات باستخدام سمة Rust القياسية "# [اختبار]" والقدرة على استخدام المبادئ لاستخدام نموذج التعليمات البرمجية من الوثائق كاختبارات.
- تمت إضافة دعم لبنى ARM32 و RISCV بالإضافة إلى x86_64 و ARM64 المدعومة مسبقًا.
تطبيقات دول مجلس التعاون الخليجي المحسنة Rust (الواجهة الخليجية الأمامية لـ Rust) و rustc_codegen_gcc (الواجهة الخلفية rustc لدول مجلس التعاون الخليجي) ، والتي تتجاوز الآن جميع المعايير. - أ مستوى جديد من التجريد لبرامج Rust لاستخدام آليات kernel المكتوبة بلغة C ، مثل الأشجار وكائنات عد المراجع وإنشاء واصفات الملفات والمهام والملفات وناقلات الإدخال / الإخراج.
- لقد حسنت مكونات تطوير برنامج التشغيل من دعم الوحدة النمطية "file_operations" ، و "module!" Macro ، وتسجيل الماكرو ، وبرامج التشغيل الأولية (فحص وحذف).
- لدى Binder دعم لتمرير واصفات الملفات وارتباطات LSM.
- يُقترح مثال أكثر وظيفية لبرنامج تشغيل Rust ، bcm2835-rng ، لمولد رقم عشوائي للأجهزة للوحات Raspberry Pi.
أخيرًا ، إذا كنت مهتمًا بمعرفة المزيد عنها ، يمكنك الرجوع إلى التفاصيل في الرابط التالي.