Čtvrtá edice oprav pro linuxové jádro s podporou jazyka Rust

Miguel Ojeda, autor projektu Rust-for-Linux, navrhl čtvrtou verzi komponent pro vývoj ovladačů zařízení v jazyce Rust ke zvážení vývojářům linuxového jádra. Podpora Rust je považována za experimentální, ale již byla dohodnuta pro zahrnutí do větve linux-next a je dostatečně vyspě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 zlepš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 a třetím vydání oprav. V nové verzi:

  • Byl proveden přechod na používání stabilního vydání Rust 1.58.0 jako referenčního kompilátoru. Mezi změny nezbytné pro projekt, které ještě nejsou zahrnuty v hlavní sadě nástrojů Rust, patří příznak „-Zsymbol-mangling-version=v0“ (očekává se v Rustu 1.59.0) a režim „možná_uninit_extra“ (očekává se v Rustu 1.60.0 .XNUMX) jsou zaznamenány.
  • Přidány automatické kontroly dostupnosti vhodných nástrojů Rust a rozšířena možnost testování podpory Rust v systému.
  • Pro přístup k tabulkám identifikátorů zařízení („IdArray“ a „IdTable“) z kódu Rust byly navrženy nové abstrakce.
  • Přidány vrstvy pro přístup k funkcím souvisejícím s časovačem (rámec hodin).
  • Ovladače platformy jsou nyní definovány prostřednictvím implementací vlastností.
  • Bylo přidáno nové makro pro zjednodušení registrace ovladačů platformy a byla navržena nová generická šablona ovladače.
  • Přidána makra pro struktury "dev_*".
  • Přidány metody "{read,write}*_relaxed" pro typ IoMem .
  • Odebrána vlastnost FileOpener pro zjednodušení operací se soubory.
  • Parametr „ThisModule“ byl přidán k argumentům předávaným při registraci ovladače.
  • Je navržena standardní šablona pro vytváření modulů jádra v jazyce Rust.

Zdroj: opennet.ru

Přidat komentář