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

Miguel Ojeda, a Rust-for-Linux projekt szerzője javasolta az eszközillesztő-fejlesztéshez szükséges összetevők negyedik verzióját Rust nyelven, hogy a Linux kernel fejlesztői megfontolják. A Rust támogatása kísérleti jellegűnek tekinthető, de már megállapodtak a linux-next ágba való beépítésről, és elég érett ahhoz, hogy megkezdjék a munkát a kernel alrendszerek feletti absztrakciós rétegek létrehozásán, valamint az illesztőprogramok és modulok írásán. 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 és harmadik kiadásának tárgyalása során elhangzott megjegyzéseket. Az új verzióban:

  • Megtörtént az átállás a Rust 1.58.0 stabil kiadásának referencia fordítóként való használatára. A projekthez szükséges változtatások közül, amelyek még nem szerepelnek a fő Rust eszköztárban, a „-Zsymbol-mangling-version=v0” jelző (a Rust 1.59.0-ban várható) és a „maybe_uninit_extra” mód (a Rust 1.60.0-ban várható) .XNUMX) vannak feljegyezve.
  • Automatikus ellenőrzések hozzáadva a megfelelő Rust-eszközök rendelkezésre állásához, és kibővült a rendszerben a Rust támogatás tesztelésének lehetősége.
  • Új absztrakciókat javasoltak az eszközazonosító táblák („IdArray” és „IdTable”) Rust kódból való eléréséhez.
  • Hozzáadott rétegek az időzítőhöz kapcsolódó funkciók eléréséhez (óra keretrendszer).
  • A platform-illesztőprogramokat immár jellemző implementációk határozzák meg.
  • Új makró került hozzáadásra a platform-illesztőprogramok regisztrációjának egyszerűsítésére, és új, általános illesztőprogram-sablont javasoltak.
  • Makrók hozzáadva a "dev_*" struktúrákhoz.
  • "{read,write}*_relaxed" metódus hozzáadva az IoMem típushoz .
  • Eltávolította a FileOpener tulajdonságot a fájlműveletek egyszerűsítése érdekében.
  • A „ThisModule” paraméter hozzáadásra került az illesztőprogram regisztrálásakor átadott argumentumokhoz.
  • A rendszermagmodulok Rust nyelven történő létrehozásához szabványos sablont javasolunk.

Forrás: opennet.ru

Hozzászólás