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

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

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

  • د آلک کتابتون د تولک کټ او یو ډول ډول، د "ویرې" حالت د ممکنه نسل څخه پاک دی کله چې تېروتنې واقع کیږي، د Rust 1.62 خوشې کولو لپاره تازه شوي. د مخکینۍ کارول شوي نسخې په پرتله، د زنګ ټیکټ د کنسل پیچونو کې کارول شوي د const_fn_trait_bound فعالیت لپاره ملاتړ مستحکم کړی.
  • د پابندۍ کوډ په جلا کریټ بسته "بائنڈنگز" کې جلا شوی، کوم چې بیا رغونه ساده کوي که بدلون یوازې اصلي بسته "کرنل" کې ترسره شي.
  • د میکرو پلي کول "concat_idents!" د طرزالعمل میکرو په بڼه بیا لیکل شوي چې د concat_idents فعالیت سره تړلي ندي او د محلي متغیرونو ته د حوالې کارولو اجازه ورکوي.
  • "static_asssert!" میکرو بیا لیکل شوی، د "core::asssert!()" کارولو ته اجازه ورکوي د ثابتو پر ځای په هر شرایطو کې.
  • میکرو "build_error!" د کار لپاره تطبیق کیږي کله چې "RUST_BUILD_ASSERT_{WARN,ALLOW}" حالت د ماډلونو لپاره ټاکل شوی وي.
  • د "kernel/configs/rust.config" ترتیباتو سره جلا فایل اضافه شوی.
  • په میکرو بدیلونو کې پروسس شوي "*.i" فایلونه په "*.rsi" بدل شوي.
  • د اصلاح کولو کچې سره د زنګ اجزاو جوړولو لپاره ملاتړ د C کوډ لپاره کارول شوي څخه توپیر لري.
  • د fs ماډل اضافه شوی، کوم چې د فایل سیسټمونو سره کار کولو لپاره پابند چمتو کوي. په Rust کې لیکل شوي د ساده فایل سیسټم مثال وړاندې شوی.
  • د سیسټم کتارونو سره کار کولو لپاره د کاري قطار ماډل اضافه شوی (د work_struct او workqueue_struct د کرنل جوړښتونو باندې پابندۍ چمتو کوي).
  • د kasync ماډل پراختیا د اسینکرونس پروګرام کولو میتودونو (async) پلي کولو سره دوام لري. په Rust کې لیکل شوي د اصلي کچې TCP سرور یوه بیلګه اضافه کړه.
  • د [تریډ شوي] هینډلر ډولونو او [تاریډ شوي] راجسټریشن ډولونو په کارولو سره د زنګ په ژبه کې د مداخلو اداره کولو وړتیا اضافه کړه.
  • د کړنلارې میکرو "#[vtable]" اضافه شوی ترڅو د فعالیت پوائنټرونو جدولونو سره کار کول اسانه کړي ، لکه د فایل_ عملیاتو جوړښت.
  • د دوه اړخیز تړل شوي لیستونو پلي کول اضافه شوي "unsafe_list::List".
  • د RCU (Read-cop-update) او د ګارډ ډول لپاره لومړني ملاتړ اضافه شوی ترڅو وګوري چې ایا د لوستلو تالا اوسني تار پورې تړلی دی.
  • اضافه شوی Task::spawn() فنکشن د کرنل تارونو جوړولو او په اتوماتيک ډول پیل کولو لپاره. همدارنګه د Task::wake_up() طریقه اضافه کړه.
  • د ځنډ ماډل اضافه شوی چې تاسو ته اجازه درکوي ځنډ وکاروئ (د msleep () په اړه یو ریپر).

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

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

سرچینه: opennet.ru

Add a comment