Miguel Ojeda, autori i projektit Rust-for-Linux, propozi pĂ«r shqyrtim nga zhvilluesit e bĂ«rthamĂ«s Linux variantin e katĂ«rt tĂ« komponenteve pĂ«r zhvillimin e driverĂ«ve tĂ« pajisjeve nĂ« gjuhĂ«n Rust. MbĂ«shtetja pĂ«r Rust shihet si eksperimentale, por tashmĂ« Ă«shtĂ« miratuar pĂ«r t'u pĂ«rfshirĂ« nĂ« degĂ«n linux-next dhe Ă«shtĂ« mjaft e zhvilluar pĂ«r tĂ« filluar punĂ«n mbi krijimin e shtresave tĂ« abstraksionit mbi nĂ«n-sistemet e bĂ«rthamĂ«s, si dhe pĂ«r tĂ« shkruar driverĂ« dhe module. 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 rritjen 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-eve vazhdohet eliminimi i vërejtjeve të shprehura gjatë diskutimit të redaksive të para, të dyta dhe të treta të patch-eve. Në versionin e ri:
- ĂshtĂ« realizuar kalimi nĂ« pĂ«rdorimin e si kompilator referencĂ« versionin e stabilizuar Rust 1.58.0. Nga ndryshimet e nevojshme pĂ«r projektin, tĂ« cilat ende nuk janĂ« pĂ«rfshirĂ« nĂ« grupin kryesor tĂ« mjetĂ«ve Rust, pĂ«rmenden flagu «-Zsymbol-mangling-version=v0» (pritet nĂ« Rust 1.59.0) dhe moda «maybe_uninit_extra» (pritet nĂ« Rust 1.60.0).
- Shtuar verifikimet automatike për praninë e mjeteve të përshtatshme Rust dhe janë zgjeruar mundësitë për testimin e mbështetjes Rust në sistem.
- Propozuar abstraksione të reja për qasje nga kodi në gjuhën Rust në tabelat e identifikimit të pajisjeve («IdArray» dhe «IdTable»).
- Shtuar shtresa për t'u drejtuar funksioneve të lidhura me orën (këndvishte orare).
- Drivert për platformat tani janë përcaktuar përmes realizimit të tipazheve.
- Shtuar një makro të re për të thjeshtuar regjistrimin e driverëve të platformës, si dhe një shablon të ri për driverin tipik.
- Shtuar makrot për strukturat «dev_*».
- Shtuar metodat «{read,write}*_relaxed» për llojin IoMem.
- Larguar vetia FileOpener për të thjeshtuar operacionet me skedarë.
- Në numrin e argumenteve të kaluara gjatë regjistrimit të driverit është shtuar parameteri «ThisModule».
- Propozuar një shablon tipik për krijimin e moduleve të bërthamës në gjuhën Rust.
Burimi: opennet.ru
