Javítások második kiadása a Linux kernelhez 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 frissített változatát a Rust nyelven, hogy fontolja meg a Linux kernel fejlesztői. A rozsdatámogatás kísérleti jellegű, de már megállapodtak a linux-next ágba való felvételről. Az új verzió megszünteti a javítások első verziójának tárgyalása során elhangzott megjegyzéseket. Linus Torvalds már csatlakozott a vitához, és javasolta néhány bitművelet feldolgozási logikájának megváltoztatását.

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 legszembetűnőbb változások a javítások új verziójában:

  • A memóriafoglalási kód mentesül attól, hogy „pánik” állapotot generáljon, ha hiba történik, például megfogy a memória. Tartalmazza a Rust alloc könyvtár egy változatát, amely átdolgozza a kódot a hibák kezelésére, de a végső cél az, hogy a kernelhez szükséges összes szolgáltatást átvigye az alloc fő kiadásába (a változtatásokat már előkészítették és átvitték a szabványba Rozsdakönyvtár).
  • Az éjszakai összeállítások helyett most már használhatod a rustc fordító béta kiadásait és stabil kiadásait a Rust támogatással rendelkező kernel fordítására. Jelenleg a rustc 1.54-beta1-et használják referencia-fordítóként, de az 1.54-es kiadás hónap végén történő megjelenése után referencia-fordítóként is támogatott lesz.
  • Támogatás hozzáadva a tesztek írásához a Rust szabványos „#[teszt]” attribútumával, valamint a doctestek használatának lehetősége a tesztek dokumentálására.
  • Az ARM32 és RISCV architektúrák támogatása a korábban támogatott x86_64 és ARM64 mellett.
  • A GCC Rust (GCC frontend for Rust) és a rustc_codegen_gcc (rustc backend for GCC) továbbfejlesztett megvalósításai, amelyek most már megfelelnek az összes alapvető teszten.
  • Az absztrakció új szintjét javasolják a C nyelven írt kernelmechanizmusok Rust programjaiban való használatra, mint például a vörös-fekete fák, a hivatkozásokkal számlált objektumok, a fájlleírók létrehozása, a feladatok, a fájlok és az I/O vektorok.
  • Az illesztőprogram-fejlesztő komponensek továbbfejlesztették a file_operations modult, a modul! makrót, a makróregisztrációt és a kezdetleges illesztőprogramokat (vizsgálat és eltávolítás).
  • A Binder mostantól támogatja a fájlleírók és az LSM hookok átadását.
  • A Rust illesztőprogram egy funkcionálisabb példája javasolt - bcm2835-rng a Raspberry Pi kártyák hardveres véletlenszám-generátorához.

Ezenkívül megemlítenek néhány vállalat projektjét, amelyek a Rust magban történő használatával kapcsolatosak:

  • A Microsoft érdeklődését fejezte ki a Rust támogatás Linux kernelbe történő integrálására irányuló munkában való részvétel iránt, és készen áll arra, hogy az elkövetkező hónapokban illesztőprogram-megvalósításokat biztosítson a Hyper-V on Rust számára.
  • Az ARM azon dolgozik, hogy javítsa az ARM-alapú rendszerek Rust-támogatását. A Rust projekt már javasolt olyan változtatásokat, amelyek a 64 bites ARM rendszereket Tier 1 platformmá tennék.
  • A Google közvetlenül támogatja a Rust for Linux projektet, fejleszti a Binder interprocess kommunikációs mechanizmus új megvalósítását a Rustban, és fontolóra veszi a különböző illesztőprogramok átdolgozásának lehetőségét a Rustban. Az ISRG-n (Internet Security Research Group) keresztül a Google finanszírozta a Rust támogatás Linux kernelbe való integrálását.
  • Az IBM bevezette a rendszermag támogatását a Rust for PowerPC rendszerekhez.
  • Az LSE (Systems Research Laboratory) laboratórium egy SPI-illesztőprogramot fejlesztett ki Rustban.

Forrás: opennet.ru

Hozzászólás