Nová verze patchů pro jádro Linux s podporou jazyka Rust

Miguel Oheda, autor projektu Rust-for-Linux, navrhl pro zvažování vývojářům jádra Linux vydání v5 komponent pro vývoj ovladačů zařízení v jazyce Rust. Toto je šestá verze patchů s ohledem na první variantu, publikovanou bez čísla verze. Podpora Rustu je považována za experimentální, ale již byla zahrnuta do větve linux-next a je dostatečně rozvinutá pro zahájení práce na vytváření vrstev abstrakce nad subsystémy jádra, stejně jako pro psaní ovladačů a modulů. Vývoj je financován společností Google a organizací ISRG (Internet Security Research Group), která je zakladatelem projektu Let’s Encrypt a přispívá k propagaci HTTPS a rozvoji technologií pro zlepšení bezpečnosti internetu.

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.

V nové variantě patchů pokračuje odstranění poznámek, které byly vyjádřeny během diskuse první, druhé, třetí, čtvrté a páté verze patchů. V nové verzi:

  • Nástroje byly aktualizovány na vydání Rust 1.59.0. S novou verzí Rust byla také synchronizována varianta knihovny alloc, zbavená možných generací stavu „panic“ při výskytu chyb, jako je nedostatek paměti. Byla stabilizována možnost využívání assemblerových vložek („feature(global_asm)“).
  • Byla přidána podpora pro vytváření hostitelských programů v jazyce Rust, které se používají během kompilace jádra.
  • Místo dodávání předem vytvořených souborů se specifikací cílových platforem byla zajištěna jejich dynamická generace na základě konfigurace jádra.
  • Přidán parametr jádra HAVE_RUST, který je aktivován pro architektury, kde je Rust podporován.
  • Byly navrhnuty abstrakce pro použití v kódu v jazyce Rust pro hardwarový generátor pseudonáhodných čísel.
  • Bylo povoleno používání chybových kódů bez prefixu „Error::“ (např. „return Err(EINVAL)“) pro přiblížení se k zpracování chybových kódů v C.
  • Byl přidán typ „CString“ pro vlastní C-řetězce. Byly sloučeny typy Formatter a Buffer.
  • Byly přidány typy Bool a LockInfo.
  • Byla zjednodušena implementace spin-zámků.

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