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
