میګویل اوجیدا، د "زنګ لپاره" پروژې لیکوالLinux، د کرنل پراختیا کونکو لخوا د غور لپاره وړاندیز شوی Linux выпуск v8 компонентов для разработки драйверов устройств на языке Rust. Это ревятая редакция патчей с учётом первого варианта, опубликованного без номера версии. Поддержка Rust рассматривается как экспериментальная, но уже включена в ветку linux-next, претендует на интеграцию в осенний выпуск 5.20/6.0 и достаточно развита для начала работы по созданию слоёв абстракции над подсистемами ядра, а также для написания драйверов и модулей. Разработка финансируется компанией Google и организацией ISRG (Internet Security Research Group), которая является учредителем проекта Let’s Encrypt и способствует продвижению 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
