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

Miguel Ojeda, forfatter til Rust-for-Linux-projektet, foreslog en opdateret 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 optagelse i linux-next-grenen. Den nye version eliminerer kommentarerne under diskussionen af ​​den første version af patches. Linus Torvalds har allerede tilsluttet sig diskussionen og foreslået at ændre logikken for behandling af nogle bit-operationer.

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.

De mest bemærkelsesværdige ændringer i den nye version af patches:

  • Hukommelsestildelingskoden frigøres fra potentielt at generere en "panik"-tilstand, når der opstår fejl, såsom manglende hukommelse. En variant af Rust alloc-biblioteket er inkluderet, som omarbejder koden for at håndtere fejl, men det ultimative mål er at overføre alle de funktioner, der er nødvendige for kernen til hovedudgaven af ​​alloc (ændringerne er allerede blevet forberedt og overført til standarden Rust bibliotek).
  • I stedet for natlige builds kan du nu bruge beta-udgivelser og stabile udgivelser af rustc-kompileren til at kompilere en kerne med Rust-understøttelse. I øjeblikket bruges rustc 1.54-beta1 som referencekompiler, men efter at 1.54-udgivelsen er frigivet i slutningen af ​​måneden, vil den blive understøttet som referencekompiler.
  • Tilføjet understøttelse til at skrive test ved hjælp af standard "#[test]" attributten for Rust og muligheden for at bruge doctests til at dokumentere test.
  • Tilføjet understøttelse af ARM32- og RISCV-arkitekturer ud over tidligere understøttede x86_64 og ARM64.
  • Forbedrede implementeringer af GCC Rust (GCC frontend for Rust) og rustc_codegen_gcc (rustc backend for GCC), som nu består alle grundlæggende tests.
  • Et nyt abstraktionsniveau foreslås til brug i Rust-programmer af kernemekanismer skrevet i C, såsom rød-sorte træer, referencetællede objekter, oprettelse af filbeskrivelser, opgaver, filer og I/O-vektorer.
  • Driverudviklingskomponenter har forbedret understøttelse af file_operations-modulet, modulet!-makroen, makroregistrering og rudimentære drivere (probe og fjerne).
  • Binder understøtter nu videregivelse af filbeskrivelser og LSM-kroge.
  • Der foreslås et mere funktionelt eksempel på en Rust-driver - bcm2835-rng til hardwaregeneratoren til tilfældige tal på Raspberry Pi-kort.

Derudover er nogle virksomheders projekter relateret til brugen af ​​Rust i kernen nævnt:

  • Microsoft har udtrykt interesse for at deltage i arbejdet med at integrere Rust-understøttelse i Linux-kernen og er klar til at levere driverimplementeringer til Hyper-V på Rust i de kommende måneder.
  • ARM arbejder på at forbedre rustunderstøttelse af ARM-baserede systemer. Rust-projektet har allerede foreslået ændringer, der ville gøre 64-bit ARM-systemer til en Tier 1-platform.
  • Google yder direkte support til Rust for Linux-projektet, udvikler en ny implementering af Binder-interproceskommunikationsmekanismen i Rust og overvejer muligheden for at omarbejde forskellige drivere i Rust. Gennem ISRG (Internet Security Research Group) gav Google finansiering til arbejdet med at integrere Rust-support i Linux-kernen.
  • IBM har implementeret kerneunderstøttelse af Rust til PowerPC-systemer.
  • Laboratoriet LSE (Systems Research Laboratory) har udviklet en SPI-driver i Rust.

Kilde: opennet.ru

Tilføj en kommentar