A Linux kernel dráma közepette érkezett a Rust 1.85.0

 Az 1.85 a 2024-es kiadás egy újabb javítása, amely tovább javítja memóriabiztonságot és az egyidejűségi modelleket és igyekszik egy jobb és megbízhatóbb eszközöket nyújtani teljesítménykritikus rendszerek fejlesztéséhez. A Rust elfogadtatása azonban, pont ott halad a legnehezebben, ahol a leginkább létjogosultsága van, a Linux kernel fejlesztésében.

A változások, amelyek szintaktikai és szemantikai kérdéseket is érintenek a visszafelé kompatibilitás szem előtt tartásával kerültek bevezetésre, hogy a meglévő kódbázisok destabilizálása nélkül lehessen a projektekbe a frissítéseket bevezetni. Tehát maga a nyelv tervezése és az azt övező filozófiák is azt sejtetik, hogy ez az a nyelv amivel kernel szinten dolgozni érdemes.

Főbb Rust 2024 változások

A Return Position Impl Trait élettartam rögzítési szabályai

Az egyik legjelentősebb változás a return position impl Trait (RPIT) típusok rögzítési szabályait érinti. A 2024-es kiadás módosítja az alapértelmezett élettartamrögzítési viselkedést, hogy kizárja a paraméterek implicit rögzítését, hacsak nem kérik kifejezetten a use<...> szintaxissal. Ez a módosítás megakadályozza a véletlen élettartam-bővítési forgatókönyveket, amelyek korábban finom hibákhoz vezettek az aszinkron függvényekben és a trait implementációkban. A régebbi kódbázisokat migráló fejlesztőknek ellenőrizniük kell a visszatérési típusaláírásokat, különösen az általános paramétereket aszinkron műveletekkel kombináló kontextusokban.

Időbeli hatókör-beállítások

A kiadás finomított időbeli hatókörszabályokat vezet be az if let kifejezések és a block tail kifejezések esetében. Az if let feltételekben létrehozott időbeliségek mostantól az egész if let blokkban fennmaradnak, kiküszöbölve ezzel a használat utáni hibák egy csoportját, amelyek akkor fordulhattak elő, amikor több mintaillesztésen keresztül hivatkoztak értékekre. Hasonlóképpen, a blokkokban lévő „tail” kifejezések hosszabb időbeli élettartamot kapnak, ami lehetővé teszi a kifejezések természetesebb láncolását mesterséges let-kötési követelmények nélkül. Ezek a változtatások a Rust érettségét mutatják a bonyolult vezérlésáramlási minták biztonságos kezelésében.

Natív aszinkron lezárások támogatása

A Rust 1.85.0 az async || {} szintaxis stabilizálásával teljesíti az aszinkron lezárások régóta várt ígéretét. Ez a funkció a Rust párhuzamossági eszköztárának kritikus hiányosságát zárja be azzal, hogy a zárlatok rögzíthetik a környezetüket, miközben futures-t állítanak elő. A megvalósítás három új szabványos könyvtári tulajdonságot vezet be - AsyncFn, AsyncFnMut és AsyncFnOnce -, amelyek tükrözik szinkron társaikat, de impl Future-t adnak vissza.

A következmények az aszinkronizált kódbázisokra nézve mélyrehatóak. Vegyük például ezt a HTTP-kiszolgálói middleware példát: 

async fn handle_request(req: Request) -> Response {
    let auth_token = req.headers().get("Authorization");
    let authenticate = async || {
        let db = connect_to_database().await;
        db.validate_token(auth_token.unwrap()).await
    };
    
    if authenticate().await.is_ok() {
        process_request(req).await
    } else {
        Response::unauthorized()
    }
}

 Ez a szintaxis kiküszöböli a kézi future wrappinggel kapcsolatos bojlerplate-et, miközben fenntartja a Rust szigorú tulajdonosi garanciáit az aszinkron határok között.

Rust-verzió-tudatos függőségi feloldás

A Cargo függőségi feloldója az 1.85.0-ban bevezeti a rust-verzió tudatosságot, kihasználva a Cargo.toml manifesztekben lévő rust-version mezőt. Ez a funkció megakadályozza az olyan függőségi gráf feloldást, amely a megadottnál újabb Rust verziót igényel, így hatékonyan kiküszöböli az eszközlánc-kompatibilitási problémák egy osztályát. A munkaterület karbantartók számára a feloldó mostantól szigorúan érvényesíti a default-features = false deklarációkat az örökölt függőségekre vonatkozóan, konzisztenciát teremtve a nagyméretű projektkonfigurációkban.

Stílus kiadások a Rustfmt-ben

