På den igangværende konference Maintainers Summit blev der diskuteret resultaterne af et eksperiment om tilføjelsen af muligheden for at udvikle komponenter i Linux-kernen ved hjælp af Rust. Deltagerne anerkendte eksperimentet som vellykket og besluttede at overføre understøttelsen af Rust til kategorien af kernekomponenter, hvilket fjerner dets status som eksperimentel funktionalitet.
For tre år siden blev muligheden for at udvikle drivere og moduler i Rust tilføjet i version 6.1 af kernen. Siden da er der blevet inkluderet abstraktioner til udvikling af Rust-drivere for GPU'er, filsystemer, blokenheder, netværksadaptere og USB-enheder i kernen. Der udvikles en GPU-driver ved navn Nova for NVIDIA, asahi for Apple AGX GPU, Tyr for ARM Mali GPU, samt rust_ext2 til filsystemet Ext2. Der er blevet accepteret en IPC Binder-implementering skrevet i Rust i kernen. Projektet RROS udvikler en real-time underkomponent til Linux-kernen, skrevet i Rust. Understøttelse af Rust er ikke aktiv som standard og medfører ikke, at Rust inkluderes som en obligatorisk byggeafhængighed for kernen.
Ifølge tilhængere af Rust's fremme eliminerer dette sprog de fleste fejl, der findes i kernen og skyldes særegenhederne i C-sproget (corner case), hvilket gør det muligt at fokusere på logiske fejl og race-tilstande under anmeldelser. Rust hjælper med at undgå problemer som tilgang til hukommelse efter frigivelse, bufferoverløb, forkert frigivelse af ressourcer ved fejlhåndtering og glemte kontrol af tilbagevendende fejlkoder. Anvendelsen af Rust til ny kode muliggør også en forkortelse af udviklingstiden, da det reducerer arbejdsbyrden på fejlsøgning og har strenge garantier i sproget, der opdager fejl tidligt i skriveprocessen.
Modstandere af at implementere Rust i kernen mener, det er uacceptabelt at bruge flere programmeringssprog i komplekse projekter — blandede kodebaser gør det mere besværligt for vedligeholdere, da de skal være afhængige af koden i et andet sprog. For eksempel, ved eksistensen af bindings i Rust, skal udviklere af underkomponenter skrevet i C tage hensyn til konsekvenserne af ændringer for at opretholde bindings funktionalitet.
Kilde: opennet.ru
