Druga izdaja popravkov za jedro Linuxa s podporo za jezik Rust

Miguel Ojeda, avtor projekta Rust-for-Linux, je predlagal posodobljeno različico komponent za razvoj gonilnikov naprav v jeziku Rust, ki naj bi jih obravnavali razvijalci jedra Linuxa. Podpora za Rust velja za eksperimentalno, vendar je že dogovorjeno, da se vključi v vejo linux-next. Nova različica odpravlja pripombe med razpravo o prvi različici popravkov. Linus Torvalds se je že pridružil razpravi in ​​predlagal spremembo logike obdelave nekaterih bitnih operacij.

Spomnimo se, da predlagane spremembe omogočajo uporabo Rusta kot drugega jezika za razvoj gonilnikov in modulov jedra. Podpora za Rust je predstavljena kot možnost, ki privzeto ni omogočena in ne povzroči vključitve Rusta kot obvezne odvisnosti gradnje za jedro. Uporaba Rusta za razvoj gonilnikov vam bo omogočila ustvarjanje varnejših in boljših gonilnikov z minimalnim naporom, brez težav, kot so dostop do pomnilnika po sprostitvi, dereferenciranje ničelnega kazalca in prekoračitev medpomnilnika.

Varno ravnanje s pomnilnikom je v Rustu zagotovljeno v času prevajanja s preverjanjem sklicevanj, spremljanjem lastništva objekta in življenjske dobe (obsega) objekta ter z vrednotenjem pravilnosti dostopa do pomnilnika med izvajanjem kode. Rust zagotavlja tudi zaščito pred celoštevilskimi prelivi, zahteva obvezno inicializacijo vrednosti spremenljivk pred uporabo, bolje obravnava napake v standardni knjižnici, privzeto uporablja koncept nespremenljivih referenc in spremenljivk, ponuja močno statično tipkanje za zmanjšanje logičnih napak.

Najbolj opazne spremembe v novi različici popravkov:

  • Koda za dodelitev pomnilnika je osvobojena potencialnega generiranja stanja "panike", ko pride do napak, kot je pomanjkanje pomnilnika. Vključena je različica knjižnice Rust alloc, ki predeluje kodo za obvladovanje napak, vendar je končni cilj prenos vseh funkcij, potrebnih za jedro, v glavno izdajo alloc (spremembe so že pripravljene in prenesene v standard knjižnica Rust).
  • Namesto nočnih gradenj lahko zdaj uporabite izdaje beta in stabilne izdaje prevajalnika rustc za prevajanje jedra s podporo za Rust. Trenutno se kot referenčni prevajalnik uporablja rustc 1.54-beta1, vendar bo po izdaji izdaje 1.54 ob koncu meseca podprt kot referenčni prevajalnik.
  • Dodana podpora za pisanje testov z uporabo standardnega atributa »#[test]« za Rust in možnost uporabe doctestov za dokumentiranje testov.
  • Dodana podpora za arhitekturi ARM32 in RISCV poleg predhodno podprtih x86_64 in ARM64.
  • Izboljšane izvedbe GCC Rust (GCC frontend za Rust) in rustc_codegen_gcc (rustc backend za GCC), ki zdaj prestane vse osnovne teste.
  • Predlagana je nova raven abstrakcije za uporabo v programih Rust mehanizmov jedra, napisanih v C, kot so rdeče-črna drevesa, objekti s štetjem referenc, ustvarjanje deskriptorjev datotek, opravil, datotek in V/I vektorjev.
  • Komponente za razvoj gonilnikov imajo izboljšano podporo za modul file_operations, makro module!, registracijo makrov in osnovne gonilnike (preverjanje in odstranjevanje).
  • Binder zdaj podpira podajanje deskriptorjev datotek in kavljev LSM.
  • Predlaga se bolj funkcionalen primer gonilnika Rust - bcm2835-rng za strojni generator naključnih števil plošč Raspberry Pi.

Poleg tega so omenjeni nekateri projekti podjetij, povezani z uporabo Rust v jedru:

  • Microsoft je izrazil zanimanje za sodelovanje pri integraciji podpore za Rust v jedro Linuxa in je pripravljen v prihodnjih mesecih zagotoviti implementacije gonilnikov za Hyper-V na Rust.
  • ARM si prizadeva izboljšati podporo za Rust za sisteme, ki temeljijo na ARM. Projekt Rust je že predlagal spremembe, zaradi katerih bi 64-bitni sistemi ARM postali platforma Tier 1.
  • Google neposredno zagotavlja podporo za projekt Rust for Linux, razvija novo implementacijo medprocesnega komunikacijskega mehanizma Binder v Rustu in razmišlja o možnosti predelave različnih gonilnikov v Rustu. Prek ISRG (Internet Security Research Group) je Google zagotovil sredstva za delo pri integraciji podpore za Rust v jedro Linuxa.
  • IBM je implementiral podporo za jedro za Rust za sisteme PowerPC.
  • Laboratorij LSE (Systems Research Laboratory) je razvil gonilnik SPI v Rustu.

Vir: opennet.ru

Dodaj komentar