A Rustfmt a nyelvi kiadásoktól függetlenített stíluskiadásokat vezet be, lehetővé téve a csapatok számára, hogy a modern formázási szabályokat a teljes kiadásváltás vállalása nélkül is átvegyék. Az 1.85.0 kiadás javított azonosító rendezési algoritmusokat tartalmaz, amelyek a nyers azonosítókat (r#foo) és a numerikus utótagokat következetesen kezelik a projektekben.

A Linux kernel dráma

A Linux kernelt hagyományosan C nyelven fejlesztik, de 2021-től fokozatosan elkezdték a Rust bevezetését a jobb memóriabiztonság és a gyakori programozási hibákkal szembeni kisebb sebezhetőség ígérete miatt. Azonban több fejlesztő köztük veterán kernel karbantartók, már rögtön a kezdeteknél megkérdőjelezték, hogy célszerű e különböző programozási nyelvek keverése egy ilyen kritikus helyen mint a kernel. A viták egészen odáig fajultak, hogy azok kezdtek vallási felhangot kapni.

A vita az idei év elején érte el a csúcspontot, amikor Christoph Hellwig a kernel DMA (Direct Memory Access) segédprogramjainak karbantartója elutasította azokat azokat a javításokat, amelyek lehetővé tették volna, hogy a Rust illesztőprogramok együttműködhessenek az ő C-alapú alrendszereivel. Hellwig azzal érvelt a nyelvek közötti integráció megnehezíti a karbantartást és széttöredezi a kritikus infrastruktúrát, és gyakorlatilag rákos daganathoz hasonlította a Rust betüremkedését az ő fejlesztői munkájába. A Rust fejlesztők ezt nyilván nem hagyták szó nélkül hiszen Hellwig egyértelműen korlátozásokat vezetett be olyan alrendszerek magvalósításánál amelyek nem tartoztak a felügyelete alá. A Rust fejlesztők először a közösségi médiában kerestek támogatókat, majd Linus Torvalds-ot kérték meg hogy oldja fel a problémát. Linusnak nem tetszett, hogy a Rust fejlesztők élükön Hector Martin a közösségi médiához fordultak. Miután Linus nem Matinnak adott igazat sőt őt nevezte meg a probléma forrásaként, Martin lemondott karbantartói pozíciójáról és csalódottságának adott hangot a vezetéssel kapcsolatban.

A dráma végül azzal vett pozitív fordulatot, hogy rögzítették az együttműködési irányelveket, és a Rust fejlesztéseket elismerték. A C kódok a továbbiakban nem módosíthatják úgy az apikat, hogy a Rust-ban meglévő fejlesztések működésképtelenné váljanak. Linus tehát végül felülbírálta Hellwig blokádját. 

Osszd meg ezt a cikket
Megjelent a TypeScript 5.9
A TypeScript 5.9 egyik legfontosabb újítása a halasztott modulkiértékelés (deferred module evaluation) támogatása az import defer szintaxison keresztül, amely az ECMAScript egy jövőbeli szabványjavaslatát ülteti át a gyakorlatba.
 Megjelent a Linux Kernel 6.16
Megjelent a Linux kernel 6.16-os verziója. Bár a kiadási folyamat a fejlesztők szerint a lehető legjobb értelemben vett „eseménytelenséggel” zajlott le, a felszín alatt jelentős fejlesztések történtek, amelyek biztonsági, teljesítménybeli és rendszerkezelési szempontból is előrelépést jelentenek. Eközben a soron következő 6.17-es verzió fejlesztése a megszokottnál kissé zavarosabban indult – ennek hátterében olyan emberi tényezők állnak, amelyek ritkán kerülnek reflektorfénybe egy ilyen méretű nyílt forráskódú projekt esetében.
CachyOS a gamerek Linux disztribuciója
Sokan úgy gondolják, hogy a Linux egy bonyolult, technikai tudást igénylő operációs rendszer, amelyen nem lehet játszani, azt csak kizárólag Windows-on lehet. Az utóbbi években számos játékosok számára készült Linux rendszer készült, elég csak a SteamOS-re gondolni. Ezek közé tartozik a CachyOS is – egy Arch Linux alapokra épülő disztribúció, amely kifejezetten a teljesítmény, a biztonság és a felhasználói élmény hármasára fókuszál. A rendszer legfrissebb, 2025 júliusi kiadása pedig jól példázza, hogyan válhat egy korábban rétegszámba menő operációs rendszer a mindennapi használatban is megbízható és vonzó alternatívává, olyannyira hogy az utóbbi időben minden más disztribúciót maga mögé utasított a DistroWatch listáján.
A Rhino Linux új kiadással jelentkezik: 2025.3
A Linux disztribúciók körében főként kétféle szemléletmód terjedt el, vannak a stabil, ritkán frissülő rendszerek biztonságos kiszámíthatósággal, és a naprakész, de időnként kényes egyensúlyon balanszírozó, gördülő kiadású disztribúciók. A Rhino Linux ezt a két ellenpontot próbálja áthidalni, azaz egyszerre próbál naprakész lenni gördülő disztribúcióként, de alapként az Ubuntura épül, hogy megfelelő stabilitást is biztosítson.
ALT Linux 11.0 Education az orosz oktatási intézmények fundamentuma
Az ALT Linux egy orosz gyökerekkel rendelkező, RPM csomagkezelőre épülő Linux disztribúció, amelynek alapjait a Sisyphus csomagtár képezi. Kezdetben orosz lokalizációs erőfeszítésekből nőtte ki magát, együttműködve olyan nemzetközi disztribúciókkal, mint a Mandrake és a SUSE Linux, különös tekintettel a cirill betűs írás támogatására.
Nem támogatja tovább az X11-et GNOME 49
Bár a GNOME talán a legáltalánosabban használt asztali környezet az egyes Linux disztribúciók esetében, a fejlesztők a GNOME 49-ben mégis mélyebb szerkezeti változások mellett döntöttek, amely kihatással lesz a disztribúciók támogatására.