En ramme i Rust kunne implementeres i kernen for at forbedre driverne

Rust Linux-kerne

Josh Triplett, et Intel-baseret firma og medlem af Crates.io's udviklingstilsynskomité, fremlagde allerede en arbejdsgruppe for et par dage siden i sin tale på Open Source Technology Summit som sigter mod at bringe Rust på niveau med C i Linux-kerneprogrammering.

I arbejdsgruppen, som er ved at blive oprettet, Rustudviklere vil sammen med Intel-ingeniører udarbejde specifikationer der kan fremhæve den funktionalitet, som Rust skal implementere til programmering inden for Linux-kernen. Systemprogrammering kræver ofte manipulationer på lavt niveau, såsom at udføre privilegerede processorinstruktioner og få detaljeret information om processorstatus.

Af de lignende funktioner, der allerede er udviklet til Rust, understøttelse af unavngivne strukturer understøttes, fagforeninger (union), assemblerindsatser ("asm!" -makroen) og BFLOAT16-nummerformat med flydende punkt.

Josh mener, at fremtiden for systemprogrammering ligger hos Rust, og C-sproget i moderne virkelighed hævder at være Assemblers sted i fortiden. Rust aflaster ikke kun udviklere af specifikke C-sprogproblemer, der opstår på grund af lavt niveau med hukommelse, men giver også anvendelighed i udviklingen af ​​moderne programmeringsparadigmer.

Under diskussionen af ​​Joshs tale blev ideen udtrykt for:

tilføje evnen til at udvikle rustsprogede drivere til Linux-kernen, hvilket med minimal indsats kan skabe bedre og mere sikre drivere, der lindrer problemer såsom adgang til hukommelsesområdet efter frigørelse, henvisning til nul-pegere og afslutning mere ud over grænserne af bufferen.

Greg Kroah-Hartman, ansvarlig for at opretholde en stabil gren af ​​Linux-kernen, ogx udtrykte vilje til at tilføje en rustdriverramme til kernen, hvis den har nogen reelle fordele i forhold til C, for eksempel vil det give sikre bindinger over core API'en. Greg betragter denne ramme kun som en mulighed, der ikke er aktiv som standard for ikke at medtage Rust i antallet af kernemontageafhængigheder.

Det viste sig, at flere hold allerede arbejder i denne retning. For eksempel forberedte Fish in a Barrel udviklere et værktøjssæt til at skrive indlæselige moduler til Linux-kernen på Rust-sproget ved hjælp af et sæt abstrakte lag oven på kernel-interfaces og -strukturer for at øge sikkerheden.

Mellemliggende lag genereres automatisk baseret på kernen header-filer tilgængelige ved hjælp af bindgen-hjælpeprogrammet. Clang bruges til at bygge mellemliggende lag. Samlede moduler, ud over lag, bruger staticlib-pakken.

Samtidig udvikles et andet projekt med fokus på udvikling af controllere til indlejrede systemer og Internet of Things-enheder, som også bruger bindgen til at generere halsbånd baseret på kernel header-filer.

Rammen giver dig mulighed for at forbedre driverens sikkerhed uden at foretage ændringer i kernen; I stedet for at skabe yderligere isolationsniveauer for drivere i kernen, foreslås det at blokere problemer på kompileringsstadiet ved hjælp af et mere sikkert Rust-sprog.

Det antages, at udstyrsproducenter kan udvikle denne tilgang i en fart uden en ordentlig revision.

Ikke alle planlagte funktioner er implementeret endnu, men rammen er allerede ret velegnet til jobbet og bruges til at skrive en arbejdsdriver til den medfølgende LAN9512 USB Ethernet-controller på Raspberry Pi 3-kortet.

Eksisterende smsc95xx driver blev skrevet som en referenceimplementering når du skriver Rust-driveren på C-sprog.

Det bemærkes, at modulstørrelse og runtime-komponentoverhead ikke er signifikante, når der udvikles en driver til Rust, som giver dig mulighed for at bruge rammen til ressourcebegrænsede enheder.

kilde: https://hub.packtpub.com


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for data: AB Internet Networks 2008 SL
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   L1ch sagde han

    Jeg kan ikke finde oplysninger om en smsc95xx-driver i kilden, eller at noget vil blive implementeret i Rust på Linux.