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

Miguel Ojeda, auteur van het Rust-for-Linux-project, heeft een vijfde versie van componenten voor het ontwikkelen van apparaatstuurprogramma's in de Rust-taal voorgesteld, ter overweging door Linux-kernelontwikkelaars. Rust-ondersteuning wordt als experimenteel beschouwd, maar is al opgenomen in de linux-next branch en is voldoende ontwikkeld om te beginnen met het creëren van abstractielagen over kernelsubsystemen, en met 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, derde en vierde editie van de patches. In de nieuwe versie:

  • Componenttesten voor Rust-ondersteuning zijn toegevoegd aan het continue integratiesysteem op basis van de door Intel ondersteunde 0DAY/LKP-bot en de publicatie van testrapporten is begonnen. We bereiden ons voor om Rust-ondersteuning te integreren in het geautomatiseerde kernelCI-testsysteem. Het testen op basis van GitHub CI is overgegaan op het gebruik van containers.
  • Rust-kernelmodules zijn bevrijd van de noodzaak om de kratattributen “#![no_std]” en “#![feature(…)]” te definiëren.
  • Ondersteuning toegevoegd voor afzonderlijke assemblagedoelen (.o, .s, .ll en .i).
  • Coderichtlijnen definiëren regels voor het scheiden van commentaar (“//”) en het documenteren van code (“///”).
  • Het is_rust_module.sh-script is herwerkt.
  • Ondersteuning toegevoegd voor statische (algemene gedeelde variabele) synchronisatieprimitieven op basis van de "CONFIG_CONSTRUCTORS"-implementatie.
  • Het sluisbeheer is vereenvoudigd: Guard en GuardMut zijn gecombineerd en één geparametreerd type.
  • Het is mogelijk om extra parameters te definiëren bij het registreren van apparaten.
  • De abstractie "RwSemaphore" toegevoegd, die fungeert als omhulsel over de rw_semaphore C-structuur.
  • Om mmap te gebruiken, zijn een nieuwe mm-module en een VMA-abstractie toegevoegd (een wrapper over de vm_area_struct-structuur).
  • Het GPIO PL061-stuurprogramma is overgeschakeld naar het gebruik van de macro "dev_*!".
  • Er is een algemene opschoning van de code uitgevoerd.

Bron: opennet.ru

Voeg een reactie