Pátá edice záplat pro jádro Linux s podporou jazyka Rust

Miguel Ojeda, autor projektu Rust-for-Linux, navrhl pro vývojáře jádra Linux pátou variantu komponent pro vývoj ovladačů zařízení v jazyce Rust. Podpora Rust 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 zvýš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 v průběhu diskuse o prvních, druhých, třetích a čtvrtých verzích patchů. V nové verzi:

  • Do systému kontinuální integrace založeného na podpoře společnosti Intel bota 0DAY/LKP byla přidána kontrola komponent pro podporu Rust a začalo se publikovat zprávy o testování. Připravuje se integrace podpory Rust do systému automatizovaného testování KernelCI. Testování na základě GitHub CI bylo převedeno na použití kontejnerů.
  • Moduly jádra v Rustu byly zbaveny nutnosti definovat crate-atributy „#![no_std]“ a „#![feature(…)]“.
  • Byla přidána podpora jednotkových sestavení (.o, .s, .ll a .i).
  • V doporučeních pro formátování kódu byla stanovena pravidla týkající se oddělení komentářů („//“) a dokumentace kódu („///“).
  • Byl přepracován skript is_rust_module.sh.
  • Byla přidána podpora statických (globálních) sdílených proměnných synchronizačních primitiv, založená na implementaci „CONFIG_CONSTRUCTORS“.
  • Bylo zjednodušeno řízení zámků: Guard a GuardMut byly sloučeny do jednoho parametrového typu.
  • Byla poskytnuta možnost definování dodatečných parametrů při registraci zařízení.
  • Byla přidána abstrakce „RwSemaphore“, která funguje jako obal nad strukturou rw_semaphore v C.
  • Pro použití mmap byl přidán nový modul mm a abstrakce VMA (obal nad strukturou vm_area_struct).
  • Ovladač GPIO PL061 byl převeden na použití makra „dev_*!“.
  • Byla provedena celková údržba kódu.

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