Štvrté vydanie patchov pre jadro Linux s podporou jazyka Rust

Miguel Ojeda, autor projektu Rust-for-Linux, navrhol vývojárom jadra Linux štvrtú verziu komponentov na vývoj ovládačov zariadení v jazyku Rust. Podpora Rust sa považuje za experimentálnu, no už je schválená na zaradenie do vetvy linux-next a je dostatočne rozvinutá na to, aby sa mohlo začať s prácou na vytváraní vrstiev abstrakcie nad subsystémami jadra, ako aj na písaní 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 prispieva k podpore HTTPS a rozvoju 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 novej verzii patchov pokračuje odstraňovanie pripomienok, ktoré boli vznesené počas diskusie prvej, druhej a tretej verzie patchov. V novej verzii:

  • Prešlo sa na používanie stabilného vydania Rust 1.58.0 ako referenčného kompilátora. Z potrebných zmien pre projekt, ktoré zatiaľ nie sú zahrnuté v hlavnom súbore nástrojov Rust, sa spomína príznak "-Zsymbol-mangling-version=v0" (očakáva sa v Rust 1.59.0) a režim "maybe_uninit_extra" (očakáva sa v Rust 1.60.0).
  • Pridané automatické kontroly prítomnosti vhodného nástroja Rust a rozšírené možnosti testovania podpory Rust v systéme.
  • Navrhnuté nové abstrakcie na prístup z kódu v jazyku Rust k tabuľkám identifikátorov zariadení ("IdArray" a "IdTable").
  • Pridané vrstvy na volanie funkcií súvisiacich s časovačom (clock framework).
  • Ovládače pre platformy sú teraz definované prostredníctvom implementácie typov.
  • Pridaný nový makro pre zjednodušenie registrácie ovládačov platforiem a navrhnutý nový šablónový ovládač.
  • Pridané makrá pre štruktúry "dev_*".
  • Pridané metódy "{read,write}*_relaxed" pre typ IoMem.
  • Odstránená vlastnosť FileOpener pre zjednodušenie operácií s súbormi.
  • Do počtu argumentov, ktoré sa prenášajú pri registrácii ovládača, bol pridaný parameter "ThisModule".
  • Navrhnutý šablónový typ pre vytváranie jadrových modulov v jazyku Rust.

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