Vierde editie van patches voor de Linux-kernel met ondersteuning voor de Rust-taal

Miguel Ojeda, auteur van het Rust-for-Linux-project, stelde een vierde versie van componenten voor het ontwikkelen van apparaatstuurprogramma's in de Rust-taal voor ter overweging door Linux-kernelontwikkelaars. Rust-ondersteuning wordt als experimenteel beschouwd, maar er is al overeenstemming over bereikt voor opname in de linux-next branch en is volwassen genoeg om te beginnen met het creëren van abstractielagen over kernelsubsystemen, evenals het schrijven van stuurprogramma's en modules. De ontwikkeling wordt gefinancierd door Google en de ISRG (Internet Security Research Group), de oprichter van het Let's Encrypt-project en promoot HTTPS en de ontwikkeling van technologieën om de internetbeveiliging te verbeteren.

Bedenk dat de voorgestelde wijzigingen het mogelijk maken om Rust als tweede taal te gebruiken voor het ontwikkelen van stuurprogramma's en kernelmodules. Rust-ondersteuning wordt gepresenteerd als een optie die niet standaard is ingeschakeld en die er niet toe leidt dat Rust wordt opgenomen als een vereiste build-afhankelijkheid voor de kernel. Door Rust te gebruiken voor de ontwikkeling van stuurprogramma's kunt u met minimale inspanning veiligere en betere stuurprogramma's maken, vrij van problemen zoals geheugentoegang na het vrijmaken, null pointer-dereferenties en bufferoverruns.

Rust dwingt de geheugenveiligheid af tijdens het compileren door referentiecontrole, objecteigendom en het volgen van de levensduur van objecten (scopes), en door de juistheid van geheugentoegang tijdens runtime te evalueren. Rust biedt ook bescherming tegen overflows van gehele getallen, vereist dat variabelewaarden vóór gebruik worden geïnitialiseerd, heeft een betere foutafhandeling in de standaardbibliotheek, gebruikt standaard het concept van onveranderlijke referenties en variabelen en biedt sterke statische typering om logische fouten te minimaliseren.

De nieuwe versie van de patches blijft de opmerkingen elimineren die zijn gemaakt tijdens de bespreking van de eerste, tweede en derde editie van de patches. In de nieuwe versie:

  • De overstap naar het gebruik van de stabiele release van Rust 1.58.0 als referentiecompiler is gemaakt. Onder de wijzigingen die nodig zijn voor het project, die nog niet zijn opgenomen in de hoofdtoolkit van Rust, zijn de vlag “-Zsymbol-mangling-version=v0” (verwacht in Rust 1.59.0) en de modus “maybe_uninit_extra” (verwacht in Rust 1.60.0 .XNUMX) worden genoteerd. .
  • Automatische controles toegevoegd voor de beschikbaarheid van geschikte Rust-tools en de mogelijkheid uitgebreid om Rust-ondersteuning in het systeem te testen.
  • Er zijn nieuwe abstracties voorgesteld voor toegang tot apparaatidentificatietabellen ("IdArray" en "IdTable") vanuit Rust-code.
  • Lagen toegevoegd voor toegang tot timergerelateerde functies (klokframework).
  • Platformdrivers worden nu gedefinieerd door middel van eigenschapsimplementaties.
  • Er is een nieuwe macro toegevoegd om de registratie van platformstuurprogramma's te vereenvoudigen, en er is een nieuw algemeen stuurprogrammasjabloon voorgesteld.
  • Macro's toegevoegd voor "dev_*"-structuren.
  • "{read,write}*_relaxed"-methoden toegevoegd voor het IoMem-type .
  • De eigenschap FileOpener verwijderd om bestandsbewerkingen te vereenvoudigen.
  • De parameter “ThisModule” is toegevoegd aan de argumenten die worden doorgegeven bij het registreren van een stuurprogramma.
  • Er wordt een standaardsjabloon voorgesteld voor het maken van kernelmodules in de Rust-taal.

Bron: opennet.ru

Voeg een reactie