Druhá edícia záplat pre jadro Linuxu s podporou jazyka Rust

Miguel Ojeda, autor projektu Rust-for-Linux, navrhol vývojárom jadra Linuxu aktualizovanú verziu komponentov na vývoj ovládačov zariadení v jazyku Rust. Podpora hrdze sa považuje za experimentálnu, ale už sa dohodlo na jej zahrnutí do vetvy linux-next. Nová verzia odstraňuje komentáre počas diskusie o prvej verzii záplat. Linus Torvalds sa už zapojil do diskusie a navrhol zmenu logiky spracovania niektorých bitových operácií.

Pripomeňme, že navrhované zmeny umožňujú použiť Rust ako druhý jazyk na vývoj ovládačov a modulov jadra. Podpora Rust je prezentovaná ako možnosť, ktorá nie je štandardne povolená a nevedie k tomu, že Rust je zahrnutý ako požadovaná závislosť zostavenia pre jadro. Použitie Rustu na vývoj ovládačov vám umožní vytvárať bezpečnejšie a lepšie ovládače s minimálnym úsilím, bez problémov, ako je prístup k pamäti po uvoľnení, dereferences nulového ukazovateľa a pretečenie vyrovnávacej pamäte.

Bezpečná manipulácia s pamäťou je v Rust zabezpečená v čase kompilácie prostredníctvom kontroly referencií, sledovania vlastníctva objektu a životnosti objektu (rozsahu), ako aj prostredníctvom hodnotenia správnosti prístupu do pamäte počas vykonávania kódu. Rust tiež poskytuje ochranu proti pretečeniu celých čísel, vyžaduje povinnú inicializáciu hodnôt premenných pred použitím, lepšie zvláda chyby v štandardnej knižnici, štandardne aplikuje koncept nemenných referencií a premenných, ponúka silné statické typovanie na minimalizáciu logických chýb.

Najvýraznejšie zmeny v novej verzii záplat:

  • Kód prideľovania pamäte je oslobodený od potenciálneho generovania stavu "paniky", keď sa vyskytnú chyby, ako napríklad nedostatok pamäte. Zahrnutý je variant knižnice Rust alloc, ktorá prerába kód tak, aby zvládal zlyhania, ale konečným cieľom je preniesť všetky funkcie potrebné pre jadro do hlavnej edície alloc (zmeny sú už pripravené a prenesené do štandardu Hrdzavá knižnica).
  • Namiesto nočných zostavení môžete teraz použiť beta verzie a stabilné vydania kompilátora rustc na kompiláciu jadra s podporou Rust. V súčasnosti sa ako referenčný kompilátor používa rustc 1.54-beta1, ale po vydaní 1.54 na konci mesiaca bude podporovaný ako referenčný kompilátor.
  • Pridaná podpora pre písanie testov pomocou štandardného atribútu “#[test]” pre Rust a možnosť používať doctests na dokumentovanie testov.
  • Pridaná podpora pre architektúry ARM32 a RISCV okrem predtým podporovaných x86_64 a ARM64.
  • Vylepšené implementácie GCC Rust (GCC frontend pre Rust) a rustc_codegen_gcc (rustc backend pre GCC), ktorý teraz prejde všetkými základnými testami.
  • Nová úroveň abstrakcie je navrhnutá na použitie v programoch Rust s mechanizmami jadra napísanými v C, ako sú červeno-čierne stromy, objekty s počítaním odkazov, vytváranie deskriptorov súborov, úlohy, súbory a I/O vektory.
  • Komponenty na vývoj ovládačov majú vylepšenú podporu pre modul file_operations, makro module!, registráciu makier a základné ovládače (sond a remove).
  • Binder teraz podporuje odovzdávanie deskriptorov súborov a hákov LSM.
  • Navrhuje sa funkčnejší príklad ovládača Rust - bcm2835-rng pre hardvérový generátor náhodných čísel dosiek Raspberry Pi.

Okrem toho sa spomínajú projekty niektorých spoločností súvisiace s používaním Rustu v jadre:

  • Microsoft prejavil záujem podieľať sa na práci na integrácii podpory Rust do linuxového jadra a je pripravený poskytnúť implementácie ovládačov pre Hyper-V na Rust v najbližších mesiacoch.
  • ARM pracuje na zlepšení podpory Rust pre systémy založené na ARM. Projekt Rust už navrhol zmeny, ktoré by zo 64-bitových systémov ARM urobili platformu Tier 1.
  • Google priamo poskytuje podporu projektu Rust for Linux, v Ruste vyvíja novú implementáciu medziprocesového komunikačného mechanizmu Binder a zvažuje možnosť prepracovania rôznych ovládačov v Ruste. Prostredníctvom ISRG (Internet Security Research Group) spoločnosť Google poskytla finančné prostriedky na prácu na integrácii podpory Rust do linuxového jadra.
  • IBM implementovalo podporu jadra pre Rust pre systémy PowerPC.
  • Laboratórium LSE (Systems Research Laboratory) vyvinulo ovládač SPI v Ruste.

Zdroj: opennet.ru

Pridať komentár