Josh Triplett, der arbejder hos Intel og er medlem af det udvalg, der overvåger udviklingen af Crates.io, præsenterede ved konferencen Open Source Technology Summit. et arbejdsgruppe, der har til formål at bringe Rust-sproget på niveau med C-sproget inden for systemprogrammering.
I den arbejdsgruppe, der er under oprettelse, vil Rust-udviklere sammen med ingeniører fra Intel forberede specifikationer for den funktionalitet, der skal implementeres i Rust for systemprogrammering. Systemprogrammering kræver ofte lavniveau-manipulationer, såsom udførelse af privilegerede processorinstruktioner og indhentning af detaljerede oplysninger om processtate. Blandt de allerede udviklede muligheder for Rust bemærkes støtte til anonyme strukturer, unions (union), assemblerindsætninger (makro "asm!") og BFLOAT16 flydende tal format.
Josh mener, at fremtiden for systemprogrammering ligger hos Rust, mens C-sproget i nutidens kontekst søger en plads, som assembleren engang indtog.
Rust fjerner ikke blot de problemer, der er forbundet med C-sproget og fremkommer ved lavniveau-håndtering af hukommelse, men giver også mulighed for at anvende moderne programmeringsparadigmer under udviklingen.
Under foredrag
Jøs diskussion blev ideen fremsat om at tilføje muligheden for at udvikle drivere på Rust-sproget til Linux-kernen, hvilket vil muliggøre oprettelsen af sikre og kvalitetsdrivere med minimal indsats, uden de problemer såsom adgang til hukommelse efter frigivelse, dereferering af nul-pointere og buffer-overløb.
Greg Kroah-Hartman, der er ansvarlig for vedligeholdelse af den stabile version af Linux-kernen, har tilkendegivet sin parathed til at tilføje et framework til udvikling af drivere på Rust-sproget til kernen, hvis det kan tilbyde reelle fordele i forhold til C, såsom at give sikre bindings over kernelens API. Derudover betragter Greg dette framework udelukkende som en mulighed, der ikke er aktiv som standard, for ikke at inkludere Rust som en byggeafhængighed for kernen.
Det viste sig, at flere teams allerede arbejder i denne retning. For eksempel arbejder udviklerne fra firmaet "Fish in a Barrel" har værktøjer til at skrive lastbare moduler til Linux-kernen i Rust, ved at bruge et sæt abstrakte lag over kerne-interfaces og -strukturer for at øge sikkerheden. Lagene genereres automatisk baseret på de eksisterende header-filer i kernen ved hjælp af værktøjet . For at bygge lagene anvendes Clang. De opbyggede moduler bruger ud over lagene også pakken staticlib.
Samtidig et andet projekt, der fokuserer på udvikling af drivere til indlejrede systemer og enheder til internettet af ting, som også bruger bindgen til at generere lag baseret på header-filer fra kernen. Frameworket muliggør forbedret sikkerhed for drivere uden at ændre kernen — i stedet for at skabe yderligere isolationslag i kernen for drivere, foreslås det at blokere problemer på kompileringstidspunktet ved at anvende det mere sikre sprog Rust. Det forventes, at en sådan tilgang kan være attraktiv for hardwareproducenter, der udvikler proprietære drivere hastigt uden ordentlig revision.
Ikke al den planlagte funktionalitet er implementeret endnu, men frameworket er allerede fuldt anvendeligt og er blevet brugt til at skrive en funktionel driver til Ethernet-controlleren LAN9512 USB, der medfølger Raspberry Pi 3. Som en referenceimplementering ved skrivning af Rust-driveren blev den eksisterende driver smsc95xx, der er skrevet i C, anvendt. Det bemærkes, at størrelsen på modulet og overheaden fra runtime-komponenterne ved udvikling af driveren i Rust er minimal, hvilket gør det muligt at anvende frameworket til enheder med begrænsede ressourcer.
Kilde: opennet.ru
