Nieuwe versie van patches voor de Linux-kernel met ondersteuning voor de Rust-taal

Miguel Ojeda, de auteur van het Rust-for-Linux-project, stelde de release voor van v5-componenten voor het ontwikkelen van apparaatstuurprogramma's in de Rust-taal, ter overweging door Linux-kernelontwikkelaars. Dit is de zesde editie van de patches, rekening houdend met de eerste versie, gepubliceerd zonder versienummer. 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, vierde en vijfde editie van de patches. In de nieuwe versie:

  • De toolkit is bijgewerkt om Rust 1.59.0 uit te brengen. Een variant van de alloc-bibliotheek is ook gesynchroniseerd met de nieuwe versie van Rust, waardoor de mogelijke generatie van een “paniek”-status wordt geëlimineerd wanneer er fouten optreden, zoals onvoldoende geheugen. De mogelijkheid om assembler-inserts (“feature(global_asm)”) te gebruiken is gestabiliseerd.
  • Ondersteuning toegevoegd voor het maken van hostprogramma's in Rust die worden gebruikt tijdens kernelcompilatie.
  • In plaats van vooraf gegenereerde doelplatformspecificatiebestanden te leveren, worden ze dynamisch gegenereerd op basis van de kernelconfiguratie.
  • Kernelparameter HAVE_RUST toegevoegd om in te schakelen voor architecturen die Rust ondersteunen.
  • Er worden abstracties voorgesteld voor gebruik in Rust-code voor een hardwaregenerator voor pseudo-willekeurige getallen.
  • Het gebruik van foutcodes zonder het voorvoegsel "Error::" is toegestaan ​​(bijvoorbeeld "return Err(EINVAL)") om de afhandeling van foutcodes in C te benaderen.
  • Type "CString" toegevoegd voor aangepaste C-strings. De typen Formatter en Buffer zijn gecombineerd.
  • Bool- en LockInfo-typen toegevoegd.
  • De implementatie van spinlocks is vereenvoudigd.

Bron: opennet.ru

Voeg een reactie