Kornizë për shk writingimin e drivereve të siguruara për bërthamën Linux në gjuhën Rust

Josh Triplett, që punon në kompaninë Intel dhe është anëtar i komitetit që mbikëqyr zhvillimin e Crates.io, në fjalimin e tij në konferencën Open Source Technology Summit prezentoi grupin e punës, i cili ka si qëllim të çojë gjuhën Rust në një nivel të barabartë me gjuhën C në fushën e programimit sistemor.

NĂ« grupin e punĂ«s, i cili Ă«shtĂ« nĂ« procesin e krijimit, zhvilluesit e Rust sĂ« bashku me inxhinierĂ«t nga Intel do tĂ« pĂ«rgatisin specifikime qĂ« pĂ«rcaktojnĂ« funksionalitetin qĂ« duhet tĂ« realizohet nĂ« Rust pĂ«r programimin sistemor. Programimi sistemor shpesh kĂ«rkon manipulime tĂ« nivelit tĂ« ulĂ«t, siç janĂ« ekzekutimi i instrukcioneve privilegjuar tĂ« procesorit dhe marrja e informacionit tĂ« detajuar mbi gjendjen e procesorit. Nga mundĂ«sitĂ« qĂ« janĂ« nĂ« zhvillim pĂ«r Rust, pĂ«rfshihen mbĂ«shtetje pĂ«r struktura pa emĂ«r, unione (union), pĂ«rfshirje ndihmuese (makro “asm!”) dhe format numrash me pikĂ« float BFLOAT16.

Josh beson se e ardhmja e programimit sistemor i takon Rust, ndërsa gjuha C në kushtet moderne pretendon për një vend që në vitet e kaluara e mbante Assembleri. Rust
jo vetëm që i çliron zhvilluesit nga problemet e zakonshme të gjuhës C që shfaqen nga puna e nivelit të ulët me memorien, por gjithashtu ofron mundësinë e aplikimit gjatë zhvillimit të paradigmat moderne të programimit.

Gjatë diskutime i fjalës
fjalës së Josh-it, u shpreh ideja e shtimit në bërthamën Linux të mundësisë për zhvillimin e drejtorëve në gjuhën Rust, e cila do të lejojë krijimin e drejtorëve të sigurtë dhe më cilësorë me një përpjekje minimale, të liruar nga probleme të tilla si qasja në hapësirën e memories pas çlirimit të saj, dereferencimi i treguesve null dhe dalja përtej kufijve të buffer-it.

Greg Kroah-Hartman, i cili është përgjegjës për mbështetje të degës stabile të bërthamës Linux, shprehu gatishmërinë për të shtuar një kornizë për zhvillimin e drejtorëve në gjuhën Rust në bërthamë, nëse ajo do të kishte avantazhe reale krahasuar me C, për shembull do të ofronte mbështetje të sigurt mbi API-në e bërthamës. Gjithashtu, Greg e sheh këtë kornizë vetëm si një opsion, i cili nuk është aktiv automatikisht, në mënyrë që të mos përfshijë Rust në numrin e varësive ndihmëse të bërthamës.

Ajo doli se disa ekipe tashmë po punojnë në këtë drejtim. Për shembull, zhvilluesit nga "Fish in a Barrel" përgatitur toolset për shkruarjen e moduleve të ngarkueshme për bllokun Linux në gjuhën Rust, duke përdorur për të rritur mbrojtjen një grup shtresash abstrakte mbi ndërfaqet dhe strukturat e bllokut. Shtresat gjenerohen automatikisht në bazë të skedave ekzistuese të bllokut me ndihmën e utilitarit bindgen. Për ndërtimin e shtresave përdoret Clang. Modulët e ndërtuar, përveç shtresave, përdorin paketën staticlib.

Paralelisht po zhvillohet një projekt tjetër, i fokusuar në zhvillimin e drejtorëve për sisteme të integruara dhe pajisje të internetit të gjërave, i cili gjithashtu përdor bindgen për të gjeneruar shtresa mbi bazën e skedareve të titujve të bërthamës. Korniza lejon arritjen e rritjes të sigurisë së drejtorëve pa ndryshuar bërthamën - përveç ndërtimit të niveleve të reja izolimi në bërthamë për drejtorët, propozohen zgjidhje për të bllokuar problemet në fazën e kompilimit, duke përdorur një gjuhë më të sigurt si Rust. Parashikohet se ky qasje mund të jetë e kërkuar nga prodhuesit e pajisjeve, që zhvillojnë drejtorë pronësorë nxitimthi pa kryer vlerësimin e duhur.

Nuk është realizuar ende e gjithë funksionaliteti i parashikuar, por korniza tashmë është ekzaktësisht e përshtatshme për përdorim dhe është përdorur për të shkruar një drejtor aktiv për kontrolluesin e Ethernet LAN9512 USB, i ofruar në pllakën Raspberry Pi 3. Si zgjidhje referuese gjatë shkruarjes së drejtorit në Rust, është përdorur drejtor ekzistues smsc95xx, shkruar në gjuhën C. Raportohet se madhësia e modulit dhe kostot e komponentëve runtime gjatë zhvillimit të drejtorit në Rust janë të papërfillshme, duke e bërë të mundur përdorimin e kornizës për pajisje me burime të kufizuara.

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