Piate vydanie patchov pre jadro Linux s podporou jazyka Rust

Miguel Ojeda, autor projektu Rust-for-Linux, navrhol na zváženie vývojárom jadra Linux piatu verziu komponentov pre vývoj ovládačov zariadení v jazyku Rust. Podpora jazyka Rust sa považuje za experimentálnu, no už je zahrnutá vo vetve linux-next a je dostatočne vyvinutá na začatie práce na vytváraní vrstiev abstrakcie nad subsystémami jadra, ako aj na písanie ovládačov a modulov. Vývoj je financovaný spoločnosťou Google a organizáciou ISRG (Internet Security Research Group), ktorá je zakladateľom projektu Let’s Encrypt a podporuje propagáciu HTTPS a rozvoj technológií na zvýšenie bezpečnosti internetu.

Pripomeňme, že navrhované zmeny umožňujú používať Rust ako druhý jazyk na vývoj ovládačov a modulov jadra. Podpora Rust sa prezentuje ako možnosť, ktorá nie je predvolene aktívna a nevedie k zaradeniu Rustu medzi povinné zostavovacie závislosti jadra. Použitie Rustu na vývoj ovládačov umožní s minimálnym úsilím vytvárať bezpečné a kvalitnejšie ovládače, zbavené takých problémov ako je prístup do pamäte po jej uvoľnení, dereferencovanie nulových ukazovateľov a pretečenie vyrovnávacej pamäte.

Bezpečná práca s pamäťou je v Rust zabezpečená počas kompilácie prostredníctvom overovania referencií, sledovania vlastníctva objektov a zohľadnenia životnosti objektov (oblasti viditeľnosti), ako aj prostredníctvom hodnotenia správnosti prístupu k pamäti počas vykonávania kódu. Rust tiež poskytuje prostriedky na ochranu pred pretečením celočíselných hodnôt, vyžaduje povinnú inicializáciu hodnôt premenných pred ich použitím, lepšie spracováva chyby v štandardnej knižnici, aplikuje koncept nemennosti (immutable) odkazov a premenných ako predvolených a ponúka silnú statickú typizáciu na minimalizáciu logických chýb.

V novom variantu patchov pokračuje odstraňovanie poznámok vyjadrených v procese diskusie prvej, druhej, tretej a štvrtej edície patchov. V novej verzii:

  • Do systému nepretržitej integrácie založeného na podpore spoločnosťou Intel bol pridaný bot 0DAY/LKP, ktorý kontroluje komponenty pre podporu Rust a začala sa publikácia správ o testovaní. Pripravuje sa integrácia podpory Rust do systému automatizovaného testovania KernelCI. Testovanie založené na GitHub CI prešlo na používanie kontajnerov.
  • Moduly jadra na Rust sa zbavili potreby definovania crate-atribútov „#![no_std]“ a „#![feature(…)]“.
  • Pridaná podpora jednorazových zostavovacích cieľov (.o, .s, .ll a .i).
  • V odporúčaniach na formátovanie kódu boli stanovené pravidlá týkajúce sa oddelenia komentárov („//“) a dokumentovania kódu („///“).
  • Prepracovaný skript is_rust_module.sh.
  • Pridaná podpora statických (globálnych zdieľaných premenných) primitív synchronizácie, založených na implementácii „CONFIG_CONSTRUCTORS”.
  • Zjednodušená správa zámkov: Guard a GuardMut boli zlúčené do jedného parametrového typu.
  • Poskytnutá možnosť definovať dodatočné parametre pri registrácii zariadení.
  • Pridaná abstrakcia „RwSemaphore“, ktorá slúži ako obal nad C-štruktúrou rw_semaphore.
  • Pre použitie mmap bol pridaný nový modul mm a abstrakcia VMA (obal nad štruktúrou vm_area_struct).
  • Ovládač GPIO PL061 bol preložený na používanie makra „dev_*!“.
  • Vykonaná celková úprava kódu.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster