Versioni i nëntë i patch-eve për bërthamën Linux me mbështetje për gjuhën Rust

Miguel Ojeda, autori i projektit Rust-for-Linux, propozoi pĂ«r shqyrtim nga zhvilluesit e bĂ«rthames Linux lĂ«shimin e komponentĂ«ve v8 pĂ«r zhvillimin e drejtorive tĂ« pajisjeve nĂ« gjuhĂ«n Rust. Kjo Ă«shtĂ« njĂ« redaktim i ri i patch-eve duke marrĂ« parasysh versionin e parĂ«, i publikuar pa numĂ«r versioni. MbĂ«shtetje pĂ«r Rust shqyrtohet si eksperimentale, por tashmĂ« Ă«shtĂ« e 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 nĂ« krijimin e niveleve tĂ« abstraksionit mbi nĂ«n-sistemet e bĂ«rthames, si dhe pĂ«r tĂ« shkruar drejtoritĂ« dhe module. Zhvillimi financohet nga kompania Google dhe organizata ISRG (Internet Security Research Group), e cila Ă«shtĂ« themeluese e projektit Let’s Encrypt dhe promovon HTTPS dhe zhvillimin e teknologjisĂ« pĂ«r tĂ« rritur sigurinĂ« e internetit.

Në këtë version të ri:

  • Mjetet dhe varianti i bibliotekĂ«s alloc, i liruar nga gjenerimet e mundshme tĂ« gjendjes «panic» kur ndodhin gabime, janĂ« pĂ«rditĂ«suar pĂ«r publikimin Rust 1.62. Krahasuar me versionin e mĂ«parshĂ«m tĂ« pĂ«rdorur nĂ« mjete Rust, Ă«shtĂ« stabilizuar mbĂ«shtetje pĂ«r funksionalitetin const_fn_trait_bound, i pĂ«rdorur nĂ« patch-et e bĂ«rthames.
  • Kodi i lidhjeve Ă«shtĂ« ndarĂ« nĂ« njĂ« paketĂ« tĂ« veçantĂ« crate-nĂ« «bindings», qĂ« thjeshton pĂ«rmirĂ«simin nĂ« rast tĂ« ndryshimeve vetĂ«m nĂ« paketĂ«n kryesore «kernel».
  • Zbatimi i makros «concat_idents!» Ă«shtĂ« rishkruar nĂ« formĂ«n e njĂ« makro proceduriale, e papĂ«rkufizuar nĂ« funkcionalitetin concat_idents dhe lejon pĂ«rdorimin e referencave ndaj variablave lokalĂ«.
  • Makro «static_assert!» Ă«shtĂ« rishkruar, duke lejuar pĂ«rdorimin e «core::assert!()» nĂ« çdo kontekst nĂ« vend tĂ« konstantave.
  • Makro «build_error!» Ă«shtĂ« adaptuar pĂ«r funksionimin kur vendoset pĂ«r modulet nĂ« mĂ«nyrĂ«n «RUST_BUILD_ASSERT_{WARN,ALLOW}».
  • ËshtĂ« shtuar njĂ« skedar i veçantĂ« me cilĂ«sime «kernel/configs/rust.config».
  • SkedarĂ«t «*.i» tĂ« trajtuar nĂ« makropĂ«rdorime janĂ« rinovuar nĂ« «*.rsi».
  • ËshtĂ« ndalur mbĂ«shtetje 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.
  • ËshtĂ« shtuar moduli fs, i cili ofron lidhje pĂ«r punĂ« me sistemet e skedarĂ«ve. ËshtĂ« propozuar njĂ« shembull i njĂ« sistemi tĂ« thjeshtĂ« skedarĂ«sh tĂ« shkruar nĂ« gjuhĂ«n Rust.
  • ËshtĂ« shtuar moduli workqueue pĂ«r punĂ« me radhĂ«t sistemore (ofron lidhje mbi strukturat e bĂ«rthamĂ«s work_struct dhe workqueue_struct).
  • ËshtĂ« vazhduar zhvillimi i modulit kasync me zbatimin e metodave tĂ« programimit asinkron (async). ËshtĂ« shtuar njĂ« shembull i njĂ« serveri TCP funksional nĂ« nivelin e bĂ«rthames, tĂ« shkruar nĂ« Rust.
  • ËshtĂ« shtuar mundĂ«sia e trajtimit tĂ« ndĂ«rprerjeve nĂ« gjuhĂ«n Rust nĂ«pĂ«rmjet tipazheve [Threaded]Handler dhe llojeve [Threaded]Registration.
  • ËshtĂ« shtuar makro proceduriale «#[vtable]», e cila thjeshton punĂ«n me tabelat e treguesve nĂ« funksione, siç Ă«shtĂ« struktura file_operations.
  • ËshtĂ« shtuar zbatimi i listave tĂ« lidhura dyanshme «unsafe_list::List».
  • ËshtĂ« shtuar mbĂ«shtetje fillestare pĂ«r RCU (Read-copy-update) dhe tipin Guard pĂ«r tĂ« kontrolluar lidhjen e bllokimit pĂ«r leximin nĂ« rrjedhĂ«n aktuale.
  • ËshtĂ« shtuar funksioni Task::spawn() pĂ«r krijimin dhe fillimin automatik tĂ« rrjedhave tĂ« bĂ«rthames. ËshtĂ« shtuar gjithashtu metoda Task::wake_up().
  • ËshtĂ« shtuar moduli delay, qĂ« lejon pĂ«rdorimin e vonesave (mbĂ«shtetje mbi msleep()).

Ndryshimet e propozuara ofrojnë mundësinë për të përdorur Rust si gjuhë të dytë për zhvillimin e drejtpërdrejtësve dhe moduleve të kernel-it. Mbështetje për Rust prezantohet si një opsion, i cili nuk është aktiv nga e drejta dhe nuk çon në përfshirjen e Rust-it në listën e varësive të detyrueshme për ndërtim të kernel-it. Përdorimi i Rust për zhvillimin e drejtpërdrejtësve do të lejojë krijimin e drejtpërdrejtësve më të sigurt dhe cilësorë me përpjekje minimale, duke eliminuar probleme si aksesimi i hapësirës së memories pas lirimit të saj, dereferencimi i treguesve null dhe dalja përtej kufijve të buffer-it.

Funksionaliteti i sigurt i punës me kujtesën sigurohet në Rust gjatë kompilimit përmes verifikimit të referencave, ndjekjes së pronësisë së objekteve dhe llogaritjes së kohëzgjatjes së jetës së objekteve (fusha e dukshmërisë), si dhe përmes vlerësimit të saktësisë së aksesit në memorie gjatë ekzekutimit të kodit. Rust ofron gjithashtu mjete për mbrojtjen nga tejkalimet e numrave të tërë, kërkon inicializimin e detyrueshëm të vlerave të variablave para përdorimit, trajton më mirë gabimet në bibliotekën standarde, zbaton konceptin e referencave dhe variablave të pandryshueshëm (immutable) si parazgjedhje, dhe ofron një tipizim statik të fortë për të minimizuar gabimet logjike.

Burimi: opennet.ru

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