Miguel Ojeda, de auteur van het Rust-for-Linux-project, heeft de Linux-kernelontwikkelaars voorgesteld om versie 5 van de componenten voor het ontwikkelen van apparaatdrivers in Rust te overwegen. Dit is de zesde editie van de patches, rekening houdend met de eerste versie die zonder versienummer is gepubliceerd. Ondersteuning voor Rust wordt als experimenteel beschouwd, maar is al opgenomen in de linux-next tak en is voldoende ontwikkeld om te beginnen met het creĆ«ren van abstractielaag boven de subsysteem van de kernel, evenals voor het schrijven van drivers en modules. De ontwikkeling wordt gefinancierd door Google en de ISRG (Internet Security Research Group), die de oprichter is van het Letās Encrypt-project en de promotie van HTTPS en de ontwikkeling van technologieĆ«n voor een veiligere internet bevordert.
Laten we niet vergeten dat de voorgestelde wijzigingen het mogelijk maken om Rust als tweede taal te gebruiken voor het ontwikkelen van stuurprogramma's en kernelmodules. Ondersteuning voor Rust wordt gepresenteerd als een optie die standaard niet is ingeschakeld en die niet leidt tot het opnemen van Rust in de verplichte build afhankelijkheden van de kernel. Het gebruik van Rust voor het ontwikkelen van stuurprogramma's zal het mogelijk maken om met minimale inspanning veilige en kwalitatief hoogwaardige stuurprogramma's te creƫren, vrij van problemen zoals het aanspreken van geheugengebieden na vrijgave, het de-referencen van null-pointers en buffer-overflows.
Veilige geheugentoegang wordt in Rust tijdens de compilatie gegarandeerd door middel van referentietests, objecteigenaarschap en het bijhouden van de levensduur van objecten (scope), evenals door het evalueren van de geldigheid van geheugentoegang tijdens het uitvoeren van code. Rust biedt ook middelen om te beschermen tegen gehele getallenoverflows, vereist dat variabelen verplicht worden geĆÆnitialiseerd voordat ze worden gebruikt, behandelt fouten beter in de standaardbibliotheek, past het concept van onveranderlijkheid (immutable) van verwijzingen en variabelen standaard toe en biedt sterke statische typecontrole om logische fouten te minimaliseren.
In de nieuwe versie van de patches zijn de opmerkingen die tijdens de discussies over de eerste, tweede, derde, vierde en vijfde edities van de patches zijn gemaakt verder aangepakt. In de nieuwe versie:
- De toolkit is bijgewerkt naar Rust 1.59.0. Met de nieuwe versie van Rust is ook de alloc-bibliotheek gesynchroniseerd, deze is ontdaan van mogelijke paniekgeneraties bij het optreden van fouten, zoals geheugengebrek. Het gebruik van assembler-invoegen ("feature(global_asm)") is gestabiliseerd.
- Ondersteuning voor het maken van hostprogramma's in Rust, die tijdens het compileren van de kernel worden gebruikt, is toegevoegd.
- In plaats van vooraf gemaakte bestanden met specificaties voor doelsystemen, is dynamische generatie op basis van de kernelconfiguratie mogelijk gemaakt.
- Een kernelparameter HAVE_RUST is toegevoegd, die is ingeschakeld voor architecturen die Rust ondersteunen.
- Abstracties voor gebruik in Rust-code voor hardware RNG's zijn voorgesteld.
- Het is toegestaan om foutcodes zonder het voorvoegsel "Error::" te gebruiken (bijvoorbeeld "return Err(EINVAL)") om te komen tot een verwerking van foutcodes zoals in C.
- Er is een type "CString" toegevoegd voor eigen C-strings. De types Formatter en Buffer zijn samengevoegd.
- De typeclassificaties Bool en LockInfo zijn toegevoegd.
- De implementatie van spin-locks is vereenvoudigd.
Bron: opennet.ru
