Josh Triplett, som arbetar pÄ Intel och Àr medlem i kommittén som övervakar utvecklingen av Crates.io, talade pÄ konferensen Open Source Technology Summit en arbetsgrupp som syftar till att fÄ sprÄket Rust att nÄ paritet med C-sprÄket inom systemprogrammering.
I arbetsgruppen, som Àr under skapande, kommer Rust-utvecklare tillsammans med ingenjörer frÄn Intel att förbereda specifikationer som definierar den funktionalitet som mÄste implementeras i Rust för systemprogrammering. Systemprogrammering krÀver ofta lÄgnivÄmanipuleringar, sÄsom utförande av privilegierade processorinstruktioner och att fÄ detaljerad information om processorstatus. Bl.a. de redan utvecklade möjligheterna för Rust inkluderar stöd för namnlösa strukturer, unioner, assemblerinslag (makro "asm!") och flyttalsformatet BFLOAT16.
Josh anser att framtiden för systemprogrammering ligger i Rust, medan C-sprÄket i dagens verklighet strÀvar efter den position som assembler hade under tidigare Är. Rust
bara befriar utvecklare frÄn de problem som Àr typiska för C-sprÄket nÀr det kommer till lÄgnivÄarbete med minne, utan ger ocksÄ möjlighet att tillÀmpa moderna programmeringsparadigm.
Under presentation
lÀmnade Josh tanken pÄ att lÀgga till möjligheten att utveckla drivrutiner pÄ Rust i Linux-kÀrnan, vilket skulle möjliggöra skapandet av sÀkrare och högkvalitativa drivrutiner med minimal anstrÀngning, som slipper problem som minnesÄtkomst efter att minnet har frigjorts, dereferering av nullpekare och buffertöverflöd.
Greg Kroah-Hartman, som ansvarar för att stödja den stabila versionen av Linux-kÀrnan, uttryckte sin beredskap att lÀgga till ett ramverk för att utveckla drivrutiner pÄ Rust i kÀrnan, om det har verkliga fördelar jÀmfört med C, till exempel om det kan erbjuda sÀkra kapslingar över kÀrnans API. Dessutom ser Greg detta ramverk som ett alternativ, som inte Àr aktivt som standard, för att inte inkludera Rust bland byggberoenden till kÀrnan.
Det visade sig att flera team redan arbetar i denna riktning. Till exempel utvecklarna frÄn företaget "Fish in a Barrel" ett verktyg för att skriva laddningsbara moduler för Linux-kÀrnan med Rust, som anvÀnder ett set av abstrakta lager över kÀrnans grÀnssnitt och strukturer för att öka sÀkerheten. Lagren genereras automatiskt baserat pÄ de befintliga kÀrnhuvudfilerna med hjÀlp av ett verktyg . För att bygga lagren anvÀnds Clang. De byggda modulerna anvÀnder förutom lagren Àven paketet staticlib.
Samtidigt ett annat projekt, fokuserat pĂ„ utveckling av drivrutiner för inbyggda system och Internet of Things-enheter, som ocksĂ„ anvĂ€nder bindgen för att generera lager baserat pĂ„ kĂ€rnans huvudfiler. Ramverket möjliggör ökad sĂ€kerhet för drivrutiner utan att göra Ă€ndringar i kĂ€rnan â istĂ€llet för att skapa ytterligare isoleringsnivĂ„er i kĂ€rnan för drivrutiner, föreslĂ„s det att blockera problem vid kompileringssteget, genom att anvĂ€nda det sĂ€krare sprĂ„ket Rust. Det antas att denna metod kan bli efterfrĂ„gad av hĂ„rdvarutillverkare som snabbt utvecklar proprietĂ€ra drivrutiner utan en ordentlig revision.
Inte all tÀnkt funktionalitet Àr Ànnu implementerad, men ramverket Àr redan fullt anvÀndbart och har anvÀnts för att skriva en fungerande drivrutin för Ethernet-kontroller LAN9512 USB, som levereras med Raspberry Pi 3. Som referensimplementation vid skrivandet av Rust-drivrutinen anvÀndes den befintliga drivrutinen smsc95xx, skriven i C. Det noteras att storleken pÄ modulen och overhead frÄn runtime-komponenterna vid utvecklingen av drivrutinen pÄ Rust Àr obetydlig, vilket möjliggör anvÀndning av ramverket för resurssnÄla enheter.
KĂ€lla: opennet.ru
