Tweede editie van patches voor de Linux-kernel met ondersteuning voor de programmeertaal Rust

Miguel Ojeda, de auteur van het Rust-for-Linux-project, heeft een bijgewerkte versie van de componenten voor het ontwikkelen van stuurprogramma's in de programmeertaal Rust voorgesteld voor beoordeling door de Linux-kernontwikkelaars. Ondersteuning voor Rust wordt beschouwd als experimentieel, maar is al goedgekeurd voor opname in de linux-next tak. In de nieuwe versie zijn de opmerkingen die tijdens de discussie over de eerste versie van de patches zijn geuit, verholpen. Linus Torvalds heeft zich al bij de discussie gevoegd en voorgesteld om de logica van sommige bitbewerkingsoperaties te veranderen.

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.

De meest opvallende wijzigingen in de nieuwe versie van de patches:

  • De code voor geheugenallocatie is vrijgemaakt van potentiële paniekstatussen bij het optreden van fouten, zoals geheugeninsufficiëntie. De Rust-bibliotheek alloc is opgenomen, waarin de code voor foutafhandeling is herschreven, maar het uiteindelijke doel is om alle noodzakelijke mogelijkheden voor de kern naar de hoofdversie van alloc over te brengen (wijzigingen zijn al voorbereid en naar de standaard Rust-bibliotheek gestuurd).
  • In plaats van nachtelijke builds voor het compileren van de kern met ondersteuning voor Rust, kunnen nu bètaversies en stabiele releases van de rustc-compiler worden gebruikt. Op dit moment wordt rustc 1.54-beta1 als referentiecompiler gebruikt, maar na de release van 1.54 aan het einde van de maand, zal deze release als referentie worden gebruikt.
  • Ondersteuning voor het schrijven van tests met de standaard Rust-attribuut "#[test]" is toegevoegd, evenals de mogelijkheid om doctests te gebruiken voor het documenteren van tests.
  • Ondersteuning voor ARM32- en RISCV-architecturen is toegevoegd, naast de eerder ondersteunde x86_64 en ARM64.
  • De implementaties van GCC Rust (GCC-frontend voor Rust) en rustc_codegen_gcc (rustc-backend voor GCC) zijn verbeterd, en deze doorloopt nu alle basis tests.
  • Een nieuw abstractieniveau is voorgesteld voor het gebruik in programma's geschreven in Rust voor kernmechanismen, geschreven in C, zoals rode-zwartbomen, referentietelling, bestandsdescriptorcreatie, taken, bestanden en invoer-/uitvoervectoren.
  • In de componenten voor het ontwikkelen van stuurprogramma's is de ondersteuning voor de module "file_operations", de macro "module!", registratie van macro's en rudimentaire stuurprogramma's (probe en remove) verbeterd.
  • In Binder is ondersteuning voor het doorgeven van bestandsdescriptors en LSM-hooks geïmplementeerd.
  • Een meer functioneel voorbeeld van een driver in Rust is voorgesteld — bcm2835-rng voor de hardware willekeurige getallengenerator van Raspberry Pi-borden.

Daarnaast worden projecten van enkele bedrijven genoemd die verband houden met het gebruik van Rust in de kernel:

  • Microsoft heeft interesse getoond in deelname aan het werk voor de integratie van ondersteuning voor Rust in de Linux-kernel en is bereid om in de komende maanden implementaties van drivers voor Hyper-V in Rust te leveren.
  • ARM werkt aan de verbetering van de ondersteuning voor Rust voor systemen op basis van ARM-processors. Het Rust-project heeft al wijzigingen voorgesteld die 64-bits ARM-systemen omzetten in het aantal platforms van first-tier ondersteuning (Tier-1).
  • Google biedt directe ondersteuning voor het Rust for Linux-project, ontwikkelt een nieuwe implementatie van het interprocesscommunicatiemechanisme Binder in Rust en overweegt het herbouwen van verschillende drivers in Rust. Via ISRG (Internet Security Research Group) heeft Google financiering gegeven voor het werk aan de integratie van Rust-ondersteuning in de Linux-kernel.
  • IBM heeft ondersteuning voor Rust in de kernel geïmplementeerd voor PowerPC-systemen.
  • Het LSE-laboratorium (Systems Research Laboratory) heeft een SPI-driver in Rust ontwikkeld.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster