Születésének tizedik évfordulóját ünnepli a Rust nyelv, megjelent az 1.87 verzió

6/10
A kiadás több hasznos fejlesztést hoz: egyszerűbbé vált a programok közti adatáramlás az új adatcsatorna-kezeléssel, bizonyos gépi szintű gyors műveletek mostantól biztonságosabban használhatók, és a nyelv jobban kezeli az összetett típuskifejezéseket is. Érdemes telepíteni azoknak, akik naprakészen szeretnék kihasználni a nyelv új lehetőségeit.

A Rust 1.87 május 15-én jelent meg, a nyelv hagyományos hathetes kiadási ütemezésének megfelelően, és tartalmazza mindazokat a változtatásokat, amelyek az elmúlt másfél hónap során a béta csatornába kerültek. A verzió különlegessége, hogy a programnyelv történetének egyik mérföldkövéhez kötődik: pontosan tíz évvel ezelőtt, 2015. május 15-én jelent meg a nyelv első stabil kiadása. Az évfordulót a fejlesztői közösség ünnepélyes eseménnyel tette emlékezetessé a hollandiai Utrechtben, ahol személyes találkozó keretében ünnepelték meg a tizedik évfordulót és az eddig elért eredményeket.

Születésének tizedik évfordulóját ünnepli a Rust nyelv, megjelent az 1.87 verzió
Rust 10.évfordulós Party (Kép forrása: Rust blog)

Info
A Rust programozási nyelvet Graydon Hoare indította 2006-ban, majd 2009-től a Mozilla támogatta. A cél egy biztonságos, gyors és párhuzamos végrehajtásra alkalmas nyelv létrehozása volt. Az első stabil verzió 2015-ben jelent meg, azóta rendszeres, hathetes kiadási ciklusban fejlődik. A nyelvet 2021 óta a Rust Foundation felügyeli. A Rust különösen népszerű a rendszerprogramozásban, és gyakran emlegetik a C/C++ biztonságos alternatívájaként.

Anonym folyamatcsatornák a standard könyvtárban

Az új verzió egyik legfontosabb technikai újítása, hogy a Rust standard könyvtára mostantól támogatja az anonym folyamatcsatornák, vagyis a név nélküli pipe-ok használatát. Ez a lehetőség szorosan integrálódik a std::process::Command bemeneti és kimeneti adatfolyamait kezelő mechanizmusaiba. Az új megoldással a fejlesztők egyszerűen tudják egyesíteni például a standard kimenetet és a hibakimenetet egyetlen adatcsatornába, amelyet egy másik folyamat vagy komponens közvetlenül olvashat. Míg korábban ehhez külön szálakat vagy platformspecifikus API-kat kellett használni, mostantól ez teljes mértékben megvalósítható Rust standard eszköztárral, hordozható és biztonságos módon.

Architektúrafüggő utasítások biztonságos használata

A Rust 1.87 fontos fejlesztést hozott az architekturális intrinsic területén is. Azok az utasításkészletek, amelyek eddig csak unsafe kódban voltak elérhetők, mostantól biztonságosan használhatók, amennyiben a célplatform támogatja őket, és a program futásidőben ellenőrzi az elérhetőségüket. Ez lehetővé teszi, hogy olyan számításigényes műveletek, mint például a vektoros tömbösszegzés AVX2 utasításokkal, teljes egészében biztonságos Rust kóddal írhatók legyenek, amennyiben a feltételek teljesülnek. Ez erősíti a nyelv azon filozófiáját, hogy a teljesítmény ne járjon a biztonság rovására.

Inline assembly ugrás Rust blokkra

Az inline assembly használatában is bővültek a lehetőségek. A Rust mostantól lehetőséget biztosít arra, hogy az assembly utasítások közvetlenül egy Rust blokkra ugorjanak, amelynek végrehajtása után a program folytatódik. Ez a funkció különösen hasznos lehet alacsony szintű programozási területeken, például operációs rendszermagok vagy beágyazott vezérlők írásakor, ahol a gépi szintű vezérlésátadásnak precíznek és hatékonynak kell lennie. Az új mechanizmus révén a Rust és az assembly közötti határ elmosódik, és lehetővé válik az optimalizált kontrollszerkezetek írása biztonságos és olvasható módon.

Generikus visszatérési típusok pontosítása trait-ekben

A Rust 1.87 stabilizálja azt a képességet, hogy trait definíciókban is pontosan meghatározhatók legyenek azok a típusok és élettartamok, amelyeket egy impl Trait visszatérési érték használ. Ez korábban csak szabad függvények esetén volt elérhető, de mostantól a trait-ek definíciói is profitálhatnak ebből a bővítésből. A fejlesztők így világosabban és biztonságosabban definiálhatják az interfészeket, miközben a fordító pontosabb típusellenőrzést tud végezni. Ez különösen fontos összetettebb, generikus könyvtárak vagy absztrakciók esetén.

Bővülő szabványos API és konstans támogatás

A Rust standard könyvtára tovább bővült számos új metódussal és típusimplementációval. Többek között új szűrési lehetőségek váltak elérhetővé vektorok és láncolt listák esetén, valamint kibővült a szeleteken végezhető műveletek köre, ideértve a különféle szétválasztási és részhalmaz-kezelési megoldásokat. Az operációs rendszerhez kötődő sztringtípusok mostantól támogatják a formázott megjelenítést, így közvetlenül is beilleszthetők szövegkimenetekbe. Új típuskonverziók jelentek meg az I/O-csatornákhoz kapcsolódó olvasó- és íróobjektumok számára, amelyek lehetővé teszik azok átalakítását szabványos bemeneti-kimeneti típusokká, fájlleíróvá vagy más operációs rendszer által kiadott erőforráshivatkozássá. Emellett számos eddig is stabil metódus használhatóvá vált konstans környezetben is, így bizonyos adatfeldolgozási vagy memóriaműveletek már fordítási időben végrehajthatók, ami elősegíti a hatékonyabb, optimalizált programok létrehozását.

Egy régi célplatform eltávolítása

A kiadás egy kisebb, de hosszú távon jelentős változása, hogy a i586-pc-windows-msvc célplatform támogatása megszűnt. Ez az architektúra az SSE2 utasításkészlet nélküli gépeket célozta, de a Windows 10, amely a hivatalosan támogatott minimum rendszerverzió, már alapértelmezetten megköveteli ezt az utasításkészletet. Emiatt a fejlesztők azt javasolják, hogy mindenki térjen át az i686-pc-windows-msvc célplatformra, amely továbbra is támogatott és aktívan karbantartott.

A kiadás elérhető a rustup frissítőeszközzel, amely a stabil csatornán keresztül telepíti az új verziót.

$ $ rustup update stable

A részletes változáslista és dokumentáció a hivatalos oldalon található meg. Azok, akik szívesen tesztelnék a következő kiadásokat, átállhatnak a béta vagy nightly csatornákra, és segíthetnek hibák bejelentésével.