Druhá revize patchů pro Linuxové jádro s podporou jazyka Rust

Miguel Ojeda, autor projektu Rust-for-Linux, navrhl pro vývojáře Linuxového jádra aktualizovanou verzi komponent pro vývoj ovladačů zařízení v jazyce Rust. Podpora Rustu je považována za experimentální, ale již byla schválena pro zahrnutí do větve linux-next. V nové verzi byly odstraněny poznámky vznesené během diskuse o první verzi patchů. Linus Torvalds se již zapojil do diskuse a navrhl změnit logiku zpracování některých bitových operací.

Připomínáme, že navržené změny umožňují používat Rust jako druhý jazyk pro vývoj ovladačů a modulů jádra. Podpora Rustu je zvažována jako volba, která není aktivní ve výchozím nastavení a nevede k zahrnutí Rustu mezi povinné závislosti při sestavení jádra. Použití Rustu pro vývoj ovladačů umožní s minimálními námahou vytvářet bezpečné a kvalitnější ovladače, zbavené problémů, jako je přístup k oblasti paměti po jejím uvolnění, dereference nulových ukazatelů a překročení hranic bufferu.

Bezpečná práce s pamětí je zajištěna v Rustu během kompilace prostřednictvím kontroly odkazů, sledování vlastnictví objektů a zohlednění doby života objektů (oblastí viditelnosti), stejně jako hodnocením správnosti přístupu k paměti během vykonávání kódu. Rust také poskytuje prostředky k ochraně před přetečením celočíselných hodnot, vyžaduje povinnou inicializaci hodnot proměnných před použitím, lépe zpracovává chyby ve standardní knihovně, aplikuje koncept neměnnosti (immutable) odkazů a proměnných ve výchozím nastavení, a nabízí silnou statickou typizaci pro minimalizaci logických chyb.

Nejvýraznější změny v nové verzi patchů:

  • Kód pro správu paměti byl zbaven možných generací stavu „panic“ při výskytu chyb, jako je nedostatek paměti. Byla přidána varianta Rust knihovny alloc, ve které byl přepsán kód pro zpracování chyb, ale konečným cílem je převést do hlavní edice alloc všechny funkce potřebné pro jádro (změny byly již připraveny a předány do základní knihovny Rust).
  • Místo nočních sestavení pro kompilaci jádra s podporou Rustu je nyní možné používat beta verze a stabilní vydání kompilátoru rustc. V současnosti je jako referenční kompilátor používán rustc 1.54-beta1, ale po vydání verze 1.54 na konci měsíce bude jako referenční podporován právě tento kompilátor.
  • Byla přidána podpora pro psaní testů pomocí standardního atributu „#[test]“ pro Rust a možnost použití doctests pro dokumentaci testů.
  • Byla přidána podpora architektur ARM32 a RISCV kromě dříve podporovaných x86_64 a ARM64.
  • Byly vylepšeny implementace GCC Rust (GCC frontend pro Rust) a rustc_codegen_gcc (backend rustc pro GCC), který nyní prochází všemi základními testy.
  • Byla navržena nová úroveň abstrakce pro použití mechanismů jádra psaných v jazyce C v programech v jazyce Rust, jako jsou červeno-černé stromy, objekty s počítáním referencí, vytváření souborových deskriptorů, úlohy, soubory a vstupně/výstupní vektory.
  • V komponentách pro vývoj ovladačů byla zlepšena podpora modulu „file_operations“, makra „module!“, registrace maker a základních ovladačů (probe a remove).
  • V Binderu byla implementována podpora pro předávání souborových deskriptorů a LSM-hooků.
  • Byl navržen funkčnější příklad ovladače v Rustu — bcm2835-rng pro hardwarový generátor náhodných čísel desek Raspberry Pi.

Dále jsou zmíněny projekty některých společností, související s využitím Rustu v jádře:

  • Společnost Microsoft projevila zájem o účast na integraci podpory Rustu do jádra Linux a je připravena v následujících měsících poskytnout implementace ovladačů pro Hyper-V v Rustu.
  • Společnost ARM pracuje na zlepšení podpory Rustu pro systémy postavené na procesorech ARM. Projektu Rust již byly navrženy změny, které převádějí 64bitové systémy ARM mezi platformy první úrovně podpory (Tier-1).
  • Společnost Google přímo poskytuje podporu projektu Rust for Linux, vyvíjí novou implementaci mechanismu meziprocesorové komunikace Binder v Rustu a zvažuje přepracování různých ovladačů v Rustu. Prostřednictvím ISRG (Internet Security Research Group) zajistila společnost Google financování práce na integraci podpory Rustu do jádra Linux.
  • Společnost IBM implementovala podporu Rustu v jádře pro systémy PowerPC.
  • Laboratoř LSE (Systems Research Laboratory) vyvinula SPI-ovladač v Rustu.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster