Miguel Ojeda, autori i projektit Rust-for-Linux, ka propozuar për shqyrtim nga zhvilluesit e kernelit Linux një version të përmirësuar të komponenteve për zhvillimin e drejtorive të pajisjeve në gjuhën Rust. Mbështetja për Rust është i konsideruar si eksperimentale, por tashmë është miratuar për t'u përfshirë në degën linux-next. Në versionin e ri janë eliminuar vërejtjet e shprehura gjatë diskutimit të versionit të parë të patches. Linus Torvalds ka bërë tashmë një ndërhyrje në diskutim dhe ka propozuar një ndryshim në logjikën e trajtimit të disa operacioneve bitore.
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.
Ndryshimet më të dukshme në versionin e ri të patches:
- Kodi pĂ«r shpĂ«rndarjen e memories Ă«shtĂ« çliruar nga gjenerimet e mundshme tĂ« gjendjes âpanicâ nĂ« rast tĂ« gabimeve si mungesa e memories. NĂ« pĂ«rbĂ«rje Ă«shtĂ« pĂ«rfshirĂ« njĂ« variant i bibliotekĂ«s Rust alloc, nĂ« tĂ« cilĂ«n Ă«shtĂ« ri-shkruar kodi pĂ«r trajtimin e dĂ«shtimeve, por qĂ«llimi pĂ«rfundimtar Ă«shtĂ« transferimi nĂ« versionin kryesor tĂ« alloc tĂ« tĂ« gjitha mundĂ«sive qĂ« nevojiten pĂ«r kernelin (ndryshimet janĂ« pĂ«rgatitur dhe dĂ«rguar nĂ« pĂ«rbĂ«rjen e bibliotekĂ«s standarde Rust).
- Në vend të mbledhjeve të natës për krijimin e kernelit me mbështetje Rust tani mund të përdoren versionet beta dhe lëshimet stabile të kompiluesit rustc. Aktualisht, kompiluesi referencë është rustc 1.54-beta1, por pas lirimit të versionit 1.54 në fund të muajit, do të ruhet pikërisht ai si kompilues referencë.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r shkruan testesh duke pĂ«rdorur atributin standard pĂ«r Rust â#[test]â dhe mundĂ«sia e aplikimit tĂ« doctests pĂ«r dokumentimin e testeve.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r arkitekturĂ«n ARM32 dhe RISCV pĂ«rveç x86_64 dhe ARM64 tĂ« mbĂ«shtetur mĂ« parĂ«.
- Janë përmirësuar realizimet e GCC Rust (frontend-i GCC për Rust) dhe rustc_codegen_gcc (backend-i rustc për GCC), i cili tani kalon të gjitha testet bazike.
- ĂshtĂ« propozuar njĂ« nivel mĂ« i lartĂ« abstraksioni pĂ«r tĂ« pĂ«rdorur mekanizmat e kernelit nĂ« programet nĂ« gjuhĂ«n Rust, tĂ« shkruara nĂ« gjuhĂ«n C, si pemĂ«t e kuqe-zemer, objektet me numĂ«rim referencash, krijimi i descriptorĂ«ve tĂ« skedarĂ«ve, detyrat, skedarĂ«t dhe vektorĂ«t e hyrjeve/daljeve.
- NĂ« komponentĂ«t pĂ«r zhvillimin e drejtorive Ă«shtĂ« pĂ«rmirĂ«suar mbĂ«shtetja e modulit âfile_operationsâ, makros âmodule!â, regjistrimi i makrove dhe drejtoritĂ« rudimentarĂ« (probe dhe remove).
- Në Binder është implementuar mbështetje për transferimin e descriptorëve të skedarëve dhe hooks LSM.
- ĂshtĂ« propozuar njĂ« shembull mĂ« funksional i njĂ« drejtorie nĂ« Rust â bcm2835-rng pĂ«r gjeneratĂ«n e numrave tĂ« rastĂ«sishĂ«m nga pajisjet Raspberry Pi.
Përveç kësaj, përmenden projektet e disa kompanive lidhur me përdorimin e Rust në kernel:
- Kompanija Microsoft shprehu interes për të marrë pjesë në punën për integrimin e mbështetjes Rust në kernelin Linux dhe është e gatshme që në muajt e ardhshëm të ofrojë implementimet e drejtorive për Hyper-V në Rust.
- Kompanija ARM po punon për përmirësimin e mbështetjes Rust për sistemet e bazuara në procesorë ARM. Projekti Rust tashmë ka marrë propozime për ndryshime, duke e kaluar sistemet 64-bit ARM në listën e platformave të mbështetjes së nivelit të parë (Tier-1).
- Kompanija Google ofron mbështetje të drejtpërdrejtë për projektin Rust for Linux, po zhvillon një realizim të ri të mekanizmit të bashkëveprimit ndër-procesor Binder në Rust dhe po shqyrton mundësinë e ri-shkruar në Rust drejtoritë e ndryshme. Përmes ISRG (Grupi i Kërkimeve të Sigurisë në Internet), kompania Google siguroi financimin e punës për integrimin në kernelin Linux të mbështetjes Rust.
- Kompanija IBM ka realizuar mbështetje për Rust në kernel për sistemet PowerPC.
- Laboratori LSE (Laboratori i Kërkimeve në Sisteme) ka zhvilluar një drejtorie SPI në Rust.
Burimi: opennet.ru
