Fjerde udgave af patches til Linux-kernen med understøttelse af Rust-sproget

Miguel Ojeda, forfatter til Rust-for-Linux-projektet, foreslog en fjerde version af komponenter til udvikling af enhedsdrivere i Rust-sproget til overvejelse af Linux-kerneudviklere. Rustunderstøttelse betragtes som eksperimentel, men er allerede blevet aftalt til inklusion i linux-next-grenen og er moden nok til at begynde arbejdet med at skabe abstraktionslag over kerneundersystemer samt skrive drivere og moduler. Udviklingen er finansieret af Google og ISRG (Internet Security Research Group), som er grundlæggeren af ​​Let's Encrypt-projektet og promoverer HTTPS og udviklingen af ​​teknologier til at forbedre internetsikkerheden.

Husk at de foreslåede ændringer gør det muligt at bruge Rust som et andet sprog til udvikling af drivere og kernemoduler. Rust-understøttelse præsenteres som en mulighed, der ikke er aktiveret som standard og resulterer ikke i, at Rust inkluderes som en påkrævet build-afhængighed for kernen. Brug af Rust til driverudvikling vil give dig mulighed for at skabe sikrere og bedre drivere med minimal indsats, fri for problemer såsom hukommelsesadgang efter frigørelse, nul pointer-dereferencer og bufferoverskridelser.

Hukommelsessikker håndtering leveres i Rust på kompileringstidspunktet gennem referencekontrol, holde styr på objektejerskab og objektlevetid (scope), samt gennem evaluering af korrektheden af ​​hukommelsesadgang under kodeudførelse. Rust giver også beskyttelse mod heltalsoverløb, kræver obligatorisk initialisering af variabelværdier før brug, håndterer fejl bedre i standardbiblioteket, anvender konceptet med uforanderlige referencer og variabler som standard, tilbyder stærk statisk skrivning for at minimere logiske fejl.

Den nye version af programrettelserne fortsætter med at fjerne de kommentarer, der blev fremsat under diskussionen af ​​første, anden og tredje udgave af programrettelserne. I den nye version:

  • Overgangen til at bruge den stabile udgivelse af Rust 1.58.0 som referencekompiler er foretaget. Blandt de ændringer, der er nødvendige for projektet, som endnu ikke er inkluderet i Rust-værktøjssættet, er flaget "-Zsymbol-mangling-version=v0" (forventet i Rust 1.59.0) og tilstanden "maybe_uninit_extra" (forventet i Rust 1.60.0) .XNUMX) er noteret. .
  • Tilføjet automatiske kontroller for tilgængeligheden af ​​passende rustværktøjer og udvidet muligheden for at teste rustunderstøttelse i systemet.
  • Nye abstraktioner er blevet foreslået for at få adgang til enhedsidentifikationstabeller ("IdArray" og "IdTable") fra Rust-kode.
  • Tilføjede lag for at få adgang til timer-relaterede funktioner (urramme).
  • Platformdrivere er nu defineret gennem egenskabsimplementeringer.
  • En ny makro er blevet tilføjet for at forenkle registreringen af ​​platformsdrivere, og en ny generisk driverskabelon er blevet foreslået.
  • Tilføjede makroer til "dev_*" strukturer.
  • Tilføjet "{read,write}*_relaxed"-metoder for IoMem-typen .
  • Fjernede egenskaben FileOpener for at forenkle filhandlinger.
  • Parameteren "ThisModule" er blevet tilføjet til de argumenter, der blev sendt ved registrering af en driver.
  • En standardskabelon til oprettelse af kernemoduler i Rust-sproget foreslås.

Kilde: opennet.ru

Tilføj en kommentar