لينڪس ڪنيل لاء پيچ جو اٺون نسخو زنگ ٻوليء جي حمايت سان

Miguel Ojeda، ليکڪ جو Rust-for-Linux پروجيڪٽ، لينڪس ڪنيل ڊولپرز پاران غور لاءِ Rust ٻولي ۾ ڊيوائس ڊرائيورز کي ترقي ڪرڻ لاءِ v8 اجزاء ڇڏڻ جي تجويز ڏني. هي پيچ جو نظر ثاني ٿيل نسخو آهي، اڪائونٽ ۾ پهريون نسخو، نسخي نمبر کان سواء شايع ٿيل. مورچا سپورٽ تجرباتي سمجهي ويندي آهي، پر اڳ ۾ ئي لينڪس-ايڪس برانچ ۾ شامل آهي، 5.20 / 6.0 جي زوال جي رليز ۾ ضم ٿيڻ جي دعويٰ ڪئي وئي آهي، ۽ ڪافي پختو آهي ته ڪم شروع ڪرڻ لاءِ ڪم شروع ڪرڻ لاءِ ڪنيل سبسسٽم تي تجريدي پرت، ۽ انهي سان گڏ لکڻ وارا ڊرائيور ۽ ماڊلز. ترقي گوگل ۽ ISRG (انٽرنيٽ سيڪيورٽي ريسرچ گروپ) پاران فنڊ ڪئي وئي آهي، جيڪو Let's Encrypt پروجيڪٽ جو باني آهي ۽ HTTPS کي فروغ ڏئي ٿو ۽ انٽرنيٽ سيڪيورٽي کي بهتر بڻائڻ لاءِ ٽيڪنالاجيز جي ترقي کي فروغ ڏئي ٿو.

