Edicioni i katërt i arnimeve për kernelin Linux me mbështetje për gjuhën Rust

Miguel Ojeda, autor i projektit Rust-for-Linux, propozoi një version të katërt të komponentëve për zhvillimin e drejtuesve të pajisjeve në gjuhën Rust për t'u marrë në konsideratë nga zhvilluesit e kernelit Linux. Mbështetja e Rust konsiderohet eksperimentale, por tashmë është rënë dakord për përfshirje në degën e linux-next dhe është mjaft e pjekur për të filluar punën për krijimin e shtresave abstraksioni mbi nënsistemet e kernelit, si dhe shkrimin e drejtuesve dhe moduleve. Zhvillimi financohet nga Google dhe ISRG (Internet Security Research Group), i cili është themeluesi i projektit Let's Encrypt dhe promovon HTTPS dhe zhvillimin e teknologjive për të përmirësuar sigurinë në internet.

Kujtojmë se ndryshimet e propozuara bëjnë të mundur përdorimin e Rust si gjuhë të dytë për zhvillimin e drejtuesve dhe moduleve të kernelit. Mbështetja e Rust paraqitet si një opsion që nuk është aktivizuar si parazgjedhje dhe nuk rezulton që Rust të përfshihet si një varësi e nevojshme ndërtimi për kernelin. Përdorimi i Rust për zhvillimin e drejtuesve do t'ju lejojë të krijoni drejtues më të sigurt dhe më të mirë me përpjekje minimale, pa probleme të tilla si qasja në kujtesë pas çlirimit, çreferencat e treguesit null dhe tejkalimet e buferit.

Siguria e memories sigurohet në Rust në kohën e përpilimit përmes kontrollit të referencës, mbajtjes së gjurmëve të pronësisë së objektit dhe jetëgjatësisë së objektit (fushëveprimit), si dhe përmes vlerësimit të korrektësisë së aksesit në kujtesë gjatë ekzekutimit të kodit. Rust siguron gjithashtu mbrojtje kundër tejmbushjeve të 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ë pandryshueshme si parazgjedhje, ofron shtypje të fortë statike për të minimizuar gabimet logjike.

Versioni i ri i arnimeve vazhdon të eliminojë komentet e bëra gjatë diskutimit të botimit të parë, të dytë dhe të tretë të arnimeve. Në versionin e ri:

  • Është bërë kalimi në përdorimin e lëshimit të qëndrueshëm të Rust 1.58.0 si përpilues referencë. Ndër ndryshimet e nevojshme për projektin, të cilat nuk janë përfshirë ende në paketën kryesore të veglave Rust, flamuri "-Zsymbol-mangling-version=v0" (i pritshëm në Rust 1.59.0) dhe modaliteti "maybe_uninit_extra" (pritet në Rust 1.60.0 .XNUMX) shënohen. .
  • Shtoi kontrolle automatike për disponueshmërinë e mjeteve të përshtatshme Rust dhe zgjeroi aftësinë për të testuar mbështetjen e Rust në sistem.
  • Janë propozuar abstraksione të reja për të hyrë në tabelat identifikuese të pajisjes ("IdArray" dhe "IdTable") nga kodi Rust.
  • Shtresa të shtuara për të hyrë në funksionet e lidhura me kohëmatësin (korniza e orës).
  • Drejtuesit e platformës tani përcaktohen përmes zbatimeve të tipareve.
  • Një makro e re është shtuar për të thjeshtuar regjistrimin e drejtuesve të platformës dhe është propozuar një model i ri gjenerik i drejtuesve.
  • Makro të shtuara për strukturat "dev_*".
  • U shtuan metodat "{read,write}*_relaxed" për llojin IoMem .
  • U hoq veçoria FileOpener për të thjeshtuar operacionet e skedarëve.
  • Parametri "ThisModule" është shtuar në argumentet e kaluara gjatë regjistrimit të një drejtuesi.
  • Propozohet një shabllon standard për krijimin e moduleve të kernelit në gjuhën Rust.

Burimi: opennet.ru

Shto një koment