Miguel Ojeda, de auteur van het Rust-for-Linux-project, heeft een vierde versie van componenten voor de ontwikkeling van stuurprogramma's voor apparaten in de programmeertaal Rust voorgesteld aan de Linux-kernelontwikkelaars. Ondersteuning voor Rust wordt als experimenteel beschouwd, maar is al goedgekeurd voor opname in de linux-next tak en is voldoende ontwikkeld om te beginnen met het creƫren van abstractie lagen bovenop de subsysteem van de kernel, evenals voor het schrijven van stuurprogramma's en modules. De ontwikkeling wordt gefinancierd door Google en de Internet Security Research Group (ISRG), die de oprichter is van het Let's Encrypt-project en bijdraagt aan de bevordering van HTTPS en de ontwikkeling van technologieƫn om de beveiliging van het internet te verbeteren.
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 gaat men verder met het oplossen van opmerkingen die zijn gemaakt tijdens de bespreking van de eerste, tweede en derde versies van de patches. In de nieuwe versie:
- Er is overgestapt op het gebruik van de stabiele release van Rust 1.58.0 als referentie-compiler. Van de noodzakelijke wijzigingen voor het project, die nog niet in de hoofdversie van de Rust-toolchain zijn opgenomen, wordt de vlag "-Zsymbol-mangling-version=v0" genoemd (verwacht in Rust 1.59.0) en de modus "maybe_uninit_extra" (verwacht in Rust 1.60.0).
- Automatische controles voor de beschikbaarheid van geschikte Rust-tooling zijn toegevoegd en de mogelijkheden voor het testen van Rust-ondersteuning in het systeem zijn uitgebreid.
- Er zijn nieuwe abstracties voorgesteld voor de toegang vanuit Rust-code tot apparaatidentificatietabellen ("IdArray" en "IdTable").
- Er zijn lagen toegevoegd om te verwijzen naar functies die verband houden met de klok (clock framework).
- Stuurprogramma's voor platforms zijn nu gedefinieerd via de implementatie van traits.
- Er is een nieuwe macro toegevoegd voor het vereenvoudigen van de registratie van platforms, evenals een nieuw sjabloon voor typische stuurprogramma's.
- Macro's voor "dev_*" structuren zijn toegevoegd.
- Methoden "{read,write}*_relaxed" zijn toegevoegd voor het type IoMem.
- De eigenschap FileOpener is verwijderd om bestandshandelingen te vereenvoudigen.
- Een parameter "ThisModule" is toegevoegd aan de argumenten die worden doorgegeven bij het registreren van stuurprogramma's.
- Een typisch sjabloon is voorgesteld voor het maken van kernelmodules in de programmeertaal Rust.
Bron: opennet.ru
