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

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

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

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

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

  • تم الانتقال إلى استخدام الإصدار المستقر من Rust 1.58.0 كمترجم مرجعي. من بين التغييرات الضرورية للمشروع، والتي لم يتم تضمينها بعد في مجموعة أدوات Rust الرئيسية، علامة "-Zsymbol-mangling-version=v0" (المتوقعة في Rust 1.59.0) ووضع "maybe_uninit_extra" (المتوقع في Rust 1.60.0) .XNUMX) تمت الإشارة إليه.
  • تمت إضافة عمليات فحص تلقائية لتوفر أدوات Rust المناسبة وتوسيع القدرة على اختبار دعم Rust في النظام.
  • تم اقتراح تجريدات جديدة للوصول إلى جداول معرفات الأجهزة ("IdArray" و"IdTable") من كود Rust.
  • تمت إضافة طبقات للوصول إلى الوظائف المتعلقة بالمؤقت (إطار الساعة).
  • يتم الآن تعريف برامج تشغيل النظام الأساسي من خلال تطبيقات السمات.
  • تمت إضافة ماكرو جديد لتبسيط تسجيل برامج تشغيل النظام الأساسي، وتم اقتراح قالب برنامج تشغيل عام جديد.
  • تمت إضافة وحدات ماكرو لهياكل "dev_*".
  • تمت إضافة طرق "{read,write}*_relaxed" لنوع IoMem .
  • تمت إزالة خاصية FileOpener لتبسيط عمليات الملف.
  • تمت إضافة المعلمة "ThisModule" إلى الوسائط التي تم تمريرها عند تسجيل برنامج التشغيل.
  • يُقترح قالب قياسي لإنشاء وحدات kernel بلغة Rust.

المصدر: opennet.ru

إضافة تعليق