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

Miguel Ojeda, autor projektu Rust-for-Linux, navrhl vydání komponent v5 pro vývoj ovladačů zařízení Rust pro vývojáře linuxového jádra. Toto je šesté vydání záplat, přičemž se bere v úvahu první verze publikovaná bez čísla verze. Podpora Rust je považována za experimentální, ale je již zahrnuta ve větvi linux-next a je dostatečně vyzrálá, aby mohla začít pracovat na vytváření abstraktních vrstev nad subsystémy jádra, stejně jako na psaní ovladačů a modulů. Vývoj financuje Google a ISRG (Internet Security Research Group), která je zakladatelem projektu Let's Encrypt a propaguje HTTPS a vývoj technologií pro zvýšení bezpečnosti internetu.

Připomeňme, že navrhované změny umožňují použít Rust jako druhý jazyk pro vývoj ovladačů a modulů jádra. Podpora Rust je prezentována jako možnost, která není ve výchozím nastavení povolena a nevede k zahrnutí Rust mezi požadované závislosti sestavení jádra. Použití Rustu k vývoji ovladačů vám umožní vytvářet bezpečnější a lepší ovladače s minimálním úsilím, bez problémů, jako je přístup k oblasti paměti po jejím uvolnění, dereferencování nulových ukazatelů a přetečení vyrovnávací paměti.

Bezpečnost paměti je v Rustu poskytována v době kompilace prostřednictvím kontroly referencí, sledováním vlastnictví objektu a životnosti objektu (rozsahu) a také prostřednictvím vyhodnocování správnosti přístupu do paměti během provádění kódu. Rust také poskytuje ochranu proti přetečení celých čísel, vyžaduje povinnou inicializaci hodnot proměnných před použitím, lépe zpracovává chyby ve standardní knihovně, standardně aplikuje koncept neměnných referencí a proměnných, nabízí silné statické typování pro minimalizaci logických chyb.

Nová verze oprav nadále odstraňuje komentáře učiněné během diskuse o prvním, druhém, třetím, čtvrtém a pátém vydání oprav. V nové verzi:

  • Sada nástrojů byla aktualizována na verzi Rust 1.59.0. S novou verzí Rustu je synchronizována i varianta knihovny alloc, která se zbavuje možného generování „panického“ stavu při výskytu chyb, jako je nedostatek paměti. Schopnost používat vložky assembleru ("feature(global_asm)") byla stabilizována.
  • Přidána podpora pro vytváření hostitelských programů Rust používaných v procesu kompilace jádra.
  • Namísto poskytování předem vygenerovaných souborů specifikace cílové platformy jsou tyto soubory dynamicky generovány na základě konfigurace jádra.
  • Byl přidán parametr jádra HAVE_RUST, který bude povolen pro architektury, které podporují Rust.
  • Abstrakce jsou navrženy pro použití v kódu Rust hardwarového generátoru pseudonáhodných čísel.
  • Použití chybových kódů bez předpony "Error::" (například "return Err(EINVAL)") je povoleno k přiblížení zacházení s chybovými kódy v C.
  • Přidán typ "CString" pro nativní C-řetězce. Sloučené typy formátovače a vyrovnávací paměti.
  • Přidány vlastnosti Bool a LockInfo.
  • Zjednodušená implementace spin-locků.

Zdroj: opennet.ru

Přidat komentář