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

Miguel Ojeda, forfatteren av Rust-for-Linux-prosjektet, foreslo en femte versjon av komponenter for utvikling av enhetsdrivere på Rust-språket for vurdering av Linux-kjerneutviklere. 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 sikkerheten til Internett.

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 og fjerde utgaven av oppdateringene. I den nye versjonen:

  • Komponenttesting for Rust-støtte er lagt til det kontinuerlige integrasjonssystemet basert på den Intel-støttede boten 0DAY/LKP og publisering av testrapporter har begynt. Vi forbereder å integrere Rust-støtte i KernelCI automatiserte testsystem. Testing basert på GitHub CI har blitt overført til bruk av containere.
  • Rustkjernemoduler frigjøres fra behovet for å definere kasseattributtene "#![no_std]" og "#![feature(...)]".
  • Lagt til støtte for enkeltmonteringsmål (.o, .s, .ll og .i).
  • Koderetningslinjer definerer regler for å skille kommentarer (“//”) og dokumentere kode (“///”).
  • Skriptet is_rust_module.sh har blitt omarbeidet.
  • Lagt til støtte for statiske (global delte variabel) synkroniseringsprimitiver basert på "CONFIG_CONSTRUCTORS"-implementeringen.
  • Låshåndtering er forenklet: Guard og GuardMut er kombinert og én parameterisert type.
  • Det er mulig å definere tilleggsparametere ved registrering av enheter.
  • Lagt til "RwSemaphore" abstraksjonen, som fungerer som en innpakning over rw_semaphore C-strukturen.
  • For å bruke mmap er det lagt til en ny mm-modul og en VMA-abstraksjon (en innpakning over vm_area_struct-strukturen).
  • GPIO PL061-driveren har blitt byttet til å bruke "dev_*!"-makroen.
  • En generell opprydding av koden ble utført.

Kilde: opennet.ru

Legg til en kommentar