Ny versjon av patcher for Linux-kjernen med støtte for Rust-språket

Miguel Ojeda, forfatter av Rust-for-Linux-prosjektet, foreslo utgivelsen av v5-komponenter for utvikling av enhetsdrivere i Rust-språket for vurdering av Linux-kjerneutviklere. Dette er den sjette utgaven av oppdateringene, tatt i betraktning den første versjonen, publisert uten et versjonsnummer. Ruststøtte regnes som eksperimentell, men er allerede inkludert i linux-next-grenen og er tilstrekkelig utviklet 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, tredje, fjerde og femte utgaven av oppdateringene. I den nye versjonen:

  • Verktøysettet har blitt oppdatert for å gi ut Rust 1.59.0. En variant av alloc-biblioteket er også synkronisert med den nye versjonen av Rust, og eliminerer mulig generering av en "panikk"-tilstand når feil oppstår, for eksempel tomt for minne. Muligheten til å bruke assembler-innlegg ("feature(global_asm)") er stabilisert.
  • Lagt til støtte for å lage vertsprogrammer i Rust som brukes under kjernekompilering.
  • I stedet for å levere forhåndsgenererte målplattformspesifikasjonsfiler, genereres de dynamisk basert på kjernekonfigurasjon.
  • Lagt til HAVE_RUST kjerneparameter for å aktivere for arkitekturer som støtter Rust.
  • Abstraksjoner er foreslått for bruk i Rust-kode for en maskinvare-pseudo-tilfeldig tallgenerator.
  • Tillot bruk av feilkoder uten "Error::"-prefikset (for eksempel "return Err(EINVAL)") for å tilnærme håndteringen av feilkoder i C.
  • Lagt til "CString"-type for egendefinerte C-strenger. Formater- og buffertypene er kombinert.
  • Lagt til Bool og LockInfo-typer.
  • Implementeringen av spinnlåser er forenklet.

Kilde: opennet.ru

Legg til en kommentar