A systemd átöleli a Rustot, de határt húz az alapkönyvtáraknál

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

kami911 képe

A systemd nemrég hozott döntése után, hogy hivatalosan is támogatja a Rust-ot, a fejlesztők, Christian Brauner és Lennart Poettering részletesen leírták, hogyan illesztik be a nyelvet a projektbe, és hol nem fogják használni.

A legfontosabb korlátozás a systemd központi megosztott könyvtárait érinti. Bár Rust-cal önálló futtatható programokat lehet fejleszteni, a projekt alapvető könyvtárai, köztük a libsystemd-shared.so, továbbra is C-ben maradnak.

A fejlesztők szerint a fő akadály, hogy a Rust nem nyújt első osztályú támogatást megosztott könyvtárakhoz, és nincs stabil ABI-je. Enélkül a Rust integrálása a systemd megosztott könyvtáraiba azt eredményezné, hogy a Rust-os kód több könyvtárban és futtatható állományban is megduplázódik.

Ez különösen gondot jelentene a systemd számára, amely jelenleg több mint 180 binárisból áll. A statikus linkelés jól működhet önálló programoknál, de a fejlesztők szerint kényelmetlen a projekt alapinfrastruktúrája szempontjából.

Helyette a systemd a meglévő C-s funkcionalitását Rust crate-eken keresztül teszi elérhetővé, így a Rust-ban írt futtatható programok ugyanazokat a belső API-kat érhetik el, mint a C-s megfelelőik. Így a két nyelven írt programok azonosan viselkednek, többek között a parancssori kezelés, a súgóüzenetek és a hibajelentés terén.

A fejlesztők azt is tisztázták, miért utasította el a systemd a Cargo-t, a Rust szabványos build- és függőségkezelő eszközét. A projekt továbbra is kizárólag a Mesont használja, és nem akarják bonyolítani a helyzetet két külön build rendszer fenntartásával. Emellett a Cargo-hoz kapcsolódó biztonsági és szoftver-ellátási lánccal összefüggő aggályokat is megemlítették.

A külső Rust crate-ek terén is óvatosan halad tovább a systemd. Bár nem zárják ki a harmadik féltől származó függőségeket, a karbantartók előbb több tapasztalatot szeretnének szerezni a Rust ökoszisztémával, mielőtt ilyeneket beemelnének.

Egyelőre a Rust komponensek a Rust szabványos könyvtára nélkül, no_std módban fognak működni. Ehelyett a systemd meglévő funkcionalitására támaszkodnak, beleértve a biztonságkritikus fájlrendszer-műveleteket is.

Fontos pontosítás vonatkozik a meglévő C kódra is. A karbantartók kifejezetten elutasítják, hogy csak a programozási nyelv kedvéért írjanak újra bevált komponenseket Rust-ban. Szerintük önmagában az, hogy a C-t Rust-ra cserélik, nem oldja meg automatikusan a biztonsági problémákat, különösen akkor, ha a fő támadási felületet a fájlrendszer-útvonalak kezelése jelenti, nem pedig a memóriabiztonság.

A Rust támogatás így opcionális marad. A fejlesztők elismerik, hogy a Rust nem támogat minden olyan architektúrát, amelyet a systemd jelenleg igen, ezért a Rust nélküli buildek továbbra is teljes értékűek és támogatottak lesznek.