Edicioni i dytë 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ë përditësuar 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 linux-next. Versioni i ri eliminon komentet e bëra gjatë diskutimit të versionit të parë të arnimeve. Linus Torvalds tashmë i është bashkuar diskutimit dhe ka propozuar ndryshimin e logjikës për përpunimin e disa operacioneve bit.

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.

Ndryshimet më të dukshme në versionin e ri të arnimeve:

  • Kodi i ndarjes së memories çlirohet nga gjenerimi i mundshëm i një gjendje "paniku" kur ndodhin gabime të tilla si mungesa e memories. Përfshihet një variant i bibliotekës Rust alloc, i cili ripunon kodin për të trajtuar dështimet, por qëllimi përfundimtar është të transferojë të gjitha veçoritë e nevojshme për kernelin në edicionin kryesor të alloc (ndryshimet tashmë janë përgatitur dhe transferuar në standard Biblioteka Rust).
  • Në vend të ndërtimeve të natës, tani mund të përdorni versionet beta dhe lëshimet e qëndrueshme të përpiluesit rustc për të përpiluar një kernel me mbështetjen e Rust. Aktualisht, rustc 1.54-beta1 përdoret si përpilues i referencës, por pasi lëshimi 1.54 të dalë në fund të muajit, ai do të mbështetet si përpilues referencë.
  • Mbështetje e shtuar për shkrimin e testeve duke përdorur atributin standard "#[test]" për Rust dhe aftësinë për të përdorur doctests për të dokumentuar testet.
  • Mbështetje e shtuar për arkitekturat ARM32 dhe RISCV përveç x86_64 dhe ARM64 të mbështetur më parë.
  • Implementime të përmirësuara të GCC Rust (GCC frontend për Rust) dhe rustc_codegen_gcc (rustc backend për GCC), i cili tani kalon të gjitha testet bazë.
  • Një nivel i ri abstraksioni propozohet për përdorim në programet Rust të mekanizmave kernel të shkruar në C, të tilla si pemët kuqezi, objektet e numëruara me referencë, krijimi i përshkruesve të skedarëve, detyrat, skedarët dhe vektorët I/O.
  • Komponentët e zhvillimit të drejtuesve kanë mbështetje të përmirësuar për modulin file_operations, modulin! makro, regjistrimin makro dhe drejtuesit rudimentar (hetoni dhe hiqni).
  • Binder tani mbështet kalimin e përshkruesve të skedarëve dhe grepave LSM.
  • Propozohet një shembull më funksional i një drejtuesi Rust - bcm2835-rng për gjeneratorin e numrave të rastësishëm të harduerit të bordeve Raspberry Pi.

Për më tepër, përmenden disa projekte të kompanive në lidhje me përdorimin e Rust në kernel:

  • Microsoft ka shprehur interes për të marrë pjesë në punën për të integruar mbështetjen e Rust në kernelin Linux dhe është gati të ofrojë implementime të drejtuesve për Hyper-V në Rust në muajt e ardhshëm.
  • ARM po punon për të përmirësuar mbështetjen Rust për sistemet e bazuara në ARM. Projekti Rust ka propozuar tashmë ndryshime që do t'i bënin sistemet ARM 64-bitësh një platformë të nivelit 1.
  • Google ofron drejtpërdrejt mbështetje për projektin Rust for Linux, po zhvillon një zbatim të ri të mekanizmit të komunikimit ndërprocesor Binder në Rust dhe po shqyrton mundësinë e ripërpunimit të drejtuesve të ndryshëm në Rust. Nëpërmjet ISRG (Internet Security Research Group), Google siguroi fonde për punën për të integruar mbështetjen e Rust në kernelin Linux.
  • IBM ka implementuar mbështetjen e kernelit për Rust për sistemet PowerPC.
  • Laboratori LSE (Systems Research Laboratory) ka zhvilluar një drejtues SPI në Rust.

Burimi: opennet.ru

Shto një koment