Již byla vydána třetí verze oprav pro podporu ovladačů Rust v Linuxu

Šest měsíců po zveřejnění druhé verze, Miguel Ojeda, autor projektu Rust-for-Linux, oznámila návrh třetí možnosti pro vývoj ovladačů zařízení v jazyce Rust v jádře Linuxu.

Podpora Rust je považována za experimentální, ale její zařazení do větve linux-next již bylo dohodnuto. Vývoj financuje Google a organizace ISRG (Internet Security Research Group), která je zakladatelem projektu Let's Encrypt a přispívá k propagaci HTTPS a vývoji technologií pro zlepšení bezpečnosti internetu.

Je třeba mít na paměti, že navrhované změny umožňují použít Rust jako druhý jazyk pro vývoj ovladačů jádra a modulů.

Rust ovladače pro linux
Související článek:
Druhá verze oprav pro podporu ovladače Rust v systému Linux byla dodána

Podpora rzi je inzerována jako možnost, která není ve výchozím nastavení aktivní a nevede k tomu, že Rust bude zahrnut do požadovaných základních závislostí sestavení. Použití Rustu pro vývoj ovladačů vám umožní vytvářet lepší a bezpečnější ovladače s minimálním úsilím, bez potíží s přístupem k oblasti paměti po uvolnění, dereferencováním nulových ukazatelů a překročením limitů vyrovnávací paměti.

Nová verze oprav nadále odstraňuje komentáře učiněné během diskuse o první a druhé verzi oprav a nejpozoruhodnějších změn, které můžeme najít:

Přechod na stabilní verzi Rust 1.57 jako referenční kompilátor a byla zajištěna vazba na stabilizovanou edici jazyka Rust 2021. Přechod na specifikaci Rust 2021 ppovoleno začít pracovat, aby se zabránilo použití takových nestabilních funkcí v patchích jako const_fn_transmute, const_panic, const_unreachable_unchecked a core_panic a try_reserve.

To také vyniká vývoj alloc verze pokračoval z knihovny Rust, v nové verzi, možnosti "no_rc" a "no_sync" jsou implementovány pro zakázání této funkce který se nepoužívá v kódu Rust pro jádro, díky čemuž je knihovna modulárnější. Pokračujeme ve spolupráci s hlavními vývojáři alloc, abychom přinesli nezbytné změny jádra do hlavní knihovny. Volba "no_fp_fmt_parse", která je vyžadována pro fungování knihovny na úrovni jádra, byla přesunuta do základní knihovny (kernel) Rust.

Kód byl vyčištěn, aby se odstranila možná varování kompilátoru při kompilaci jádra v režimu CONFIG_WERROR. Když je kód vytvořen v Rust, jsou zahrnuty další režimy diagnostického kompilátoru a varování Clippy linter.

Navrhli abstrakce k použití seqlocků (sekvenční zámky), volání zpětného volání pro správu napájení, I/O paměti (čteníX / zápisX), obsluhy přerušení a vláken, GPIO, přístup k zařízení, ovladače a přihlašovací údaje v rust kódu.

Nástroje pro vývoj ovladačů byly rozšířeny s použitím přemístitelných mutexů, bitových iterátorů, zjednodušených vazeb přes ukazatele, vylepšené diagnostiky chyb a infrastruktury nezávislé na datové sběrnici.

Práce s odkazy byla vylepšena pomocí typu Ref zjednodušené, založené na backendu refcount_t, který k počítání referencí používá stejnojmenné centrální API. Podpora typů Arc a Rc poskytovaná ve standardní knihovně mapování byla odstraněna a není dostupná v kódu spouštěném na úrovni jádra (pro samotnou knihovnu byly připraveny možnosti pro zakázání těchto typů).

K opravám byla přidána verze ovladače PL061 GPIO, přepsaná v Rustu. Charakteristickým rysem ovladače je, že jeho implementace téměř řádek po řádku opakuje stávající ovladač C GPIO. Pro vývojáře, kteří se chtějí seznámit s regulátory budov v Rustu, bylo připraveno srovnání řádek po řádku, které poskytuje náhled na to, jakými buildy v Rustu se stal C kód.

Hlavní kódová základna Rustu přijímá rustc_codegen_gcc, rustc backend pro GCC, který implementuje kompilaci AOT pomocí knihovny libgccjit. Při správném vývoji backendu vám to umožní sbírat kód Rust zapojený do jádra pomocí GCC.
Kromě ARM, Google a Microsoft projevil zájem o použití Rust v linuxovém jádru i Red Hat.

Nakonec, pokud máte zájem dozvědět se o tom více, můžete si prostudovat podrobnosti Na následujícím odkazu.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Za data odpovídá: AB Internet Networks 2008 SL
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.