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

Miguel Ojeda, forfatter til Rust-for-Linux-projektet, har foreslået en femte version af komponenter til udvikling af enhedsdrivere i Rust-sproget til overvejelse af Linux-kerneudviklere. Rustunderstøttelse betragtes som eksperimentel, men er allerede inkluderet i linux-next-grenen og er tilstrækkeligt udviklet 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 ​​den første, anden, tredje og fjerde udgave af programrettelserne. I den nye version:

  • Komponenttestning for Rust-understøttelse er blevet tilføjet til det kontinuerlige integrationssystem baseret på den Intel-understøttede 0DAY/LKP-bot, og udgivelsen af ​​testrapporter er begyndt. Vi forbereder os på at integrere Rust-understøttelse i KernelCIs automatiserede testsystem. Test baseret på GitHub CI er blevet overført til brug af containere.
  • Rustkernemoduler frigøres fra behovet for at definere kasseattributterne "#![no_std]" og "#![feature(...)]".
  • Tilføjet understøttelse af enkeltsamlingsmål (.o, .s, .ll og .i).
  • Koderetningslinjer definerer regler for adskillelse af kommentarer (“//”) og dokumentation af kode (“///”).
  • is_rust_module.sh scriptet er blevet omarbejdet.
  • Tilføjet understøttelse af statiske (global delt variabel) synkroniseringsprimitiver baseret på "CONFIG_CONSTRUCTORS" implementeringen.
  • Låsestyring er forenklet: Guard og GuardMut er kombineret og en parameteriseret type.
  • Det er muligt at definere yderligere parametre ved registrering af enheder.
  • Tilføjet "RwSemaphore"-abstraktionen, der fungerer som en indpakning over rw_semaphore C-strukturen.
  • For at bruge mmap er der tilføjet et nyt mm-modul og en VMA-abstraktion (en indpakning over vm_area_struct-strukturen).
  • GPIO PL061-driveren er blevet skiftet til at bruge makroen "dev_*!".
  • Der blev gennemført en generel oprydning af koden.

Kilde: opennet.ru

Tilføj en kommentar