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

Miguel Ojeda, forfatter av Rust-for-Linux-prosjektet, foreslo en fjerde versjon av komponenter for utvikling av enhetsdrivere på Rust-språket for vurdering av Linux-kjerneutviklere. Ruststøtte betraktes som eksperimentell, men er allerede avtalt for inkludering i linux-next-grenen og er moden nok til å begynne arbeidet med å lage abstraksjonslag over kjerneundersystemer, samt skrive drivere og moduler. Utviklingen er finansiert av Google og ISRG (Internet Security Research Group), som er grunnleggeren av Let's Encrypt-prosjektet og fremmer HTTPS og utvikling av teknologier for å forbedre Internett-sikkerheten.

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.

Den nye versjonen av oppdateringene fortsetter å eliminere kommentarene som ble gitt under diskusjonen om den første, andre og tredje utgaven av oppdateringene. I den nye versjonen:

  • Overgangen til å bruke den stabile utgaven av Rust 1.58.0 som referansekompilatoren er gjort. Blant endringene som er nødvendige for prosjektet, som ennå ikke er inkludert i Rust-hovedverktøysettet, "-Zsymbol-mangling-version=v0"-flagget (forventet i Rust 1.59.0) og "maybe_uninit_extra"-modusen (forventet i Rust 1.60.0) .XNUMX) er notert.
  • Lagt til automatiske kontroller for tilgjengeligheten av passende rustverktøy og utvidet muligheten til å teste ruststøtte i systemet.
  • Nye abstraksjoner er foreslått for å få tilgang til enhetsidentifikatortabeller ("IdArray" og "IdTable") fra Rust-kode.
  • Lagt til lag for tilgang til timerrelaterte funksjoner (klokkerammeverk).
  • Plattformdrivere er nå definert gjennom egenskapsimplementeringer.
  • En ny makro er lagt til for å forenkle registreringen av plattformdrivere, og en ny generisk drivermal er foreslått.
  • Lagt til makroer for "dev_*" strukturer.
  • Lagt til "{read,write}*_relaxed"-metoder for IoMem-typen .
  • Fjernet FileOpener-egenskapen for å forenkle filoperasjoner.
  • "ThisModule"-parameteren er lagt til argumentene som ble sendt ved registrering av en driver.
  • En standard mal for å lage kjernemoduler i Rust-språket er foreslått.

Kilde: opennet.ru

Legg til en kommentar