Miguel Ojeda, autor i projektit Rust-for-Linux, propozoi pĂ«r shqyrtim nga zhvilluesit e bĂ«rthamĂ«s Linux publikimin e komponentĂ«ve v8 pĂ«r zhvillimin e drivarĂ«ve tĂ« pajisjeve nĂ« gjuhĂ«n Rust. Kjo Ă«shtĂ« njĂ« rishikim i katĂ«rt i patch-eve duke marrĂ« parasysh versionin e parĂ«, i publikuar pa numĂ«r versioni. MbĂ«shtetja pĂ«r Rust konsiderohet eksperimentale, por tashmĂ« Ă«shtĂ« pĂ«rfshirĂ« nĂ« degĂ«n linux-next, pretendon tĂ« integrohet nĂ« lĂ«shimin e vjeshtĂ«s 5.20/6.0 dhe Ă«shtĂ« mjaft e zhvilluar pĂ«r tĂ« filluar punĂ«n pĂ«r krijimin e shtresave tĂ« abstraksionit mbi nĂ«n-sistemet e bĂ«rthamĂ«s, si dhe pĂ«r shkruajtjen e drivarĂ«ve dhe moduleve. Zhvillimi financohet nga kompania Google dhe organizata ISRG (Internet Security Research Group), e cila Ă«shtĂ« themeluesi i projektit Letâs Encrypt dhe kontribuon nĂ« promovimin e HTTPS dhe zhvillimin e teknologjive pĂ«r pĂ«rmirĂ«simin e sigurisĂ« nĂ« internet.
NĂ« versionin e ri:
- Instrumenti dhe varianti i bibliotekës alloc, i liruar nga mundësitë e krijimit të gjendjes "panic" në rast të gabimeve, u përditësuan në versionin Rust 1.62. Në krahasim me versionin e mëparshëm të përdorur në instrumentin Rust, u stabilizua mbështetja për funksionalitetin const_fn_trait_bound, i përdorur në patch-e ndaj bërthamës.
- Kodi i lidhjes është ndarë në një paketë të veçantë crate "bindings", që thjeshton rindërtimin në rast të ndryshimeve në paketën kryesore "kernel".
- Realizimi i makros "concat_idents!" është shkruar përsëri në formën e një makrosi procedural, i pa lidhur me funksionalitetin concat_idents dhe që lejon përdorimin e referencave në variablat lokal.
- Makro "static_assert!" është shkruar përsëri, duke lejuar përdorimin e "core::assert!()" në çdo kontekst në vend të konstantave.
- Makro "build_error!" është përshtatur për t'u përdorur kur aktivizohen për modulet modet "RUST_BUILD_ASSERT_{WARN,ALLOW}".
- Shtuar një skedë të veçantë me cilësimet "kernel/configs/rust.config".
- Skedarët e trajtuar në makropodgjegjet "*.i" janë rinovuar në "*.rsi".
- U ndërpre mbështetja për ndërtimin e komponentëve Rust me nivele optimizimi të ndryshme nga ato të përdorura për kodin në gjuhën C.
- Shtuar një modul fs, që ofron lidhje për punë me sistemet e skedarëve. Propozohet një shembull i një sistemi të thjeshtë skedari të shkruar në gjuhën Rust.
- Shtuar një modul workqueue për punën me radhët sistemike (ofron lidhje mbi strukturat e bërthamës work_struct dhe workqueue_struct).
- ĂshtĂ« vazhduar zhvillimi i modulit kasync me implementimin e metodave tĂ« programimit asinkron (async). ĂshtĂ« shtuar njĂ« shembull funksional nĂ« nivelin e bĂ«rthamĂ«s tĂ« serverit TCP tĂ« shkruar nĂ« Rust.
- ĂshtĂ« shtuar mundĂ«sia pĂ«r tĂ« trajtuar ndĂ«rprerjet nĂ« gjuhĂ«n Rust me ndihmĂ«n e tipazheve [Threaded]Handler dhe tipeve [Threaded]Registration.`
- ĂshtĂ« shtuar makro procedurale «#[vtable]», qĂ« thjeshtĂ«son punĂ«n me tabelat e treguesve tĂ« funksioneve, si struktura file_operations.
- ĂshtĂ« shtuar implementimi i listave tĂ« lidhura dyanshĂ«m «unsafe_list::List».
- ĂshtĂ« shtuar mbĂ«shtetje fillestare pĂ«r RCU (Read-copy-update) dhe tipin Guard pĂ«r tĂ« verifikuar lidhjen e bllokimit me lexim me thread-in aktual.
- ĂshtĂ« shtuar funksioni Task::spawn() pĂ«r tĂ« krijuar dhe nisur automatikisht thread-e tĂ« bĂ«rthamĂ«s. ĂshtĂ« shtuar gjithashtu metoda Task::wake_up().
- ĂshtĂ« shtuar moduli delay, i cili lejon pĂ«rdorimin e vonesave (mbĂ«shtetje mbi msleep()).
Ndryshimet e propozuara japin mundësinë për të përdorur Rust si gjuhë të dytë për zhvillimin e drejtorive dhe moduleve të bërthamës. Mbështetje për Rust paraqitet si një opsion, jo aktiv në mënyrë të paracaktuar dhe nuk e bën Rust një nga varësitë e detyrueshme për ndërtimin e bërthamës. Përdorimi i Rust për zhvillimin e drejtorive do t'i lejojë krijimin me përpjekje minimale të drejtorive të sigurta dhe më cilësore, të cilat janë të çliruara nga probleme si qasja në hapësirën e memories pas liqenit, dereferimi i treguesve null dhe dalja jashtë kufijve të tamponit.
Trajtimi i sigurt i memories garantohet në Rust gjatë kompilimit përmes verifikimit të referencave, ndjekjes së pronësisë së objekteve dhe marrëveshjes së kohëzgjatjes së objekteve (zona e dukshmërisë), si dhe përmes vlerësimit të saktësisë së qasjes në memory gjatë ekzekutimit të kodit. Rust gjithashtu ofron mjete për mbrojtjen nga mbushjet e numrave të plotë, kërkon inicializimin e detyrueshëm të vlerave të variablave përpara përdorimit, trajton më mirë gabimet në bibliotekën standarde, zbaton konceptin e referencave dhe variablave të pazëvendësueshëm (immutable) si standard, dhe ofron tipizim të fortë statik për minimizimin e gabimeve logjike.
Burimi: opennet.ru
