Josh Triplett, som arbetar på Intel och sitter i kommittén som övervakar utvecklingen av Crates.io, talar vid Open Source Technology Summit
I en arbetsgrupp som håller på att skapas kommer Rust-utvecklare, tillsammans med ingenjörer från Intel, att utarbeta specifikationer som definierar den funktionalitet som behöver implementeras i Rust för systemprogrammering. Systemprogrammering kräver ofta manipulation på låg nivå, som att exekvera privilegierade processorinstruktioner och få detaljerad information om processorns tillstånd. Av de liknande funktioner som redan utvecklats för Rust noteras stöd för icke namngivna strukturer, fackföreningar, assemblerspråksinfogningar (makrot "asm!") och flyttalsformatet BFLOAT16.
Josh tror att framtiden för systemprogrammering tillhör Rust, och C-språket i moderna verkligheter gör anspråk på den plats som under tidigare år ockuperades av Assembly. Rost
inte bara avlastar utvecklare från de problem som ligger i C-språket som uppstår på grund av lågnivåarbete med minne, utan ger också möjlighet att använda det i utvecklingen av moderna programmeringsparadigm.
Under
Josh kom på idén att lägga till möjligheten att utveckla drivrutiner i Linux-kärnan i Rust-språket, vilket skulle göra det möjligt att skapa säkrare och bättre drivrutiner med minimal ansträngning, fria från problem som minnesåtkomst efter frigöring, null pekarreferenser och buffertöverskridanden.
Greg Kroah-Hartman, som är ansvarig för att underhålla den stabila grenen av Linux-kärnan, uttryckte sin beredvillighet att lägga till ett ramverk för att utveckla drivrutiner i Rust-språket till kärnan om det har verkliga fördelar jämfört med C, till exempel kommer det att ge säker bindningar över Kernel API. Dessutom betraktar Greg detta ramverk endast som ett alternativ, inte aktivt som standard, för att inte inkludera Rust som ett byggberoende på kärnan.
Det visade sig att flera team redan arbetar i denna riktning. Till exempel utvecklare från företaget "Fish in a Barrel"
Parallell
Inte all avsedd funktionalitet har ännu implementerats, men ramverket är redan ganska lämpligt för arbete och användes för att skriva en fungerande drivrutin för LAN9512 USB Ethernet-kontrollern som medföljer Raspberry Pi 3-kortet. Den befintliga drivrutinen för smsc95xx, skriven av i C språk. Det noteras att modulstorleken och overhead från runtime-komponenter vid utveckling av en drivrutin i Rust är obetydliga, vilket gör att ramverket kan användas för enheter med begränsade resurser.
Källa: opennet.ru