Miguel Ojeda, autor projektu Rust-for-Linux, navrhol vývojárom jadra Linux štvrtú verziu komponentov na vývoj ovládačov zariadení v jazyku Rust. Podpora Rust sa považuje za experimentálnu, no už je schválená na zaradenie do vetvy linux-next a je dostatočne rozvinutá na to, aby sa mohlo začať s prácou na vytváraní vrstiev abstrakcie nad subsystémami jadra, ako aj na písaní ovládačov a modulov. Vývoj je financovaný spoločnosťou Google a organizáciou ISRG (Internet Security Research Group), ktorá je zakladateľom projektu Let’s Encrypt a prispieva k podpore HTTPS a rozvoju technológií na zvýšenie bezpečnosti internetu.
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.
V novej verzii patchov pokračuje odstraňovanie pripomienok, ktoré boli vznesené počas diskusie prvej, druhej a tretej verzie patchov. V novej verzii:
- Prešlo sa na používanie stabilného vydania Rust 1.58.0 ako referenčného kompilátora. Z potrebných zmien pre projekt, ktoré zatiaľ nie sú zahrnuté v hlavnom súbore nástrojov Rust, sa spomína príznak "-Zsymbol-mangling-version=v0" (očakáva sa v Rust 1.59.0) a režim "maybe_uninit_extra" (očakáva sa v Rust 1.60.0).
- Pridané automatické kontroly prítomnosti vhodného nástroja Rust a rozšírené možnosti testovania podpory Rust v systéme.
- Navrhnuté nové abstrakcie na prístup z kódu v jazyku Rust k tabuľkám identifikátorov zariadení ("IdArray" a "IdTable").
- Pridané vrstvy na volanie funkcií súvisiacich s časovačom (clock framework).
- Ovládače pre platformy sú teraz definované prostredníctvom implementácie typov.
- Pridaný nový makro pre zjednodušenie registrácie ovládačov platforiem a navrhnutý nový šablónový ovládač.
- Pridané makrá pre štruktúry "dev_*".
- Pridané metódy "{read,write}*_relaxed" pre typ IoMem.
- Odstránená vlastnosť FileOpener pre zjednodušenie operácií s súbormi.
- Do počtu argumentov, ktoré sa prenášajú pri registrácii ovládača, bol pridaný parameter "ThisModule".
- Navrhnutý šablónový typ pre vytváranie jadrových modulov v jazyku Rust.
Zdroj: opennet.ru