نئين نسخي ۾:

  • ٽول ڪٽ ۽ الوڪ لائبرري جو هڪ قسم، ممڪن نسل کان خالي هڪ ”پريشان“ رياست جڏهن غلطيون ٿينديون آهن، Rust 1.62 جي ڇڏڻ لاءِ تازه ڪاري ڪئي وئي آهي. اڳئين استعمال ٿيل ورزن جي مقابلي ۾، رسٽ ٽول ڪٽ ڪنييل پيچس ۾ استعمال ٿيندڙ const_fn_trait_bound ڪارڪردگي لاءِ سپورٽ کي مستحڪم ڪيو آهي.
  • بائنڊنگ ڪوڊ کي الڳ ڪريٽ پيڪيج ”بائنڊنگ“ ۾ ورهايو ويو آهي، جيڪو ٻيهر تعمير کي آسان بڻائي ٿو جيڪڏهن تبديليون صرف مکيه پيڪيج ”ڪنيل“ ۾ ڪيون وڃن.
  • ميڪرو جو نفاذ "concat_idents!" هڪ طريقيڪار واري ميڪرو جي صورت ۾ ٻيهر لکيو ويو آهي جيڪو concat_idents ڪارڪردگي سان ڳنڍيل ناهي ۽ مقامي متغيرن جي حوالن جي استعمال جي اجازت ڏئي ٿو.
  • "static_asssert!" macro کي ٻيهر لکيو ويو آهي، "core::asssert!()" جي استعمال جي اجازت ڏئي ٿي مستقل جي بدران.
  • ميڪرو "build_error!" ڪم ڪرڻ لاءِ موافقت ڪئي وئي جڏھن ”RUST_BUILD_ASSERT_{WARN,ALLOW}“ موڊ ماڊلز لاءِ سيٽ ٿيل آھي.
  • سيٽنگون "kernel/configs/rust.config" سان هڪ الڳ فائل شامل ڪئي وئي.
  • "*.i" فائلن کي ميڪرو متبادل ۾ پروسيس ڪيو ويو آهي "*.rsi" ۾ تبديل ڪيو ويو آهي.
  • زنگ جي اجزاء جي تعمير لاءِ سپورٽ اصلاح جي سطحن سان مختلف آھن جيڪي سي ڪوڊ لاءِ استعمال ڪيا ويا آھن.
  • شامل ڪيو ويو fs ماڊل، جيڪو فائل سسٽم سان ڪم ڪرڻ لاء پابند مهيا ڪري ٿو. Rust ۾ لکيل هڪ سادي فائيل سسٽم جو هڪ مثال مهيا ڪيو ويو آهي.
  • سسٽم جي قطارن سان ڪم ڪرڻ لاءِ ڪم جي قطار جو ماڊل شامل ڪيو ويو (work_struct ۽ workqueue_struct kernel جي جوڙجڪ تي پابنديون مهيا ڪري ٿي).
  • kasync module جي ترقي asynchronous programming methods (async) جي نفاذ سان جاري رھي. شامل ڪيو ويو ھڪڙو مثال بنيادي سطح جي TCP سرور جو لکيل آھي Rust ۾.
  • [Threaded]Handler قسم ۽ [Threaded]Registration` قسم استعمال ڪندي Rust ٻولي ۾ مداخلت کي سنڀالڻ جي صلاحيت شامل ڪئي وئي.
  • شامل ڪيو ويو پروسيجرل ميڪرو "#[vtable]" ان کي آسان بڻائڻ لاءِ ڪم ڪرڻ جي جدولن جي فنڪشن پوائنٽرز سان، جهڙوڪ فائل_آپريشن جي جوڙجڪ.
  • ٻه طرفي ڳنڍيل فهرستن تي عمل درآمد شامل ڪيو ويو "unsafe_list::List".
  • RCU (ريڊ-ڪاپي-اپڊيٽ) ۽ گارڊ ٽائپ لاءِ ابتدائي سپورٽ شامل ڪئي وئي ته چيڪ ڪرڻ لاءِ ته ڇا ريڊ لاڪ موجوده سلسلي سان جڙيل آهي.
  • شامل ڪيل ٽاسڪ:: اسپون () فنڪشن ٺاهڻ لاءِ ۽ خود بخود ڪرنل ٿريڊ شروع ڪرڻ. پڻ شامل ڪيو Task::wake_up() طريقو.
  • هڪ دير ماڊل شامل ڪيو ويو جيڪو توهان کي دير استعمال ڪرڻ جي اجازت ڏئي ٿو (مسليپ () تي هڪ لفافي).

تجويز ڪيل تبديليون ان کي ممڪن بڻائين ٿيون Rust کي ٻي ٻولي طور استعمال ڪرڻ لاءِ ڊرائيور ۽ ڪنيل ماڊلز کي ترقي ڪرڻ لاءِ. مورچا سپورٽ هڪ اختيار جي طور تي پيش ڪيو ويو آهي جيڪو ڊفالٽ طور تي فعال نه ڪيو ويو آهي ۽ اهو نتيجو نه آهي ته زنگ کي شامل ڪيو پيو وڃي ڪنيل لاء گهربل تعمير انحصار جي طور تي. ڊرائيور ڊولپمينٽ لاءِ رسٽ استعمال ڪرڻ توهان کي اجازت ڏيندو ته گهٽ ۾ گهٽ ڪوشش سان محفوظ ۽ بهتر ڊرائيور ٺاهي، مسئلن کان آزاد، جهڙوڪ ميموري جي رسائي آزاد ٿيڻ کان پوءِ، نول پوائنٽر ڊيريفرنس، ۽ بفر اووررن.

ميموري-محفوظ هينڊلنگ ريفرنس چيڪنگ، اعتراض جي ملڪيت جي ٽريڪ رکڻ ۽ اعتراض جي زندگي (اسڪوپ) جي ذريعي گڏ ڪرڻ واري وقت تي زنگ ۾ مهيا ڪئي وئي آهي، انهي سان گڏ ڪوڊ جي عمل جي دوران ميموري رسائي جي صحيحيت جي تشخيص ذريعي. زنگ انٽيجر اوور فلوز جي خلاف پڻ تحفظ فراهم ڪري ٿو، استعمال ڪرڻ کان اڳ متغير قدرن جي لازمي شروعات جي ضرورت آهي، معياري لائبريري ۾ غلطين کي بهتر نموني سان سنڀاليندو آهي، ڊفالٽ طور ناقابل قابل حوالن ۽ متغيرن جي تصور کي لاڳو ڪري ٿو، منطقي غلطين کي گھٽائڻ لاءِ مضبوط جامد ٽائپنگ پيش ڪري ٿو.

جو ذريعو: opennet.ru

تبصرو شامل ڪريو