Miguel Ojeda, autori i projektit Rust-for-Linux, propozoi pĂ«r shqyrtim nga zhvilluesit e kernelit Linux variantin e pestĂ« tĂ« komponenteve pĂ«r zhvillimin e drejtorive tĂ« pajisjeve nĂ« gjuhĂ«n Rust. MbĂ«shtetje pĂ«r Rust shihet si eksperimentale, por tashmĂ« Ă«shtĂ« pĂ«rfshirĂ« nĂ« degĂ«n linux-next dhe Ă«shtĂ« mjaft e zhvilluar pĂ«r tĂ« filluar punĂ«n pĂ«r krijimin e shtresave tĂ« abstrahimit mbi nĂ«n-sistemet e kernelit, si dhe pĂ«r tĂ« shkruar drejtues dhe module. Zhvillimi financohet nga kompania Google dhe organizata ISRG (Internet Security Research Group), e cila Ă«shtĂ« themeluesja e projektit Letâs Encrypt dhe ndihmon nĂ« promovimin e HTTPS dhe zhvillimin e teknologjive pĂ«r pĂ«rmirĂ«simin e sigurisĂ« nĂ« internet.
Kujtojmë se ndryshimet e propozuara japin mundësinë për të përdorur Rust si gjuhën e dytë për zhvillimin e drejtorive dhe moduleve të bërthamës. Mbështetja për Rust paraqitet si një opsion, i cili nuk është aktiv me parazgjedhje dhe nuk çon në përfshirjen e Rust në listën e varësive të detyrueshme për ndërtimin e bërthamës. Përdorimi i Rust për zhvillimin e drejtorive do të lejojë krijimin e drejtorive të sigurta dhe më të kualitetshme me minimumin e mundimeve, duke eliminuar probleme si manipulimi me hapësirën e memories pas lirimit të saj, dereferencimi i pikave null dhe tejkalimi i 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.
Në variantin e ri të patch-ëve, vazhdohet eliminimi i vërejtjeve të shtruara gjatë diskutimit të redaktimeve të para, të dyta, të treta dhe të katërta. 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 Rust dhe kanë filluar publikimet e raporteve të testimit. Po përgatitet integrimi i mbështetjes për Rust në sistemin e testimit automatizuar KernelCI. Testimi i bazuar në GitHub CI është kaluar në përdorimin e konteinerëve.
- Modulet e kernelit nĂ« Rust janĂ« liruar nga nevoja pĂ«r tĂ« pĂ«rcaktuar atributet e crate-it "#![no_std]" dhe "#![feature(âŠ)]".
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r objektet 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 ("///").
- Skirpti is_rust_module.sh është rishikuar.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r primitive sinkronizimi statike (variabla tĂ« pĂ«rbashkĂ«ta globale) tĂ« bazuara nĂ« realizimin e "CONFIG_CONSTRUCTORS".
- Menaxhimi i bllokimeve është thjeshtuar: Guard dhe GuardMut janë bashkuar në një tip të parametrizuar.
- I është dhënë mundësia e përcaktimit të parametrave të tjerë gjatë regjistrimit të pajisjeve.
- ĂshtĂ« shtuar abstraksioni "RwSemaphore", qĂ« vepron si 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).
- Drejtuesi GPIO PL061 është kaluar në përdorimin e makros "dev_*!".
- ĂshtĂ« kryer njĂ« pastrim i pĂ«rgjithshĂ«m i kodit.
Burimi: opennet.ru
