Már megjelent a Linuxon futó Rust illesztőprogram-támogatás javításainak harmadik verziója

Hat hónappal a második változat megjelenése után, Miguel Ojeda, a Rust-for-Linux projekt szerzője, ismertette a harmadik lehetőségre vonatkozó javaslatot eszközillesztő-programok fejlesztéséhez Rust nyelven a Linux Kernelben.

A Rust támogatás kísérletinek tekinthető, de a linux-next ágba való felvételéről már megállapodás született. A fejlesztést a Google és az ISRG (Internet Security Research Group) szervezet finanszírozza, amely a Let's Encrypt projekt alapítója, és hozzájárul a HTTPS népszerűsítéséhez és az internet biztonságát javító technológiák fejlesztéséhez.

Nem szabad elfelejteni, hogy a javasolt változtatások lehetővé teszik a Rust második nyelvként történő használatát a kernel-illesztőprogramok és -modulok fejlesztéséhez.

Rust illesztőprogramok Linuxon
Kapcsolódó cikk:
A Rust illesztőprogram-támogatás javításainak második verziója Linuxon már leszállítva

A rozsda támogatása alapértelmezés szerint nem aktív opcióként van hirdetve és ez nem eredményezi azt, hogy a Rust bekerüljön a szükséges alapvető összeállítási függőségek közé. A Rust használata az illesztőprogramok fejlesztésére lehetővé teszi, hogy minimális erőfeszítéssel jobb és biztonságosabb illesztőprogramokat hozzon létre, anélkül, hogy a felszabadult memóriaterülethez való hozzáféréssel, a nullmutatók hivatkozásának megszüntetésével és a pufferkorlátok túllépésével kellene gond nélkül elkészítenie.

A javítások új verziója továbbra is kiküszöböli a javítások első és második verziójának tárgyalása során elhangzott megjegyzéseket és a legszembetűnőbb változtatásokat, amelyeket találhatunk:

Áttért a Rust 1.57 stabil verzióra referencia fordítóként és a Rust 2021 nyelv stabilizált kiadásához való kötődés biztosított. Átállás a Rust 2021 p specifikációraengedélyezte a munka megkezdését, hogy elkerülje az ilyen instabil funkciók használatát olyan javításokban, mint a const_fn_transmute, const_panic, const_unreachable_unchecked és core_panic és try_reserve.

Ez is kitűnik az alloc verzió fejlesztése folytatódott a Rust könyvtárból, az új verzióban, a "no_rc" és a "no_sync" opciók vannak megvalósítva a funkció letiltására amelyet a rendszermag Rust kódjában nem használnak, így a könyvtár modulárisabbá válik. Továbbra is együttműködünk a fő alloc fejlesztőkkel, hogy a szükséges kernelmódosításokat behozzuk a fő könyvtárba. A "no_fp_fmt_parse" opció, amely a könyvtár kernelszintű működéséhez szükséges, átkerült a Rust alapkönyvtárába (kernel).

A kód megtisztítása a lehetséges fordítói figyelmeztetések eltávolítása érdekében amikor a rendszermagot CONFIG_WERROR módban fordítjuk. Amikor a kódot Rustban hozzuk létre, további diagnosztikai fordítómódok és Clippy Linter figyelmeztetések is megjelennek.

Ők javasolták absztrakciókat a seqlock használatához (szekvenciazárak), visszahívások energiagazdálkodáshoz, memória I/O (readX / writeX), megszakítás- és szálkezelők, GPIO, eszközelérés, illesztőprogramok és hitelesítő adatok rozsdakódban.

Az illesztőprogram-fejlesztő eszközöket bővítették áthelyezhető mutexek, bititerátorok, egyszerűsített kötések a mutatókon keresztül, továbbfejlesztett hibadiagnosztika és adatbusz-független infrastruktúra használatával.

A hivatkozásokkal való munka a Ref típus használatával javult egyszerűsített, a refcount_t háttérrendszeren alapul, amely az azonos nevű központi API-t használja a hivatkozások számlálására. A szabványos leképezési könyvtárban biztosított Arc és Rc típusok támogatása megszűnt, és nem érhető el a kernel szintjén végrehajtott kódban (magára a könyvtárra vonatkozóan készültek lehetőségek ezeknek a típusoknak a letiltására).

A javításokhoz a PL061 GPIO illesztőprogram Rust nyelven átírt verziója került. Az illesztőprogram egyik jellemzője, hogy szinte soronkénti megvalósítása megismétli a meglévő C GPIO illesztőprogramot. Azok a fejlesztők, akik szeretnének megismerkedni a Rust épületvezérlőivel, soronkénti összehasonlítást készítettek, amely segít megérteni, hogy a Rustban mi épül fel a C kódból.

A Rust fő kódbázisa a rustc_codegen_gcc-t alkalmazza, amely a GCC rustc-háttérprogramja, amely AOT fordítást valósít meg a libgccjit könyvtár használatával. A háttérprogram megfelelő fejlesztésével lehetővé teszi a kernelben szereplő Rust kód összegyűjtését a GCC segítségével.
Az ARM, a Google és a Microsoft mellett a Red Hat érdeklődését fejezte ki a Rust használata iránt a Linux kernelben.

Végül, ha többet szeretne tudni róla, tájékozódhat a részletekről A következő linken.


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: AB Internet Networks 2008 SL
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.