A systemd hivatalosan is bevezeti a Rust-támogatást az új komponensekhez

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 projekt hivatalosan is bevezette a Rust-ban írt programok fejlesztésének támogatását, miután beolvasztották a Linux kernel fejlesztője, Christian Brauner által benyújtott beolvasztási kérelmet. A változtatás a projekt fő ágába került, és új fejlesztési lehetőséget ad a systemd-nek, miközben a meglévő, C-alapú architektúra érintetlen marad.

Nem készül teljes átírás Rust-ra. A karbantartók tudatosan korlátozott megközelítésben állapodtak meg: Rust-at csak új, önálló komponensekhez használhatnak, amelyekre a systemd más részei nem épülnek. A meglévő C kódhoz nem nyúlnak.

A build folyamattal kapcsolatban is fontos döntés született. Ahelyett, hogy bevezetnék a Cargo-t, a Rust szokásos csomagkezelőjét és build eszközét, a systemd továbbra is minden buildhez a Mesont használja. Így a Rust-os fejlesztés szorosan illeszkedik a projekt meglévő build infrastruktúrájába.

A megvalósítás szigorú korlátokat szab a függőségeknek is. A Rust-ban írt programok no_std megközelítést használnak, vagyis nem támaszkodnak a Rust standard könyvtárára vagy külső third-party crate-ekre. Ehelyett a systemd meglévő C könyvtáraival kommunikálnak generált bindingeken keresztül.

Memóriakezeléshez a systemd saját Rust-os megvalósításokat ad a szokásos konténertípusokra, és az allokációs hibákat kifejezetten lekezeli, ahelyett hogy a program leállna. Az új infrastruktúra wrapper rétegeket is tartalmaz naplózáshoz, parancssori argumentumok kezeléséhez, eseményfeldolgozáshoz és hibakezeléshez, így a Rust-os segédprogramok viselkedése összhangban marad a C-ben írt megfelelőikkel.

A Rust támogatás opcionális, és a konfiguráció során automatikusan felismerik. Akik engedélyezni szeretnék, azoknak Rust 1.85 vagy újabb, bindgen 0.71.1 vagy újabb, valamint Meson 1.4 vagy újabb verzióra van szükségük. Azok a rendszerek, ahol ez az eszközkészlet nem áll rendelkezésre, továbbra is le tudják fordítani a systemd-et Rust támogatás nélkül.

Az első mérések szerint egy lecsupaszított, Rust-ban írt parancssori segédprogram körülbelül 32 KB helyet foglal, míg a link-time optimalizációval fordított C megfelelője 20 KB. Ez első közelítésben jelzi a többlet erőforrásigényt, bár az összehasonlítás egy nagyon kicsi tesztprogramon alapul.

Az infrastruktúra első tervezett, valódi felhasználása a systemd-keyring-setup lesz, egy új segédprogram, amely a Linux kernel keyringekben tárolt tanúsítványok kezelését segíti. A megvalósítását külön fejlesztik, párhuzamosan a systemd megosztott könyvtáraihoz készülő további Rust wrappekkel.

A Linux disztribúciók számára a változás csomagolási kérdéseket vet fel. Azoknál a buildeknél, ahol minden elérhető funkciót engedélyeznek, szükség lesz a megfelelő Rust fordítóra és a bindgen függőségeire, vagy le kell tiltani a Rust támogatást, hogy elkerüljék a fordítási hibákat.

Hogy a Rust mennyire terjed el a systemd-en belül, a jövőbeli fejlesztésektől függ, de az ehhez szükséges alapok mostanra elkészültek.