Andre utgave av patcher for Linux-kjernen med støtte for Rust-språket

Miguel Ojeda, forfatter av Rust-for-Linux-prosjektet, foreslo en oppdatert versjon av komponenter for utvikling av enhetsdrivere på Rust-språket for vurdering av Linux-kjerneutviklere. Ruststøtte regnes som eksperimentell, men er allerede avtalt for inkludering i linux-neste gren. Den nye versjonen eliminerer kommentarene som ble gitt under diskusjonen om den første versjonen av oppdateringene. Linus Torvalds har allerede sluttet seg til diskusjonen og foreslått å endre logikken for behandling av enkelte bitoperasjoner.

Husk at de foreslåtte endringene gjør det mulig å bruke Rust som andrespråk for utvikling av drivere og kjernemoduler. Rust-støtte presenteres som et alternativ som ikke er aktivert som standard og resulterer ikke i at Rust inkluderes som en nødvendig byggeavhengighet for kjernen. Å bruke Rust for driverutvikling vil tillate deg å lage tryggere og bedre drivere med minimal innsats, fri for problemer som minnetilgang etter frigjøring, null-pekereferanser og bufferoverskridelser.

Rust håndhever minnesikkerhet ved kompilering gjennom referansesjekking, objekteierskap og objektlevetidssporing (scopes), og ved å evaluere riktigheten av minnetilganger under kjøring. Rust gir også beskyttelse mot heltallsoverløp, krever at variabelverdier initialiseres før bruk, har bedre feilhåndtering i standardbiblioteket, bruker konseptet med uforanderlige referanser og variabler som standard, og tilbyr sterk statisk skriving for å minimere logiske feil.

De mest merkbare endringene i den nye versjonen av oppdateringene:

  • Minnetildelingskoden frigjøres fra potensielt å generere en "panikk"-tilstand når feil som for eksempel tom minne oppstår. En variant av Rust alloc-biblioteket er inkludert, som omarbeider koden for å håndtere feil, men det endelige målet er å overføre alle funksjonene som trengs for kjernen til hovedutgaven av alloc (endringene er allerede forberedt og overført til standarden Rust bibliotek).
  • I stedet for nattlig bygg, kan du nå bruke beta-utgivelser og stabile utgivelser av rustc-kompilatoren for å kompilere en kjerne med Rust-støtte. For øyeblikket brukes rustc 1.54-beta1 som referansekompilatoren, men etter at 1.54-utgivelsen er utgitt i slutten av måneden, vil den bli støttet som referansekompilatoren.
  • Lagt til støtte for å skrive tester ved å bruke standard "#[test]"-attributtet for Rust og muligheten til å bruke doctests for å dokumentere tester.
  • Lagt til støtte for ARM32- og RISCV-arkitekturer i tillegg til tidligere støttede x86_64 og ARM64.
  • Forbedrede implementeringer av GCC Rust (GCC frontend for Rust) og rustc_codegen_gcc (rustc backend for GCC), som nå består alle grunnleggende tester.
  • Et nytt abstraksjonsnivå er foreslått for bruk i Rust-programmer av kjernemekanismer skrevet i C, slik som rød-svarte trær, referansetelte objekter, opprettelse av filbeskrivelser, oppgaver, filer og I/O-vektorer.
  • Driverutviklingskomponenter har forbedret støtte for file_operations-modulen, modulen!-makroen, makroregistrering og rudimentære drivere (probe og fjerne).
  • Binder støtter nå overføring av filbeskrivelser og LSM-kroker.
  • Et mer funksjonelt eksempel på en Rust-driver er foreslått - bcm2835-rng for maskinvaren tilfeldig tallgenerator til Raspberry Pi-kort.

I tillegg er noen selskapers prosjekter knyttet til bruken av Rust i kjernen nevnt:

  • Microsoft har uttrykt interesse for å delta i arbeidet med å integrere Rust-støtte i Linux-kjernen og er klar til å tilby driverimplementeringer for Hyper-V på Rust i løpet av de kommende månedene.
  • ARM jobber med å forbedre ruststøtte for ARM-baserte systemer. Rust-prosjektet har allerede foreslått endringer som vil gjøre 64-biters ARM-systemer til en Tier 1-plattform.
  • Google gir direkte støtte for Rust for Linux-prosjektet, utvikler en ny implementering av Binder interprosess kommunikasjonsmekanisme i Rust, og vurderer muligheten for å omarbeide ulike drivere i Rust. Gjennom ISRG (Internet Security Research Group) ga Google midler til arbeidet med å integrere Rust-støtte i Linux-kjernen.
  • IBM har implementert kjernestøtte for Rust for PowerPC-systemer.
  • Laboratoriet LSE (Systems Research Laboratory) har utviklet en SPI-driver i Rust.

Kilde: opennet.ru

Legg til en kommentar