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.
Tartalomjegyzék

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.