Štvrté vydanie záplat pre jadro Linuxu s podporou jazyka Rust

Miguel Ojeda, autor projektu Rust-for-Linux, navrhol štvrtú verziu komponentov na vývoj ovládačov zariadení v jazyku Rust na posúdenie vývojárom jadra Linuxu. Podpora hrdze sa považuje za experimentálnu, ale už bola dohodnutá na jej zahrnutie do vetvy linux-next a je dostatočne zrelá na to, aby začala pracovať na vytváraní abstraktných vrstiev nad subsystémami jadra, ako aj na písaní ovládačov a modulov. Vývoj je financovaný spoločnosťou Google a ISRG (Internet Security Research Group), ktorá je zakladateľom projektu Let's Encrypt a propaguje HTTPS a vývoj technológií na zlepšenie bezpečnosti internetu.

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.

Nová verzia záplat pokračuje v odstraňovaní komentárov vznesených počas diskusie o prvom, druhom a treťom vydaní záplat. V novej verzii:

  • Bol vykonaný prechod na používanie stabilného vydania Rust 1.58.0 ako referenčného kompilátora. Medzi zmeny potrebné pre projekt, ktoré ešte nie sú zahrnuté v hlavnej sade nástrojov Rust, patrí príznak „-Zsymbol-mangling-version=v0“ (očakávaný v Rust 1.59.0) a režim „možná_uninit_extra“ (očakávaný v Rust 1.60.0 .XNUMX) sú zaznamenané.
  • Pridané automatické kontroly dostupnosti vhodných nástrojov Rust a rozšírená možnosť testovania podpory Rust v systéme.
  • Boli navrhnuté nové abstrakcie pre prístup k tabuľkám identifikátorov zariadení („IdArray“ a „IdTable“) z kódu Rust.
  • Pridané vrstvy pre prístup k funkciám súvisiacim s časovačom (rámec hodín).
  • Ovládače platformy sú teraz definované prostredníctvom implementácií vlastností.
  • Na zjednodušenie registrácie ovládačov platforiem bolo pridané nové makro a bola navrhnutá nová generická šablóna ovládača.
  • Pridané makrá pre štruktúry "dev_*".
  • Pridané metódy „{read,write}*_relaxed“ pre typ IoMem .
  • Odstránená vlastnosť FileOpener na zjednodušenie operácií so súbormi.
  • Parameter „ThisModule“ bol pridaný k argumentom odovzdaným pri registrácii ovládača.
  • Navrhuje sa štandardná šablóna na vytváranie modulov jadra v jazyku Rust.

Zdroj: opennet.ru

Pridať komentár