A Linux kernel javításainak ötödik kiadása a Rust nyelv támogatásával

Miguel Ojeda, a Rust-for-Linux projekt szerzője az eszközillesztő-fejlesztéshez szükséges összetevők ötödik verzióját javasolta a Rust nyelven, hogy a Linux kernel fejlesztői megfontolják. A Rust támogatás kísérleti jellegűnek tekinthető, de már benne van a linux-next ágban, és kellően fejlett ahhoz, hogy megkezdődjön a kernel alrendszerek feletti absztrakciós rétegek létrehozása, valamint az illesztőprogramok és modulok írása. A fejlesztést a Google és az ISRG (Internet Security Research Group) finanszírozza, amely a Let's Encrypt projekt alapítója, és a HTTPS-t és az internet biztonságát javító technológiák fejlesztését népszerűsíti.

Emlékezzünk vissza, hogy a javasolt változtatások lehetővé teszik a Rust második nyelvként való használatát illesztőprogramok és kernelmodulok fejlesztéséhez. A Rust támogatása olyan opcióként jelenik meg, amely alapértelmezés szerint nincs engedélyezve, és nem eredményezi, hogy a Rust szerepeljen a kernel szükséges összeállítási függőségeként. A Rust használata az illesztőprogramok fejlesztésére lehetővé teszi, hogy minimális erőfeszítéssel biztonságosabb és jobb illesztőprogramokat hozzon létre, olyan problémáktól mentesen, mint például a memória felszabadítása utáni hozzáférés, nullmutató hivatkozások és puffertúllépések.

A memóriabiztos kezelést a Rust fordítási időben biztosítja a referenciaellenőrzés, az objektum tulajdonjogának és az objektum élettartamának (hatókörének) nyomon követésével, valamint a kódvégrehajtás során a memória-hozzáférés helyességének értékelésével. A Rust védelmet nyújt az egész számok túlcsordulása ellen is, megköveteli a változó értékek kötelező inicializálását használat előtt, jobban kezeli a hibákat a szabványos könyvtárban, alapértelmezés szerint alkalmazza a megváltoztathatatlan hivatkozások és változók koncepcióját, erős statikus gépelést kínál a logikai hibák minimalizálása érdekében.

A javítások új verziója továbbra is megszünteti a javítások első, második, harmadik és negyedik kiadásának tárgyalása során elhangzott megjegyzéseket. Az új verzióban:

  • Az Intel által támogatott 0DAY/LKP botra épülő folyamatos integrációs rendszerbe bekerült a Rust támogatás komponenstesztelése, és megkezdődött a tesztelési jelentések közzététele. Arra készülünk, hogy a Rust támogatást integráljuk a KernelCI automatizált tesztelési rendszerébe. A GitHub CI-n alapuló tesztelés átkerült a konténerek használatára.
  • A Rust kernel modulok felszabadulnak a „#![no_std]” és „#![feature(…)]” láda attribútumok meghatározásától.
  • Hozzáadott támogatás az egyes összeállítási célokhoz (.o, .s, .ll és .i).
  • A kódra vonatkozó irányelvek szabályokat határoznak meg a megjegyzések („//”) és a dokumentálási kód („///”) elkülönítésére.
  • Az is_rust_module.sh szkript átdolgozásra került.
  • A statikus (globális megosztott változó) szinkronizálási primitívek támogatása a „CONFIG_CONSTRUCTORS” megvalósítás alapján.
  • A zárkezelés leegyszerűsödött: a Guard és a GuardMut kombinált és egy paraméterezett típus.
  • Lehetőség van további paraméterek megadására az eszközök regisztrálásakor.
  • Hozzáadtuk az "RwSemaphore" absztrakciót, amely burkolóként működik az rw_semaphore C szerkezet felett.
  • Az mmap használatához egy új mm-modul és egy VMA-absztrakció került hozzáadásra (a vm_area_struct struktúra felett egy burkoló).
  • A GPIO PL061 illesztőprogram a „dev_*!” makró használatára vált.
  • Megtörtént a kód általános tisztítása.

Forrás: opennet.ru

Hozzászólás