Seks måneder etter utgivelsen av den andre versjonen, Miguel Ojeda, forfatter av Rust-for-Linux-prosjektet, gjort kjent forslaget om det tredje alternativet for utvikling av enhetsdrivere i Rust-språket i Linux-kjernen.
Ruststøtte betraktes som eksperimentell, men inkludering av den i Linux-neste gren er allerede avtalt. Utviklingen er finansiert av Google og organisasjonen ISRG (Internet Security Research Group), som er grunnleggeren av Let's Encrypt-prosjektet og bidrar til promotering av HTTPS og utvikling av teknologier for å forbedre Internett-sikkerheten.
Det bør huskes at de foreslåtte endringene gjør at Rust kan brukes som et andrespråk for å utvikle kjernedrivere og moduler.
Ruststøtte annonseres som et alternativ som ikke er aktivt som standard og det resulterer ikke i at Rust inkluderes i de nødvendige grunnleggende byggeavhengighetene. Å bruke Rust for driverutvikling vil tillate deg å lage bedre og sikrere drivere med minimal innsats, uten problemer med å få tilgang til et minneområde når det er frigjort, avreferere null-pekere og overskride buffergrenser.
Den nye versjonen av oppdateringene fortsetter å eliminere kommentarene som ble gitt under diskusjonen om den første og andre versjonen av oppdateringene og de mest bemerkelsesverdige endringene vi kan finne:
Overført til Rust 1.57 stabil versjon som referansekompilator og binding til den stabiliserte utgaven av språket Rust 2021. Overgangen til Rust 2021 p-spesifikasjonen er sikretlov til å begynne å jobbe for å unngå å bruke slike ustabile funksjoner i patcher som const_fn_transmute, const_panic, const_unreachable_unchecked og core_panic og try_reserve.
Det skiller seg også ut at utviklingen av alloc-versjonen har fortsatt fra Rust-biblioteket, i den nye versjonen, alternativene "no_rc" og "no_sync" er implementert for å deaktivere funksjonaliteten som ikke brukes i Rust-kode for kjernen, noe som gjør biblioteket mer modulært. Vi fortsetter å jobbe med hovedallokutviklerne for å bringe de nødvendige kjerneendringene til hovedbiblioteket. Alternativet "no_fp_fmt_parse", som kreves for at biblioteket skal fungere på kjernenivå, har blitt flyttet til Rust sitt basisbibliotek (kjerne).
Koden ryddet opp for å fjerne mulige kompilatoradvarsler når du kompilerer kjernen i CONFIG_WERROR-modus. Når koden opprettes i Rust, er flere diagnostiske kompilatormoduser og Clippy linter-advarsler inkludert.
De foreslo abstraksjoner for å bruke seqlocks (sekvenslåser), tilbakeringing for strømstyring, minne I/O (readX / writeX), avbrudds- og trådbehandlere, GPIO, enhetstilgang, drivere og legitimasjon i rustkode.
Verktøy for driverutvikling har blitt utvidet med bruk av flyttbare mutexes, bit-iteratorer, forenklede bindinger over pekere, forbedret feildiagnostikk og databussuavhengig infrastruktur.
Arbeid med lenker er forbedret ved å bruke Ref-typen forenklet, basert på refcount_t backend, som bruker den sentrale APIen med samme navn for å telle referanser. Støtte for Arc- og Rc-typene gitt i standard kartleggingsbibliotek er fjernet og er ikke tilgjengelig i kode utført på kjernenivå (for selve biblioteket er det utarbeidet alternativer for å deaktivere disse typene).
En versjon av PL061 GPIO-driveren, omskrevet i Rust, er lagt til oppdateringene. En funksjon ved driveren er at dens nesten linje-for-linje-implementering gjentar den eksisterende C GPIO-driveren. For utviklere som ønsker å bli kjent med bygningskontrollere i Rust, er det utarbeidet en linje-for-linje sammenligning, som hjelper til med å forstå hva som bygger i Rust C-koden har blitt.
Rusts hovedkodebase tar i bruk rustc_codegen_gcc, en rustc-backend for GCC som implementerer AOT-kompilering ved å bruke libgccjit-biblioteket. Med riktig utvikling av backend, vil det tillate deg å samle Rust-koden involvert i kjernen ved å bruke GCC.
I tillegg til ARM, Google og Microsoft, har Red Hat uttrykt interesse for å bruke Rust i Linux-kjernen.
Til slutt, hvis du er interessert i å vite mer om det, kan du se detaljene I den følgende lenken.