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

Miguel Ojeda, autor projektu Rust-for-Linux, navrhol piatu 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 je už zahrnutá vo vetve linux-next a je dostatočne vyvinutá na to, aby mohla začať 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, treťom a štvrtom vydaní záplat. V novej verzii:

  • Testovanie komponentov pre podporu Rust bolo pridané do kontinuálneho integračného systému založeného na Intel-podporovanom 0DAY/LKP bote a začalo sa zverejňovanie testovacích správ. Pripravujeme integráciu podpory Rust do automatizovaného testovacieho systému KernelCI. Testovanie založené na GitHub CI sa prenieslo do používania kontajnerov.
  • Moduly jadra Rust sú zbavené potreby definovať atribúty prepravky „#![no_std]“ a „#![feature(…)]“.
  • Pridaná podpora pre jednotlivé montážne ciele (.o, .s, .ll a .i).
  • Pravidlá kódovania definujú pravidlá na oddelenie komentárov („//“) a dokumentáciu kódu („///“).
  • Skript is_rust_module.sh bol prepracovaný.
  • Pridaná podpora pre statické (globálne zdieľané premenné) synchronizačné primitívy založené na implementácii "CONFIG_CONSTRUCTORS".
  • Správa zámkov je zjednodušená: Guard a GuardMut sú kombinované a jeden parametrizovaný typ.
  • Pri registrácii zariadení je možné definovať ďalšie parametre.
  • Pridaná abstrakcia „RwSemaphore“, ktorá funguje ako obal nad štruktúrou rw_semaphore C.
  • Na použitie mmap bol pridaný nový modul mm a abstrakcia VMA (obal nad štruktúrou vm_area_struct).
  • Ovládač GPIO PL061 bol skonvertovaný tak, aby používal makro „dev_*!“.
  • Uskutočnilo sa všeobecné čistenie kódu.

Zdroj: opennet.ru

Pridať komentár