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

Miguel Ojeda, autori i projektit Rust-for-Linux, propozoi një version të pestë 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ë përfshirë në degën e linux-next dhe është zhvilluar mjaftueshëm 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ë, të tretë dhe të katërt të arnimeve. Në versionin e ri:

  • Testimi i komponentëve për mbështetjen e Rust është shtuar në sistemin e integrimit të vazhdueshëm bazuar në robotin 0DAY/LKP të mbështetur nga Intel dhe ka filluar publikimi i raporteve të testimit. Ne po përgatitemi të integrojmë mbështetjen e Rust në sistemin e automatizuar të testimit KernelCI. Testimi i bazuar në GitHub CI është transferuar në përdorimin e kontejnerëve.
  • Modulet e kernelit Rust çlirohen nga nevoja për të përcaktuar atributet e arkës “#![no_std]” dhe “#![feature(…)]”.
  • Mbështetje e shtuar për objektivat e montimit të vetëm (.o, .s, .ll dhe .i).
  • Udhëzimet e kodit përcaktojnë rregullat për ndarjen e komenteve (“//”) dhe dokumentimin e kodit (“///”).
  • Skripti is_rust_module.sh është ripunuar.
  • Mbështetje e shtuar për primitivet e sinkronizimit statik (ndryshore të përbashkët globale) bazuar në zbatimin "CONFIG_CONSTRUCTORS".
  • Menaxhimi i bllokimit është thjeshtuar: Guard dhe GuardMut janë të kombinuara dhe një lloj i parametrizuar.
  • Është e mundur të përcaktohen parametra shtesë gjatë regjistrimit të pajisjeve.
  • U shtua abstraksioni "RwSemaphore", i cili vepron si një mbështjellës mbi strukturën rw_semaphore C.
  • Për të përdorur mmap, janë shtuar një modul i ri mm dhe një abstraksion VMA (një mbështjellës mbi strukturën vm_area_struct).
  • Shoferi GPIO PL061 është kaluar në përdorimin e makro "dev_*!".
  • U krye një pastrim i përgjithshëm i kodit.

Burimi: opennet.ru

Shto një koment