A Linux kernel javításainak új verziója a Rust nyelv támogatásával

Miguel Ojeda, a Rust-for-Linux projekt szerzője a v5-ös összetevők kiadását javasolta eszköz-illesztőprogramok fejlesztéséhez Rust nyelven, hogy fontolóra vegyék a Linux kernel fejlesztői. Ez a javítások hatodik kiadása, az első verzió figyelembevételével, verziószám nélkül megjelent. 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 internetbiztonságot 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, negyedik és ötödik kiadásának tárgyalása során elhangzott megjegyzéseket. Az új verzióban:

  • Az eszközkészletet frissítettük a Rust 1.59.0 kiadására. Az alloc könyvtár egy változata a Rust új verziójával is szinkronizálva van, kiküszöbölve a „pánik” állapot esetleges generálását, amikor hiba történik, például elfogy a memória. Stabilizálódott az assembler betétek („feature(global_asm)”) használatának lehetősége.
  • Támogatás hozzáadva a rendszermag-fordítás során használt gazdagép programok létrehozásához Rustban.
  • Ahelyett, hogy előre generált célplatform-specifikációs fájlokat szolgáltatnának, azok dinamikusan generálódnak a kernelkonfiguráció alapján.
  • HAVE_RUST kernelparaméter hozzáadva a Rustot támogató architektúrák engedélyezéséhez.
  • Az absztrakciókat javasoljuk a Rust kódban való használatra egy hardveres pszeudo-véletlenszám-generátorhoz.
  • Engedélyezett az "Error::" előtag nélküli hibakódok használata (például "return Err(EINVAL)") a hibakódok kezelésének közelítése érdekében a C-ben.
  • "CString" típus hozzáadva az egyéni C-sztringekhez. A formázó és a puffer típusokat kombinálták.
  • Bool és LockInfo típusok hozzáadva.
  • A spin-zárak végrehajtása egyszerűsödött.

Forrás: opennet.ru

Hozzászólás