Druhá edícia záplat pre jadro Linux s podporou jazyka Rust

Miguel Ojeda, autor projektu Rust-for-Linux, navrhol pre zvažovanie vývojármi jadra Linux aktualizovanú verziu komponentov pre vývoj zariadení ovládačov v jazyku Rust. Podpora Rust sa považuje za experimentálnu, ale už bola súhlasne zapracovaná do vetvy linux-next. V novom variante boli odstránené pripomienky, ktoré boli vznesené počas diskusie prvej verzie patchov. Linus Torvalds sa už zapojil do diskusie a navrhol zmeniť logiku spracovania niektorých bitových operácií.

Pripomeňme, že navrhované zmeny umožňujú používať Rust ako druhý jazyk na vývoj ovládačov a modulov jadra. Podpora Rust sa prezentuje ako možnosť, ktorá nie je predvolene aktívna a nevedie k zaradeniu Rustu medzi povinné zostavovacie závislosti jadra. Použitie Rustu na vývoj ovládačov umožní s minimálnym úsilím vytvárať bezpečné a kvalitnejšie ovládače, zbavené takých problémov ako je prístup do pamäte po jej uvoľnení, dereferencovanie nulových ukazovateľov a pretečenie vyrovnávacej pamäte.

Bezpečná práca s pamäťou je v Rust zabezpečená počas kompilácie prostredníctvom overovania referencií, sledovania vlastníctva objektov a zohľadnenia životnosti objektov (oblasti viditeľnosti), ako aj prostredníctvom hodnotenia správnosti prístupu k pamäti počas vykonávania kódu. Rust tiež poskytuje prostriedky na ochranu pred pretečením celočíselných hodnôt, vyžaduje povinnú inicializáciu hodnôt premenných pred ich použitím, lepšie spracováva chyby v štandardnej knižnici, aplikuje koncept nemennosti (immutable) odkazov a premenných ako predvolených a ponúka silnú statickú typizáciu na minimalizáciu logických chýb.

Najvýraznejšie zmeny v novej verzii patchov:

  • Kód na distribúciu pamäte bol zbavený možných generácií stavu «panic» pri výskyte chýb, ako je nedostatok pamäte. Do súpravy bol zahrnutý variant Rust-knižnice alloc, v ktorej bol prepracovaný kód na spracovanie chýb, ale konečným cieľom je preniesť do hlavnej editácie alloc všetky možnosti potrebné pre jadro (zmeny už boli pripravené a posunuté do základnej knižnice Rust).
  • Namiesto nočných zostavení na kompiláciu jadra s podporou Rust je teraz možné používať beta verzie a stabilné vydania kompilátora rustc. V súčasnosti sa ako referenčný kompilátor používa rustc 1.54-beta1, ale po vydaní verzie 1.54 na konci mesiaca, sa ako referenčný bude podporovať práve on.
  • Pridaná podpora písania testov s použitím štandardného atribútu Rust „#[test]“ a možnosť aplikovania doctests na dokumentovanie testov.
  • Pridaná podpora architektúr ARM32 a RISCV okrem predtým podporovaných x86_64 a ARM64.
  • Vylepšené implementácie GCC Rust (GCC frontendu pre Rust) a rustc_codegen_gcc (backend rustc pre GCC), ktorý teraz prechádza všetkými základnými testami.
  • Navrhnutá nová úroveň abstrakcie na použitie v programoch v jazyku Rust mechanizmov jadra, napísaných v jazyku C, ako sú červeno-čierne stromy, objekty s počítaním odkazov, vytváranie súborových deskriptorov, úlohy, súbory a vektory vstupu/výstupu.
  • V komponentoch pre vývoj ovládačov bola vylepšená podpora modulu „file_operations“, makra „module!“, registrácia makier a rudimentárnych ovládačov (probe a remove).
  • V Binder bola implementovaná podpora prenosu súborových deskriptorov a LSM hookov.
  • Bol funkčný príklad ovládača v Rust — bcm2835-rng pre hardvérový generátor náhodných čísel na doskách Raspberry Pi.

Ďalej sú spomenuté projekty niektorých spoločností, ktoré súvisia s použitím Rust v jadre:

  • Spoločnosť Microsoft vyjadrila záujem zapojiť sa do práce na integrácii podpory Rust v jadre Linux a je pripravená v najbližších mesiacoch poskytnúť realizácie ovládačov pre Hyper-V v Rust.
  • Spoločnosť ARM pracuje na zlepšení podpory Rust pre systémy založené na procesoroch ARM. Projektu Rust už boli navrhnuté zmeny, ktoré prevedú 64-bitové systémy ARM medzi platformy prvej úrovne podpory (Tier-1).
  • Spoločnosť Google priamo zabezpečuje podporu projektu Rust for Linux, vyvíja novú implementáciu mechanizmu medzi procesovým interakciou Binder v Rust a zvažuje prepracovanie rôznych ovládačov do Rust. Prostredníctvom ISRG (Internet Security Research Group) spoločnosť Google zabezpečila financovanie práce na integrácii podpory Rust do jadra Linux.
  • Spoločnosť IBM implementovala podporu Rust v jadre pre systémy PowerPC.
  • Laboratórium LSE (Systems Research Laboratory) vyvinulo SPI-ovládač v Rust.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster