I løpet av de siste månedene Linux-utviklere har kranglet muligheten for tillate bruk av Rust-språket for å skrive nye enhetsdrivere for kjernen.
I fjor utviklet Linux-kjernen de ser ut til å ha kommet til enighet om saken, Rust-tilhengere har sitert arbeid som viser at omtrent to tredjedeler av kjernesårbarheter tildelt CVE-er i Android og Ubuntu er relatert til minnesikkerhetsproblemer.
Etter denne uttalelsen sa Linus Torvalds, programvareingeniør, hovedskaper og utvikler av Linux-kjernen, i et intervju at diskusjoner om emnet ville være langt viktigere enn et langt Google-innlegg om språket.
På spørsmål om forslaget om å bruke Rust, indikerte han at "Løsningen her er enkel: bare bruk C ++ i stedet for Rust."
Etter det i mars ble den første støtten lanserte som tillot Rust-driverne å bli plassert i Linux-Next-treet for videre testing før de eventuelt ble inkludert i hovedkjernen.
Rett bak den var en "forespørsel om kommentar" gitt ut på nytt på kjernens e-postliste om rustkodeperspektivet for Linux-kjernen.
Miguel OjedaLinux-kjerneutvikler startet et forslag om forespørsel om kommentarer (RFC) på Linux-kjernens e-postliste.
Postlisteinnlegget skisserte troen til utviklere involvert i å legge til Rust-kode til kjernen, fordeler som forbedret minnesikkerhet og mer.
«Noen av dere har lagt merke til de siste ukene og månedene at det blir gjort et seriøst forsøk på å bringe et andrespråk til kjernen. Vi er endelig der, med en RFC som legger til Rust-støtte til Linux-kjernen, sa Miguel Ojeja. "Vi vet at det er enorme kostnader og risiko forbundet med å introdusere et nytt språk til kjernen," la han til.
Rust for Linux-prosjektteamet flyttet fra Rust beta-kompilatoren til å bruke stabile utgivelser, migrerer hver gang en ny versjon utgis.
"Vi vil gjerne takke Rust for å samarbeide med oss om disse alternativene slik at kjernen kan bruke dem," sa Miguel.
Når du oppdaterer kompilatoren, teamet klarte å fjerne noen ustabile funksjoner fra listen: const_fn_transmute, const_panic, const_unreachable_unchecked, core_panic og try_reserve.
I tillegg til dette fremheves det at noen modulariseringsalternativer er lagt til mer å tildele for å deaktivere noen unødvendige funksjoner: no_rc og no_sync.
Upstream, for at kjernebrukssaken skal være godt støttet, eller mer presist "miksen" av alternativer kjernen trenger, har Upstream core også lagt til no_fp_fmt_parse.
På den annen side muliggjorde Rust en serie tilleggsdiagnostikk for Rust and Clippy-kompilatoren. En forskjell fra C er at rustdiagnostikk er litt lettere å deaktivere i kode, som er strengere i det generelle tilfellet.
Også abstraksjoner og driveroppdateringer er implementert. Teamet la til abstraksjoner for strømlåser, tilbakeringing av strømstyring, io-minne (readX / writeX), irq-brikker og strømbehandlere på høyt nivå, gpio-brikker (inkludert irq-brikker), periferiutstyr, amba-periferiutstyr og drivere.
Støtten til kontrolleren er forbedret med en bussuavhengig infrastruktur, Gjenkallbare objekter, tilbakekallbare mutexes, effektive bit-iteratorer, bedre panikkdiagnostikk og forenklet pekerinnpakning. I tillegg forbedret og forenklet den Ref-objekter (kompatibel med refcount_t) og erstattet alle Rust-forekomster.
Og en ny driver for gpio PL061-enheter har blitt implementert og sendt som RFC-oppdatering.
Til slutt skal det bemerkes at Ruststøtte anses fortsatt som eksperimentell. Men støtten er god nok til at kjerneutviklere begynner å jobbe i Rustabstraksjoner for skriveundersystemer og kontrollere og andre moduler. Den nåværende serien har nettopp kommet på Linux-next, så den første kjøringen vil finne sted denne uken.
Fuente: https://lkml.org/lkml