Redaktimi i pestë i patches për bërthamën Linux me mbështetje për gjuhën Rust

Miguel Ojeda, autor i projektit Rust-for-Linux, ofroi pĂ«r shqyrtim pĂ«r zhvilluesit e kernelit Linux variantin e pestĂ« tĂ« komponenteve pĂ«r zhvillimin e drivereve tĂ« pajisjeve nĂ« gjuhĂ«n Rust. MbĂ«shtetje pĂ«r Rust konsiderohet si eksperimentale, por tashmĂ« Ă«shtĂ« pĂ«rfshirĂ« nĂ« degĂ«n linux-next dhe Ă«shtĂ« mjaft e zhvilluar pĂ«r tĂ« filluar punĂ«n nĂ« krijimin e shtresave tĂ« abstraksionit mbi nĂ«n-sistemet e kernelit, si dhe pĂ«r tĂ« shkruar drivera dhe module. Zhvillimi financohet nga kompania Google dhe organizata ISRG (Internet Security Research Group), e cila Ă«shtĂ« krijuesi i projektit Let’s Encrypt dhe kontribuon nĂ« promovimin e HTTPS dhe zhvillimin e teknologjive pĂ«r pĂ«rmirĂ«simin e sigurisĂ« nĂ« internet.

Kujtojme se ndryshimet e propozuara ofrojnë mundësinë e përdorimit të Rust si gjuhë të dytë për zhvillimin e drejtuesve dhe moduleve të bërthamës. Mbështetja për Rust paraqitet si një opsion, i cili nuk aktivizohet nga parazgjedhja dhe nuk çon në përfshirjen e Rust në numrin e varësive të detyrueshme për ndërtimin e bërthamës. Përdorimi i Rust për zhvillimin e drejtuesve do të lejojë krijimin e drejtuesve të sigurt dhe më të kualitetshëm me përpjekje minimale, duke eliminuar probleme si përdorimi i hapësirës së memories pas lirimit të saj, dereferencimi i treguesve null dhe tejkalimi i kufijve të tamponit.

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.

Në variantin e ri të patch-eve, vazhdohet eliminimi i vërejtjeve të shprehura gjatë diskutimit të redaksive të para, të dyta, të treta dhe të katërt. Në versionin e ri:

  • NĂ« sistemin e integrimit tĂ« vazhdueshĂ«m tĂ« bazuar nĂ« botin 0DAY/LKP tĂ« mbĂ«shtetur nga Intel, Ă«shtĂ« shtuar kontrolli i komponenteve pĂ«r mbĂ«shtetje tĂ« Rust dhe ka filluar publikimi i raporteve pĂ«r testimin. Po pĂ«rgatitet integrimi i mbĂ«shtetjes pĂ«r Rust nĂ« sistemin e testimit automatizuar KernelCI. Testimi nĂ« bazĂ« tĂ« GitHub CI Ă«shtĂ« transferuar nĂ« pĂ«rdorimin e konteinerĂ«ve.
  • Modulet e kernelit nĂ« Rust janĂ« çliruar nga nevoja pĂ«r tĂ« pĂ«rcaktuar atributet crate “#![no_std]” dhe “#![feature(
)]”.
  • ËshtĂ« shtuar mbĂ«shtetje pĂ«r qĂ«llimet e ndĂ«rtimit tĂ« vetme (.o, .s, .ll dhe .i).
  • NĂ« rekomandimet pĂ«r formatimin e kodit janĂ« pĂ«rcaktuar rregullat nĂ« lidhje me ndarjen e komenteve (“//”) dhe dokumentimin e kodit (“///”).
  • Skedari is_rust_module.sh Ă«shtĂ« rishikuar.
  • ËshtĂ« shtuar mbĂ«shtetje pĂ«r primitive sincronizimi statike (variables tĂ« pĂ«rgjithshme globale), tĂ« bazuara nĂ« implementimin e “CONFIG_CONSTRUCTORS”.
  • Menaxhimi i bllokimeve Ă«shtĂ« thjeshtuar: Guard dhe GuardMut janĂ« tĂ« bashkuara dhe njĂ« tip i parametrizuar.
  • ËshtĂ« ofruar mundĂ«sia pĂ«r pĂ«rcaktimin e parametrave tĂ« tjerĂ« gjatĂ« regjistrimit tĂ« pajisjeve.
  • ËshtĂ« shtuar abstraksioni “RwSemaphore”, e cila vepron si njĂ« mbĂ«shtetje mbi strukturĂ«n C rw_semaphore.
  • PĂ«r pĂ«rdorimin e mmap Ă«shtĂ« shtuar njĂ« modul i ri mm dhe abstraksioni VMA (mbĂ«shtetje mbi strukturĂ«n vm_area_struct).
  • Driveri GPIO PL061 Ă«shtĂ« transferuar pĂ«r tĂ« pĂ«rdorur makron “dev_*!”.
  • ËshtĂ« realizuar njĂ« pastrim i pĂ«rgjithshĂ«m i kodit.

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