Nick Desaulniers (), aki a Google-nál foglalkozik a Linux kernel buildelésével Clang fordító segítségével, és emellett javítani a Rust fordító hibáit, melyik konferencián tart egy sessiont a Rust nyelven történő kernel komponens fejlesztési lehetőségeiről. Nick mikro-konferenciát tart az LLVM-ről, és úgy véli, hasznos lenne megvitatni a Rust integrációjának technikai aspektusait a kernelbe (már készített egy működő prototípust a KBuild számára), és megérteni, vajon szükség van-e egyáltalán a Rust támogatásának hozzáadására, valamint milyen korlátozásokat kellene figyelembe venni a Rust használatakor.
Emlékeztetünk arra, hogy a legutóbbi vitában a "Open Source Summit and Embedded Linux" konferencián Linus Torvalds a nem alapvető kernel alrendszerek fejlesztésének Rust nyelven történő feldolgozását (például meghajtókat). A Rust nyelven történő meghajtófejlesztés lehetősége minimális erőfeszítéssel biztonságosabb és jobb minőségű meghajtók létrehozását tenné lehetővé, megszabadulva az olyan problémáktól, mint a már felszabadított memória területekhez való hozzáférés, a nullához való mutatók dereferálása és a pufferek túllépése. Már léteznek néhány külső projekt ennek a lehetőségnek a megvalósítására:
- A "Fish in a Barrel" cég fejlesztői eszközkészlet a Linux kernelhez készült modulok Rust nyelven történő írásához, a védelem növelése érdekében absztrakt rétegek készletét használva a kernel interfészei és struktúrái felett. A rétegek automatikusan generálódnak a meglévő kernel header fájlok alapján egy segédeszköz segítségével. . A rétegek összeszereléséhez Clang-ot használnak. Az összeszerelt modulok a réteken kívül staticlib csomagot is használnak.
- A Hongkongi Egyetem kutatói a Rust nyelven írt meghajtók fejlesztését célzó projektet beágyazott rendszerekhez és IoT eszközökhöz, amely szintén a bindgen-t használja a kernel header fájlokra alapozó rétegek generálásához. A keretrendszer lehetővé teszi a meghajtók biztonságának növelését a kernel módosítása nélkül - ahelyett, hogy további izolációs szinteket hoznának létre a meghajtók számára a kernelben, javasolják, hogy a problémákat a fordítási időszakban blokkolják, biztonságosabb Rust nyelv alkalmazásával. Úgy vélik, hogy ez a megközelítés keresett lehet a berendezésgyártók körében, akik gyorsan, megfelelő auditálás nélkül fejlesztenek saját meghajtóikat.
- A keretrendszer fejlesztői a C kód Rust-ra való fordításához, Kísérletek a magmódok átalakítására minimális manuális beavatkozással. A problémák között szerepel a kernel számos részében használt GCC kiterjesztések alkalmazása, amelyeket a C2Rust jelenleg nem támogat. Ennek megoldására a C2Rust tervez támogatást adni a GCC inline, cold, alias, used és section attribútumaihoz, valamint bővíteni az inline assembler képességeit, és megoldani a párhuzamosan igazított és csomagolt struktúrákkal kapcsolatos problémákat (például xregs_state). Azok között a jelentős problémák között, amelyek manuális beavatkozást igényelnek, említésre kerül a nem triviális C makrók Rust makrókká történő fordításának lehetetlensége, valamint a típusok felülbírálása, mivel a C2Rust a C típusokat a libc csomagban található definíciókra fordítja, de ezt a csomagot nem lehet használni a kernel moduljaiban.
Forrás: opennet.ru
