En ram i Rust kan implementeras i Kärnan för att förbättra förarna

Rost Linux Kernel

Josh Triplett, ett Intel-baserat företag och medlem av Crates.io-utvecklingsövervakningskommittén, presenterade redan en arbetsgrupp för några dagar sedan i sitt tal vid Open Source Technology Summit som syftar till att få Rust i nivå med C i Linux-kärnprogrammering.

I arbetsgruppen, som håller på att skapas, Rostutvecklare kommer tillsammans med Intel-ingenjörer att utarbeta specifikationer som kan lyfta fram funktionaliteten som Rust behöver implementera för programmering inom Linux-kärnan. Systemprogrammering kräver ofta manipulationer på låg nivå, till exempel att utföra privilegierade processorinstruktioner och få detaljerad information om processorstatus.

Av de liknande funktioner som redan utvecklats för Rust, stöd för namngivna strukturer stöds, fackföreningar (union), assemblerinsatser ("asm!" -makroet) och BFLOAT16-nummerformatet för flytpunkt.

Josh tror att framtiden för systemprogrammering ligger hos Rust, och C-språket i modern verklighet påstår sig vara Assemblers plats i det förflutna. Rust lindrar inte bara utvecklare av specifika C-språkproblem som uppstår på grund av lågnivåarbete med minne, utan ger också användbarhet i utvecklingen av moderna programmeringsparadigmer.

Under diskussionen om Joshs tal uttrycktes idén för att:

lägga till förmågan att utveckla rostspråkiga drivrutiner till Linux-kärnan, vilket med minimal ansträngning skulle kunna skapa bättre och säkrare drivrutiner som lindrar problem som att komma åt minnesområdet efter att ha frigjort det, hänvisa till nollpekare och gå ut mer än gränserna av bufferten.

Greg Kroah-Hartman, ansvarig för att upprätthålla en stabil gren av Linux-kärnan, ochx uttryckte villighet att lägga till ett rostdrivrutinram till kärnan om den har några verkliga fördelar jämfört med C, till exempel kommer det att ge säkra bindningar över kärn-API: et. Greg anser att detta ramverk endast är ett alternativ som inte är aktivt som standard, för att inte inkludera Rust i antalet kärnmonteringsberoenden.

Det visade sig att flera lag redan arbetar i den här riktningen. Exempelvis förberedde Fish in a Barrel-utvecklare en verktygslåda för att skriva laddningsbara moduler för Linux-kärnan på Rust-språket med hjälp av en uppsättning abstrakta lager ovanpå kärngränssnitt och strukturer för att öka säkerheten.

Mellanlager genereras automatiskt baserat på kärnhuvudfilerna som är tillgängliga med bindgen-verktyget. Clang används för att bygga mellanliggande lager. Monterade moduler, förutom lager, använder staticlib-paketet.

Samtidigt utvecklas ytterligare ett projekt med fokus på utveckling av styrenheter för inbyggda system och Internet of Things-enheter, som också använder bindgen för att generera halsband baserat på kärnhuvudfiler.

Ramverket tillåter dig att förbättra drivrutinssäkerheten utan att göra några ändringar i kärnan; I stället för att skapa ytterligare isoleringsnivåer för drivrutiner i kärnan föreslås det att blockera problem vid kompileringsstadiet med ett säkrare Rust-språk.

Utrustningstillverkare ska kunna utveckla detta tillvägagångssätt i bråttom utan en ordentlig granskning.

Inte alla planerade funktioner har implementerats än, men ramverket är redan ganska lämpligt för jobbet och används för att skriva en arbetsdrivrutin för den medföljande LAN9512 USB Ethernet-styrenheten på Raspberry Pi 3-kortet.

Befintlig smsc95xx-drivrutin skrevs som en referensimplementering när du skriver Rust-drivrutinen på C-språk.

Det noteras att modulstorlek och runtime-komponentkostnader inte är betydelsefulla när du utvecklar en drivrutin för Rust, vilket gör att du kan använda ramverket för resursbegränsade enheter.

Fuente: https://hub.packtpub.com


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för data: AB Internet Networks 2008 SL
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   L1ch sade

    Jag kan inte hitta information för en smsc95xx-drivrutin i källan eller att något kommer att implementeras i Rust på Linux.