د لینوکس کرنل لپاره د پیچونو شپږمه نسخه د زنګ ژبې لپاره ملاتړ سره

میګیویل اوجیدا، د Rust-for-Linux پروژې لیکوال، د لینکس کرنل پراختیا کونکو لخوا په پام کې نیولو لپاره د زنګ په ژبه کې د وسیلې ډرایورانو رامینځته کولو لپاره د v6 اجزاو خوشې کولو وړاندیز وکړ. دا د پیچونو اوومه نسخه ده، د لومړۍ نسخې په پام کې نیولو سره، د نسخې شمیره پرته خپره شوې. د زنګ ملاتړ تجربه کونکی ګڼل کیږي، مګر دمخه د لینکس-راتلونکي څانګې کې شامل شوی او په کافي اندازه رامینځته شوی ترڅو د کرنل فرعي سیسټمونو کې د خلاصون پرتونو رامینځته کولو کار پیل کړي ، او همدارنګه د ډرایورونو او ماډلونو لیکلو لپاره. پراختیا د ګوګل او ISRG (انټرنیټ امنیت څیړنې ګروپ) لخوا تمویل کیږي، کوم چې د لیټس انکریپټ پروژې بنسټ ایښودونکی دی او HTTPS ته وده ورکوي او د انټرنیټ امنیت ښه کولو لپاره د ټیکنالوژیو پراختیا ته وده ورکوي.

په نوې نسخه کې:

  • د ټولک کتابتون د تولک کټ او یو ډول ډول، د "ویرې" حالت د ممکنه نسل څخه خلاص شوی کله چې تېروتنې واقع شي، د Rust 1.60 خوشې کولو ته تازه شوي، کوم چې د کرنل پیچونو کې کارول شوي "شاید_uninit_extra" حالت لپاره مالتړ ثبات کوي.
  • د اسنادو څخه د ازموینو چلولو وړتیا اضافه کړه (ازموینې چې په اسنادو کې د مثالونو په توګه هم کارول کیږي)، د کرنل API سره تړلي ازموینې د تالیف وخت تبادلې له لارې د KUnit ازموینو کې چې د کرنل بارولو پرمهال اجرا شوي.
  • اړتیاوې منل شوي چې ازموینې باید د کلیپي لینټر خبرتیا پایله ونلري ، لکه د زنګ کولو کوډ په څیر.
  • د شبکې دندو سره د "نیټ" ماډل لومړنی تطبیق وړاندیز شوی. د زنګ کوډ د کرنل شبکې جوړښتونو ته لاسرسی لري لکه د نوم ځای (د جوړښت د کرنل جوړښت پراساس)، SkBuff (struct sk_buff)، TcpListener، TcpStream (struct ساکټ)، Ipv4Addr (struct in_addr)، SocketAddrV4 (struct sockaddrV6) .
  • د غیر متناسب برنامه کولو تخنیکونو (async) لپاره لومړني ملاتړ شتون لري ، چې د kasync ماډل په بڼه پلي کیږي. د مثال په توګه، تاسو کولی شئ د TCP ساکټونو سمبالولو لپاره غیر متناسب کوډ ولیکئ: async fn echo_server(stream: TcpStream) -> پایله { let mut buf = [0u8; ۱۰۲۴] ; لوپ { let n = stream.read(&mut buf). انتظار وکړئ؟; که n == 1024 { بیرته راستانه شي Ok(()); } stream.write_all(&buf[..n]).انتظار؟; } }
  • د شبکې پاکټ فلټرونو د مینځلو لپاره net:: فلټر ماډل اضافه شوی. په Rust ژبه کې د فلټر پلي کولو سره د مثال rust_netfilter.rs اضافه کړه.
  • د ساده mutex smutex::Mutex پلي کول اضافه شوي، کوم چې پنینګ ته اړتیا نلري.
  • NoWaitLock اضافه شوی، کوم چې هیڅکله د تالاشۍ انتظار نه کوي، او که چیرې د بل تار لخوا نیول شوي وي، د یوې تېروتنې راپور ورکوي کله چې د زنګ وهونکي د بندولو پر ځای د تالاشۍ ترلاسه کولو هڅه کوي.
  • اضافه شوی RawSpinLock، په کرنل کې د raw_spinlock_t لخوا پیژندل شوی، په هغو برخو کې پلي کولو لپاره چې بې کاره نه وي.
  • د یو شی لپاره د حوالې لپاره د ARef ډول اضافه شوی چیرې چې د حوالې شمیرنې میکانیزم پلي کیږي (تل بیا شمیرل کیږي).
  • د rustc_codegen_gcc بیکینډ، کوم چې تاسو ته اجازه درکوي د GCC پروژې څخه د libgccjit کتابتون په rustc کې د کوډ جنریټر په توګه وکاروئ ترڅو rustc په GCC کې موجود جوړښتونو او اصلاحونو لپاره مالتړ چمتو کړي، د rustc کمپیلر بوټسټراپ کولو وړتیا پلي کړې. د کمپیلر ترویج پدې معنی دی چې په rustc کې د GCC میشته کوډ جنریټر کارولو وړتیا د rustc کمپیلر پخپله رامینځته کولو لپاره. برسېره پردې، د GCC 12.1 وروستي خپریدو کې د rustc_codegen_gcc د سم کار کولو لپاره اړین libgccjit ته اصلاحات شامل دي. د rustc_codegen_gcc د نصبولو وړتیا چمتو کولو لپاره چمتووالی روان دی چې د rustup یوټیلیټ په کارولو سره.
  • د GCC پر بنسټ د Rust ژبې کمپیلر پلي کولو سره د GCC فرنټ اینډ gccrs پراختیا کې پرمختګ یادونه شوې. اوس مهال دوه بشپړ وخت پراختیا کونکي شتون لري چې په gccrs کې کار کوي.

په یاد ولرئ چې وړاندیز شوي بدلونونه دا ممکنه کوي چې د ډرایورانو او کرنل ماډلونو رامینځته کولو لپاره د دویمې ژبې په توګه د Rust کارول. د زنګ ملاتړ د یو اختیار په توګه وړاندې کیږي چې د ډیفالټ لخوا فعال شوی نه وي او پایله یې نه کیږي چې زنګ د کرنل لپاره د اړین جوړونې انحصار په توګه شامل شي. د ډرایور پراختیا لپاره د زنګ کارول به تاسو ته اجازه درکړي د لږترلږه هڅو سره خوندي او غوره ډرایورونه رامینځته کړئ ، له ستونزو څخه پاک وي لکه د خلاصیدو وروسته حافظې ته لاسرسی ، د نول پوائنټر ډیریفرنسونه ، او بفر اوورون.

د حافظې خوندي اداره کول په زنګ کې د تالیف په وخت کې د حوالې چیک کولو له لارې چمتو شوي ، د شیانو ملکیت تعقیب او د څیز ژوند وخت (سوق) ، او همدارنګه د کوډ اجرا کولو پرمهال د حافظې لاسرسي سموالي ارزونې له لارې. زنګ د انټیجر د زیاتیدو پروړاندې محافظت هم چمتو کوي ، د کارولو دمخه د متغیر ارزښتونو لازمي پیل ته اړتیا لري ، په معیاري کتابتون کې خطاګانې په ښه توګه اداره کوي ، د ډیفالټ لخوا د بدلیدونکي حوالې او متغیرونو مفهوم پلي کوي ، د منطقي غلطیو کمولو لپاره قوي جامد ټایپینګ وړاندیز کوي.

سرچینه: opennet.ru

Add a comment