Miguel Ojeda, forfatter af projektet Rust-for-Linux, har foreslået en femte version af komponenterne til udvikling af enhedsdrivere på Rust-sprog til overvejelse af Linux-kernens udviklere. Støtten til Rust betragtes som eksperimentel, men er allerede inkluderet i linux-next-grenen og er tilstrækkeligt udviklet til at starte arbejdet med at skabe abstraheringslag over kerneundersystemer samt til at skrive drivere og moduler. Udviklingen finansieres af Google og organisationen ISRG (Internet Security Research Group), som er stifteren af projektet Let’s Encrypt og fremmer HTTPS samt udviklingen af teknologier til at forbedre internetsikkerheden.
Det skal bemærkes, at de foreslåede ændringer giver mulighed for at bruge Rust som det andet sprog til udvikling af drivere og kerne-moduler. Rust-understøttelse præsenteres som en mulighed, der ikke er aktiveret som standard og ikke fører til, at Rust bliver en obligatorisk byggeafhængighed for kernen. Brug af Rust til driverudvikling vil gøre det muligt at skabe sikre og af højere kvalitet drivere med minimal indsats, fri for problemer som adgang til hukommelse efter frigivelse, dereferencering af nullpegepinde og buffer-overløb.
Sikker hukommelseshåndtering sikres i Rust under kompileringen gennem referencekontrol, overvågning af ejerskab af objekter og livscyklus (scope) af objekter, samt evaluering af korrekt hukommelsestilgang under kodeudførelse. Rust tilbyder også midler til beskyttelse mod heltalsoverskridelser, kræver obligatorisk initialisering af variabelværdier før brug, håndterer fejl bedre i standardbiblioteket, anvender konceptet med immutability (uændrede) referencer og variabler som standard, og tilbyder stærk statisk typekontrol for at minimere logiske fejl.
I den nye version af patches fortsætter udbedringen af kommentarer, der blev fremsat under diskussionen af den første, anden, tredje og fjerde udgave af patches. I den nye version:
- Der er tilføjet en kontrol af komponenter til Rust-support i det vedligeholdte bot-system 0DAY/LKP, som er baseret på kontinuerlig integration fra Intel, og publiceringen af testrapporter er begyndt. Integration af Rust-support i det automatiserede testsystem KernelCI forberedes. Testning baseret på GitHub CI er blevet overført til brugen af containere.
- Kernelmoduler på Rust er blevet befriet fra krav om at definere crate-attributterne «#![no_std]» og «#![feature(…)]».
- Støtte til enhedssamlingsmål (.o, .s, .ll og .i) er blevet tilføjet.
- I retningslinjerne for kodeformat er der defineret regler vedrørende adskillelse af kommentarer («//») og dokumentation af kode («///»).
- Scriptet is_rust_module.sh er blevet redesignede.
- Støtte til statiske (globale delte variabler) synkronisering primitive baseret på implementeringen «CONFIG_CONSTRUCTORS» er blevet tilføjet.
- Håndteringen af låse er forenklet: Guard og GuardMut er blevet sammenlagt til en enkelt parameteriseret type.
- Det er blevet muligt at definere ekstra parametre ved registrering af enheder.
- Der er tilføjet en abstraktion «RwSemaphore», som fungerer som et wrapper over C-strukturen rw_semaphore.
- For at bruge mmap er der tilføjet et nyt modul mm og en abstraktion VMA (wrapper over strukturen vm_area_struct).
- GPIO-driveren PL061 er blevet ændret til at bruge makroen «dev_*!».
- Der er blevet foretaget en generel oprydning af koden.
Kilde: opennet.ru
