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

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

نئين نسخي ۾:

  • ٽول ڪٽ ۽ الوڪ لائبريري جو هڪ قسم، ممڪن نسل کان آزاد ڪيو ويو آهي "پريشان" حالت جڏهن غلطيون ٿينديون آهن، تازه ڪاري ڪئي وئي آهي Rust 1.60 جي ڇڏڻ لاءِ، جيڪا ڪنيل پيچس ۾ استعمال ٿيل "شايد_uninit_extra" موڊ جي حمايت کي مستحڪم ڪري ٿي.
  • دستاويزن مان ٽيسٽ هلائڻ جي صلاحيت شامل ڪئي وئي (ٽيسٽ جيڪي پڻ دستاويز ۾ مثال طور استعمال ڪيا ويا آهن)، kernel API سان ڳنڍيل ٽيسٽن جي مرتب وقت جي تبديلي جي ذريعي KUnit ٽيسٽن ۾ ڪرنل لوڊنگ دوران جاري ڪيل.
  • گهرجون اختيار ڪيون ويون آهن ته ٽيسٽن جو نتيجو نه هئڻ گهرجي ڪلپي لينٽر وارننگ، جيئن ته رسٽ ڪنيل ڪوڊ.
  • نيٽ ورڪ جي ڪمن سان گڏ "نيٽ" ماڊل جي شروعاتي عمل جي تجويز پيش ڪئي وئي آهي. رسٽ ڪوڊ کي ڪنيل نيٽ ورڪ جي ڍانچي تائين رسائي آهي جهڙوڪ Namespace (struct net kernel structure جي بنياد تي)، SkBuff (struct sk_buff)، TcpListener، TcpStream (struct socket)، Ipv4Addr (struct in_addr)، SocketAddrV4 (struct sockaddrV6 (struct sockaddr_vXNUMX) .
  • اتي موجود آهي شروعاتي سپورٽ غير مطابقت رکندڙ پروگرامنگ ٽيڪنڪ (async) لاءِ، لاڳو ڪيل ڪاسينڪ ماڊل جي صورت ۾. مثال طور، توهان TCP ساکٽس کي ترتيب ڏيڻ لاءِ غير مطابقت واري ڪوڊ لکي سگهو ٿا: async fn echo_server(stream: TcpStream) -> نتيجو { let mut buf = [0u8; 1024]؛ لوپ { let n = stream.read(&mut buf).await؟; جيڪڏهن n == 0 { واپسي ٺيڪ (())؛ } stream.write_all(&buf[..n]).انتظار؟; } }
  • شامل ڪيو ويو net :: فلٽر ماڊل نيٽ ورڪ پيڪيٽ فلٽرن کي ترتيب ڏيڻ لاء. شامل ڪيو ويو مثال rust_netfilter.rs هڪ فلٽر لاڳو ڪرڻ سان Rust ٻولي ۾.
  • هڪ سادي mutex smutex::Mutex جو شامل ڪيل عمل، جنهن کي پننگ جي ضرورت ناهي.
  • شامل ڪيو ويو NoWaitLock، جيڪو ڪڏھن به لاڪ جو انتظار نٿو ڪري، ۽ جيڪڏھن ڪنھن ٻئي سلسلي جي قبضي ۾ ھجي، ته ڪالر کي روڪڻ جي بجاءِ لاڪ حاصل ڪرڻ جي ڪوشش ڪرڻ وقت، ھڪ نقص جي خبر پوي ٿي.
  • شامل ڪيو ويو RawSpinLock، جنهن جي سڃاڻپ ڪئي وئي raw_spinlock_t kernel ۾، انهن حصن تي لاڳو ڪرڻ لاءِ جيڪي بيڪار نٿا ٿي سگهن.
  • شامل ڪيو ويو ARef قسم ھڪڙي اعتراض جي حوالن لاء جنھن تي ريفرنس ڳڻپ ميڪانيزم لاڳو ٿئي ٿو (هميشه-رد ڳڻيو).
  • rustc_codegen_gcc پس منظر، جيڪو توهان کي اجازت ڏئي ٿو libgccjit لائبريري استعمال ڪرڻ جي GCC پروجيڪٽ مان ڪوڊ جنريٽر جي طور تي rustc ۾ rustc مهيا ڪرڻ لاءِ مدد سان آرڪيٽيڪچرز ۽ اصلاحن لاءِ GCC ۾ دستياب، rustc ڪمپيلر کي بوٽ اسٽريپ ڪرڻ جي صلاحيت کي لاڳو ڪيو آهي. ڪمپيلر پروموشن جو مطلب آهي rustc ۾ GCC-based ڪوڊ جنريٽر استعمال ڪرڻ جي صلاحيت rustc compiler پاڻ کي ٺاهڻ لاءِ. ان کان علاوه، GCC 12.1 جي تازي رليز ۾ شامل آهن libgccjit کي درست ڪرڻ لاءِ ضروري آهي rustc_codegen_gcc صحيح ڪم ڪرڻ لاءِ. rustc_codegen_gcc انسٽال ڪرڻ جي صلاحيت مهيا ڪرڻ لاءِ تياريون جاري آهن rustup يوٽيلٽي استعمال ڪندي.
  • جي سي سي جي بنياد تي رسٽ ٻولي ڪمپيلر جي نفاذ سان GCC فرنٽ اينڊ gccrs جي ترقي ۾ پيش رفت نوٽ ڪئي وئي آهي. في الحال ٻه مڪمل وقت وارا ڊولپر آهن gccrs تي ڪم ڪري رهيا آهن.

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

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

جو ذريعو: opennet.ru

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