Tijdens de momenteel lopende conferentie Maintainers Summit is er een discussie geweest over de resultaten van een experiment om ondersteuning voor het ontwikkelen van componenten in de programmeertaal Rust toe te voegen aan de Linux-kernel. De aanwezige deelnemers beschouwden het experiment als succesvol en besloten om de ondersteuning voor Rust in de categorie essentiƫle onderdelen van de kernel te plaatsen, waarbij de status van experimentele functionaliteit werd opgeheven.
Drie jaar geleden werd de mogelijkheid om stuurprogramma's en modules in de programmeertaal Rust te ontwikkelen toegevoegd aan kernel 6.1. Sindsdien zijn er abstracties in de kernel opgenomen voor het ontwikkelen van Rust-stuurprogramma's voor GPU's, bestandssystemen, blokapparaten, netwerkaansluitingen en USB-apparaten. In Rust wordt het Nova-stuurprogramma voor NVIDIA GPU's, asahi voor Apple AGX GPU's, Tyr voor ARM Mali GPU's en rust_ext2 voor het Ext2-bestandssysteem ontwikkeld. Er is een in Rust geschreven implementatie van IPC Binder in de kernel opgenomen. Het RROS-project ontwikkelt een real-time subsysteem voor de Linux-kernel, geschreven in Rust. Ondersteuning voor Rust is standaard inactief en leidt niet tot het opnemen van Rust als verplichte bouwafhankelijkheid voor de kernel.
Volgens de voorstanders van de promotie van Rust voorkomt deze taal de meeste fouten die in de kernel worden ontdekt en veroorzaakt door de kenmerken van de C-taal (corner cases), waardoor het bij het beoordelen mogelijk is om je te concentreren op logische fouten en race-voorwaarden. Rust helpt problemen te vermijden zoals het benaderen van geheugen na vrijgave, buffer-overruns, onjuiste vrijgave van middelen bij het afhandelen van fouten en vergeten controles van geretourneerde foutcodes. Het gebruik van Rust voor nieuwe code biedt ook de mogelijkheid om de ontwikkelingstijd te verkorten door de vermindering van de inspanning voor debugging en de aanwezigheid van strikte garanties binnen de taal die fouten in een vroeg stadium van het coderen opsporen.
Tegenstanders van de integratie van Rust in de kernel beschouwen het als onacceptabel om meerdere programmeertalen in complexe projecten te gebruiken ā gemengde codebases bemoeilijken het werk van de maintainers, omdat ze hen afhankelijk maken van code in een andere taal. Bijvoorbeeld, als er bindings in Rust zijn, moeten ontwikkelaars van subsystemen die in C zijn geschreven, rekening houden met de impact van wijzigingen op de voortzetting van de functionaliteit van die bindings.
Bron: opennet.ru
