Miguel Ojeda, forfatter av Rust-for-Linux-prosjektet, Teme avduket nylig det fjerde forslaget til enhetsdriverkomponenter Rust for Linux-kjerneutviklere å vurdere.
Ruststøtte regnes som eksperimentell, men det har allerede blitt avtalt å bli inkludert i linux-neste-grenen og er modent nok til å begynne å jobbe med abstraksjonslag på toppen av 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 å øke Internett-sikkerheten.
For de som fortsatt ikke er klar over de foreslåtte endringene, bør de vite at de gjør det mulig bruken av Rust som andrespråk for å utvikle kontrollere og moduler av kjernen. Rust-støtte presenteres som et alternativ som ikke er aktivert som standard og resulterer ikke i at Rust inkluderes blant de nødvendige byggeavhengighetene for kjernen.
Bruker Rust til å utvikle drivere vil tillate deg å lage bedre og sikrere drivere med minimal innsats, uten problemer som å få tilgang til et minneområde etter å ha frigjort det, å referere til null-pekere og bufferoverløp.
Minnesikkerhet er gitt i Rust på kompileringstidspunktet ved å sjekke referanser, spore objekteierskap og objektlevetid (omfang), samt ved å evaluere riktigheten av minnetilgang under utførelse av koden.
Rust gir også heltallsoverløpsbeskyttelse, krever at variabler initialiseres før bruk, håndterer feil i standardbiblioteket bedre, håndhever konseptet med uforanderlige variabler og referanser som standard, og tilbyr sterk statisk skriving for å minimere logiske feil.
Hva er endringene i den fjerde delen?
I denne nye versjonen av lappene som presenteres, nevnes det at kommentarene som ble gitt under diskusjonen av den første, andre og tredje utgaven av lappene fortsatte å bli eliminert.
Vi vil fortsette å oppdatere til vi ikke er avhengige av ustabile funksjoner;
da vil vi kanskje begynne å erklære en minimal versjon av Rust
støttes, slik det for eksempel gjøres for GCC og Clang.På samme måte migrerte vi til 2021-utgaven av Rust-språket.
Når det gjelder de andre endringene som ble gjort i denne nye versjonen, nevner kunngjøringen følgende:
- Overført til å bruke stabil Rust 1.58.0 som referansekompilatoren.
- Endringer som kreves for prosjektet, som ennå ikke er inkludert i hovedverktøysettet for Rust, inkluderer "-Zsymbol-mangling-version=v0"-flagget (forventet i Rust 1.59.0) og "maybe_uninit_extra"-modusen (forventet i Rust 1.60.0) .
- Automatiske kontroller for tilgjengelighet av Rustverktøy og deres egnethet er lagt til, og muligheten til å teste Ruststøtte på systemet er også utvidet.
- Nye abstraksjoner er foreslått for å kunne få tilgang til enhetsidentifikatortabellene ("IdArray" og "IdTable") fra Rust-koden.
- Lagt til lag for å ringe funksjoner som er relatert til timeren (klokkeramme).
- Plattformkontrollere er nå definert gjennom egenskapsimplementeringer.
- En ny makro er lagt til for å forenkle plattformdriverregistrering og en ny generisk drivermal er foreslått.
- Lagt til nye makroer for "dev_*" strukturer.
- Lagt til nye metoder "{read,write}*_relaxed" for IoMem-typen .
- Fjernet FileOpener-egenskapen for å forenkle filoperasjoner.
- Lagt til "ThisModule"-parameteren til antallet argumenter som ble sendt under kontrollerregistreringen.
- En typisk mal for å lage kjernemoduler i Rust-språket er foreslått.
Til slutt, hvis du er interessert i å vite mer om denne nye versjonen, kan du se detaljene I den følgende lenken.