Harmadik kiadású kernel javítások Linux Rust nyelvi támogatással

Miguel Ojeda, a Rust-for-projekt szerzőjeLinux, amelyet a kernel fejlesztőinek megfontolására javasoltak Linux A Rustban eszközillesztők fejlesztéséhez szükséges komponensek harmadik verziója. A Rust támogatása kísérleti jellegűnek tekinthető, de már jóváhagyták a linux-next ágba való felvételét. A fejlesztést a Google és az ISRG (Internet Security Research Group), a Let's Encrypt projekt alapítója finanszírozza, amely a HTTPS-t és az internetes biztonsá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.

Az új javítás kiadása továbbra is foglalkozik az első és második verziójának megvitatása során felmerült aggályokkal. A legjelentősebb változások a következők:

  • Befejeződött az átállás a stabil Rust 1.57 kiadás referencia fordítóként való használatára, és biztosított a stabil Rust 2021 nyelvi kiadáshoz való kötés. Korábban a javítások a Rust béta ágához voltak kötve, és néhány instabilnak minősített nyelvi funkciót használtak. A Rust 2021 specifikációra való áttérés lehetővé tette számunkra, hogy megkezdjük az olyan instabil funkciók eltávolítását a javításokból, mint a const_fn_transmute, const_panic, const_unreachable_unchecked, core_panic és try_reserve.
  • A javításokban található alloc Rust könyvtár verziójának fejlesztése folytatódott. Ezt a verziót úgy módosították, hogy megakadályozzák a memória-allokációs függvények esetleges pánikhelyzeteket generálását olyan hibák esetén, mint például a memóriahiány. Az új verzió a "no_rc" és a "no_sync" opciókat valósítja meg a Rust alapkódjában nem használt funkciók letiltására, így a könyvtár modulárisabb lesz. Folytatódik a munka az alap alloc fejlesztőivel a alapkönyvtárhoz szükséges változtatások migrálásán. A "no_fp_fmt_parse" opció, amely a könyvtár kernel szintű működéséhez szükséges, migrálásra került az alap Rust könyvtárba.
  • A kódot kitisztították, hogy kiküszöböljék a lehetséges fordítási figyelmeztetéseket a CONFIG_WERROR módban történő kernel fordításakor. További fordítási diagnosztikai módok és Clippy linter figyelmeztetések lettek engedélyezve a Rust kód fordításakor.
  • Absztrakciók használatát javasolják a Rust kódban seqlockokhoz (szekvenciazárakhoz), energiagazdálkodási visszahívásokhoz, I/O memóriához (readX/writeX), megszakítás- és szálkezelőkhöz, GPIO-hoz, eszközökhöz, illesztőprogramokhoz és hitelesítő adatokhoz.
  • A meghajtóprogram-fejlesztő eszközök kibővültek, és magukban foglalják a mozgatható mutexeket, bitenkénti iterátorokat, egyszerűsített pointer-csomagolókat, továbbfejlesztett összeomlás-diagnosztikát és egy adatbusz-független infrastruktúrát.
  • A referenciakezelést továbbfejlesztették egy egyszerűsített Ref típus használatával, amely a refcount_t háttérrendszeren alapul, és az azonos nevű kernel API-t használja a referenciaszámláláshoz. Az Arc és Rc típusok támogatását a standard alloc könyvtár eltávolította, és nem érhető el a kernel szintű kódban (maga a könyvtár számára biztosítottak opciókat ezen típusok letiltására).
  • A javítások tartalmazzák a PL061 GPIO illesztőprogram Rustban átírt verzióját. Az illesztőprogram egyedülálló tulajdonsága, hogy implementációja szinte sorról sorra megegyezik a C-ben meglévő GPIO illesztőprogrammal. Azoknak a fejlesztőknek, akik szeretnék megtanulni, hogyan hozhatnak létre illesztőprogramokat Rustban, egy sorról sorra történő összehasonlítás áll rendelkezésre, amely segít megérteni a C kódot átalakított Rust konstrukciókat.
  • A Rust alapkódbázisa a rustc_codegen_gcc-t használja, ami egy rustc backend a GCC-hez, és előretolt fordítást (AOT) valósít meg a libgccjit könyvtár használatával. Megfelelő fejlesztéssel a backend lehetővé teszi a kernelben használt Rust kód GCC-vel történő fordítását.
  • Az ARM, a Google és a Microsoft mellett érdeklődés mutatkozik a Rust nyelv kernelben való használata iránt. Linux A Red Hat azt mondta. Emlékeztetőül, a Google közvetlenül támogatja a Rust projektet a ... számára. Linux, a Binder folyamatok közötti kommunikációs mechanizmus új implementációját fejleszti a Rustban, és fontolgatja különféle illesztőprogramok átírását a Rustban. A Microsoft megkezdte a Hyper-V illesztőprogramok implementálását a Rustban. Az ARM az ARM processzorokon alapuló rendszerek Rust-támogatásának fejlesztésén dolgozik. Az IBM beépítette a Rust-támogatást a PowerPC rendszerek kernelébe.

Forrás: opennet.ru

Vásároljon megbízható tárhelyet DDoS védelemmel, VPS VDS szerverekkel rendelkező webhelyekhez 🔥 Vásároljon megbízható weboldal tárhelyet DDoS védelemmel, VPS VDS szerverekkel | ProHoster