الإصدار الخامس من التصحيحات لنواة Linux مع دعم لغة Rust

اقترح ميغيل أوجيدا، مؤلف مشروع Rust-for-Linux، إصدارًا خامسًا من المكونات لتطوير برامج تشغيل الأجهزة بلغة Rust لينظر فيها مطورو Linux kernel. يعتبر دعم الصدأ تجريبيًا، ولكنه مدرج بالفعل في فرع Linux التالي وتم تطويره بما يكفي لبدء العمل على إنشاء طبقات تجريدية على أنظمة kernel الفرعية، بالإضافة إلى كتابة برامج التشغيل والوحدات النمطية. يتم تمويل التطوير من قبل Google وISRG (مجموعة أبحاث أمن الإنترنت)، وهي مؤسس مشروع Let's Encrypt وتروج لـ HTTPS وتطوير التقنيات لتحسين أمان الإنترنت.

تذكر أن التغييرات المقترحة تجعل من الممكن استخدام Rust كلغة ثانية لتطوير برامج التشغيل ووحدات النواة. يتم تقديم دعم الصدأ كخيار لا يتم تمكينه افتراضيًا ولا يؤدي إلى تضمين Rust بين تبعيات البناء المطلوبة للنواة. سيسمح لك استخدام Rust لتطوير برامج التشغيل بإنشاء برامج تشغيل أكثر أمانًا وأفضل بأقل جهد ، وخالية من المشكلات مثل الوصول إلى منطقة الذاكرة بعد تحريرها ، وإلغاء الإشارة إلى المؤشرات الفارغة ، وتجاوزات المخزن المؤقت.

يتم توفير أمان الذاكرة في Rust في وقت الترجمة من خلال التحقق من المرجع ، وتتبع ملكية الكائن وعمر الكائن (النطاق) ، وكذلك من خلال تقييم صحة الوصول إلى الذاكرة أثناء تنفيذ التعليمات البرمجية. يوفر Rust أيضًا حماية ضد فيض الأعداد الصحيحة ، ويتطلب تهيئة إلزامية للقيم المتغيرة قبل الاستخدام ، ويعالج الأخطاء بشكل أفضل في المكتبة القياسية ، ويطبق مفهوم المراجع والمتغيرات الثابتة افتراضيًا ، ويوفر كتابة ثابتة قوية لتقليل الأخطاء المنطقية.

يستمر الإصدار الجديد من التصحيحات في إزالة التعليقات التي تم إجراؤها أثناء مناقشة الإصدارات الأولى والثانية والثالثة والرابعة من التصحيحات. في النسخة الجديدة:

  • تمت إضافة اختبار المكونات لدعم Rust إلى نظام التكامل المستمر استنادًا إلى روبوت 0DAY/LKP المدعوم من Intel وبدأ نشر تقارير الاختبار. نحن نستعد لدمج دعم Rust في نظام الاختبار الآلي KernelCI. تم نقل الاختبار المعتمد على GitHub CI إلى استخدام الحاويات.
  • يتم تحرير وحدات Rust kernel من الحاجة إلى تحديد سمات الصندوق "#![no_std]" و"#![feature(...)]".
  • تمت إضافة دعم لأهداف التجميع الفردية (.o و.s و.ll و.i).
  • تحدد إرشادات التعليمات البرمجية قواعد فصل التعليقات ("//") وتوثيق التعليمات البرمجية ("///").
  • تمت إعادة صياغة البرنامج النصي is_rust_module.sh.
  • تمت إضافة دعم لبدائل المزامنة الثابتة (المتغير العام المشترك) استنادًا إلى تطبيق "CONFIG_CONSTRUCTORS".
  • تم تبسيط إدارة القفل: يتم الجمع بين Guard وGuardMut ونوع واحد ذو معلمات.
  • من الممكن تحديد معلمات إضافية عند تسجيل الأجهزة.
  • تمت إضافة تجريد "RwSemaphore"، الذي يعمل بمثابة غلاف فوق بنية rw_semaphore C.
  • لاستخدام mmap، تمت إضافة وحدة mm جديدة وتجريد VMA (مجمّع فوق بنية vm_area_struct).
  • تم تحويل برنامج التشغيل GPIO PL061 إلى استخدام الماكرو "dev_*!".
  • تم إجراء تنظيف عام للكود.

المصدر: opennet.ru

إضافة تعليق