Framework foar it skriuwen fan feilige bestjoerders foar de Linux kernel yn Rust

Josh Triplett, dy't wurket by Intel en is yn 'e kommisje dy't tafersjoch hâldt op' e ûntwikkeling fan Crates.io, sprekt op 'e Open Source Technology Summit yntrodusearre in wurkgroep dy't as doel hat om de Rusttaal op it mêd fan systeemprogrammearring op pariteit te bringen mei de C-taal.

Yn in wurkgroep dy't yn it proses is om te meitsjen, sille Rust-ûntwikkelders, tegearre mei yngenieurs fan Intel, spesifikaasjes tariede dy't de funksjonaliteit definiearje dy't yn Rust moatte wurde ymplementearre foar systeemprogrammearring. Systeemprogrammearring fereasket faak manipulaasje op leech nivo, lykas it útfieren fan befoarrjochte prosessorynstruksjes en it krijen fan detaillearre ynformaasje oer de steat fan 'e prosessor. Fan 'e ferlykbere funksjes dy't al ûntwikkele binne foar Rust, wurdt stipe foar net neamde struktueren, fakbûnen, assemblage-taalynfoegingen (de "asm!"-makro) en it BFLOAT16 driuwende puntnûmerformaat opmurken.

Josh is fan betinken dat de takomst fan systeemprogrammearring heart ta Rust, en de C-taal yn moderne realiteiten beweart it plak dat yn ferline jierren waard beset troch Assembly. Rust
net allinich ûntlêst ûntwikkelders fan 'e problemen dy't yn' e C-taal binne dy't ûntsteane troch wurk op leech nivo mei ûnthâld, mar biedt ek de kâns om it te brûken yn 'e ûntwikkeling fan moderne programmearringsparadigma's.

Tidens diskusjes optredens
Josh kaam mei it idee om de mooglikheid ta te foegjen om sjauffeurs yn 'e Linux-kernel te ûntwikkeljen yn' e Rust-taal, wat it mooglik meitsje soe om feiliger en bettere sjauffeurs te meitsjen mei minimale ynspanning, frij fan problemen lykas ûnthâld tagong nei it befrijen, null pointer dereferences en buffer oerrin.

Greg Kroah-Hartman, dy't ferantwurdlik is foar it behâld fan 'e stabile tûke fan' e Linux-kernel, spruts syn ree út om in ramt ta te foegjen foar it ûntwikkeljen fan stjoerprogramma's yn 'e Rust-taal oan' e kernel as it echte foardielen hat boppe C, bygelyks, it sil feilich leverje bindingen oer Kernel API. Derneist beskôget Greg dit ramt allinich as in opsje, net standert aktyf, om Rust net op te nimmen as in build-ôfhinklikens fan 'e kernel.

It die bliken dat ferskate teams al yn dizze rjochting wurkje. Bygelyks, ûntwikkelders fan it bedriuw "Fish in a Barrel" taret in toolkit foar it skriuwen fan laden modules foar de Linux-kernel yn 'e Rust-taal, mei in set abstrakte lagen oer de ynterfaces en kernelstruktueren om feiligens te ferheegjen. Lagen wurde automatysk oanmakke op basis fan de besteande kernel-header-bestannen mei it nut bindgen. Clang wurdt brûkt om lagen te bouwen. Neist tuskenlagen brûke de gearstalde modules it staticlib-pakket.

Parallel ûntwikkelet In oar projekt rjochte him op it ûntwikkeljen fan bestjoerders foar ynbêde systemen en IoT-apparaten, dy't ek bindgen brûkt om lagen te generearjen basearre op kernel-header-bestannen. It ramt lit jo bestjoerdersfeiligens ferbetterje sûnder feroaringen oan 'e kernel te meitsjen - ynstee fan ekstra isolaasjenivo's foar sjauffeurs yn' e kernel te meitsjen, wurdt it foarsteld om problemen yn 'e kompilaasjestadium te blokkearjen, mei de feiliger Rust-taal. Der wurdt fan útgien dat sa'n oanpak yn fraach kin wêze troch apparatuerfabrikanten dy't yn 'e haast proprietêre sjauffeurs ûntwikkelje sûnder in goede kontrôle út te fieren.

Net alle bedoelde funksjonaliteit is noch ymplementearre, mar it ramt is al frij geskikt foar wurk en waard brûkt om in wurkjende stjoerprogramma te skriuwen foar de LAN9512 USB Ethernet-controller levere yn it Raspberry Pi 3-boerd De besteande smsc95xx-bestjoerder, skreaun troch in C taal. It wurdt opmurken dat de module grutte en overhead út runtime komponinten by it ûntwikkeljen fan in bestjoerder yn Rust is ûnbelangryk, wêrtroch it ramt kin brûkt wurde foar apparaten mei beheinde middels.

Boarne: opennet.ru

Add a comment