Sëdyta editim i patch-ëve për bërthamën Linux me mbështetje për gjuhën Rust

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

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