Versioni i tetë i patch-eve për kernelin Linux me mbështetje për gjuhën Rust

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

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster