Anden udgave af patches til Linux-kernen med støtte for Rust-sprog

Miguel Ojeda, autor af Rust-for-Linux-projektet, har foreslået en opdateret version af komponenterne til udvikling af enhedsdrivere i Rust-sprog til Linux-kerneudviklerne. Rust-support betragtes som eksperimentel, men er allerede godkendt til inclusion i linux-next-grenen. Den nye version har rettet de bemærkninger, der blev rejst under diskussionen af den første patch-version. Linus Torvalds har allerede deltaget i diskussionen og foreslået ændringer i logikken for nogle bit-operationer.

Det skal bemærkes, at de foreslåede ændringer giver mulighed for at bruge Rust som det andet sprog til udvikling af drivere og kerne-moduler. Rust-understøttelse præsenteres som en mulighed, der ikke er aktiveret som standard og ikke fører til, at Rust bliver en obligatorisk byggeafhængighed for kernen. Brug af Rust til driverudvikling vil gøre det muligt at skabe sikre og af højere kvalitet drivere med minimal indsats, fri for problemer som adgang til hukommelse efter frigivelse, dereferencering af nullpegepinde og buffer-overløb.

Sikker hukommelseshåndtering sikres i Rust under kompileringen gennem referencekontrol, overvågning af ejerskab af objekter og livscyklus (scope) af objekter, samt evaluering af korrekt hukommelsestilgang under kodeudførelse. Rust tilbyder også midler til beskyttelse mod heltalsoverskridelser, kræver obligatorisk initialisering af variabelværdier før brug, håndterer fejl bedre i standardbiblioteket, anvender konceptet med immutability (uændrede) referencer og variabler som standard, og tilbyder stærk statisk typekontrol for at minimere logiske fejl.

De mest markante ændringer i den nye patch-version:

  • Koden til hukommelsesfordeling er befriet for mulige 'panic'-tilstandsgenereringer ved fejl såsom hukommelsesmangel. Inkluderet er en variant af Rust-biblioteket alloc, hvor koden til fejlhåndtering er blevet revideret, men det endelige mål er at overføre alle nødvendige funktioner til kernens version af alloc (ændringerne er allerede forberedt og sendt til den standard Rust-bibliotek).
  • I stedet for natlige builds til kompilering af kernen med Rust-support kan man nu bruge betaversioner og stabile udgivelser af rustc-kompilatoren. I øjeblikket anvendes rustc 1.54-beta1 som referencekompilator, men efter udgivelsen af version 1.54 i slutningen af måneden, vil den blive den officielle reference.
  • Tilføjet support til at skrive tests med den indbyggede Rust-attribut "#[test]" og muligheden for at bruge doctests til at dokumentere tests.
  • Support for ARM32 og RISCV-arkitekturer er blevet tilføjet til de tidligere understøttede x86_64 og ARM64.
  • GCC Rust-implementeringerne (GCC-frontenden til Rust) og rustc_codegen_gcc (rustc-backenden til GCC) er blevet forbedret og består nu af alle basistests.
  • En ny abstraktionsniveau er blevet introduceret til brug i programmer skrevet i Rust for kernemekanismer skrevet i C, såsom røde-sorte træer, reference-tælende objekter, oprettelse af filbeskrivelser, opgaver, filer og ind-/uddata-vektorer.
  • I komponenterne til driverudvikling er understøttelsen af modulet "file_operations", makroen "module!" og registreringen af makroer og rudimentære drivere (probe og remove) forbedret.
  • I Binder er støtte til overførsel af filbeskrivelser og LSM-hooks blevet implementeret.
  • Et mere funktionelt eksempel på en driver i Rust — bcm2835-rng til den hardwarebaserede tilfældige talgenerator på Raspberry Pi-platforme.

Der nævnes også projekter fra nogle virksomheder relateret til brugen af Rust i kernen:

  • Microsoft har udtrykt interesse for at deltage i arbejdet med at integrere support for Rust i Linux-kernen og er klar til i de kommende måneder at levere implementeringer af drivere til Hyper-V i Rust.
  • ARM arbejder på at forbedre understøttelsen af Rust for systemer baseret på ARM-processorer. Projektet Rust har allerede fået forslag til ændringer, der opgraderer 64-bit ARM-systemer til det niveau af supporterende platforme (Tier-1).
  • Google leverer direkte support til projektet Rust for Linux, udvikler en ny implementering af mekanismen til interprocessuel kommunikation Binder i Rust og overvejer muligheden for at omskrive forskellige drivere til Rust. Gennem ISRG (Internet Security Research Group) har Google finansieret arbejdet med at integrere support for Rust i Linux-kernen.
  • IBM har implementeret support for Rust i kernen til PowerPC-systemer.
  • LSE (Systems Research Laboratory) har udviklet en SPI-driver i Rust.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster