közzétett rendszer programozási nyelv kiadása Rozsda 1.38, amelyet a Mozilla projekt alapított. A nyelv a memória biztonságára összpontosít, automatikus memóriakezelést biztosít, és lehetőséget biztosít a magas szintű párhuzamosság elérésére szemétgyűjtő vagy futási idő nélkül.
A Rust automatikus memóriakezelése megszabadítja a fejlesztőt a mutatómanipulációtól, és megvédi az alacsony szintű memóriakezelésből eredő problémákat, mint például az utólagos memóriaelérések, a nulla mutatóhivatkozások, a puffertúllépések és hasonlók. Csomagkezelő fejlesztés alatt áll a könyvtárak terjesztésére, az összeállítás biztosítására és a függőségek projekt általi kezelésére. Szállítmány, amely lehetővé teszi, hogy egy kattintással megszerezze a programhoz szükséges könyvtárakat. Egy tárhely támogatott a könyvtárak fogadására ládák.io.
Hozzáadott egy csővezetékes fordítási módot (csővezetékes), amelyben a függő ládacsomag felépítése azonnal megkezdődik, amint a függőségi metaadatok elérhetővé válnak, anélkül, hogy megvárnák a fordítás befejezését. Csomag összeállításakor a függőségeket nem kell teljesen összeállítani, csak meg kell határozni a metaadatokat, amelyek tartalmazzák a típusok, függőségek és exportált elemek listáját. A metaadatok a fordítási folyamat korai szakaszában elérhetőek, így a linkelt csomagok már sokkal korábban összeállíthatók. Egyetlen csomagok készítésekor a javasolt mód nem befolyásolja a teljesítményt, de ha az összeállítás elágazó függőségű csomagokat fed le, a teljes összeállítási idő 10-20%-kal csökkenthető;
Biztosítja a funkciók helytelen használatának észlelését std::mem::inicializálva и std::mem::nullázva. Például az std::mem::uninitialized kényelmes a tömbök gyors létrehozásához, de félrevezeti a fordítót, mert úgy tűnik, hogy inicializál, de a valóságban az érték inicializálatlan marad. A mem::uninitialized függvény már elavultként van megjelölve, és javasolt helyette egy köztes típus használata TalánUnit. Ami a mem::zeroed-et illeti, ez a függvény problémákat okozhat azoknál a típusoknál, amelyek nem fogadnak el nulla értékeket.
A nem definiált viselkedés azonosítása érdekében az új kiadás egy szálellenőrzést ad a fordítóhoz, amely a mem::uninitialized vagy a mem::zeroed problémákat észlel. Például most hibaüzenet jelenik meg, amikor megpróbálja használni a mem::uninitialized vagy mem::zeroed parancsot &T és Box‹T› típusokkal, amelyek olyan mutatóobjektumokat képviselnek, amelyek nem fogadhatnak el null értékeket;
Az „#[elavult]” attribútumot kibővítettük, hogy lehetővé tegye a rekeszcsomagok elavultként való megjelölését és a későbbi törlés ütemezését. A Rust 1.38-tól kezdve ez az attribútum makrókhoz is használható;
Hozzáadtuk a „#[global_allocator]” attribútum használatának lehetőségét az almodulokban;
Funkció hozzáadva std::any::type_name, amely lehetővé teszi a típus nevének kiderítését, ami hasznos lehet hibakeresési célokra. Például a program végrehajtása során megtudhatja, hogy milyen típusú függvényt hívtak:
fn main() {
legyen _: i32 = gen_value(); # "i32" lesz kinyomtatva
legyen _: String = gen_value(); # kiírja az "alloc::string::String" kifejezést
}
A szabványos könyvtár kiterjesztett funkciói:
slice::{concat, connect, join} mostantól a &[T] értéket is felveheti a &T;
A "*const T" és a "*mut T" most megvalósítja a jelölőt::Unpin;
Az "Arc‹[T]›" és az "Rc‹[T]›" most megvalósítja a FromIterator‹T›-et;
iter::{StepBy, Peekable, Take} most implementálja a DoubleEndedIteratort.
Az ascii::EscapeDefault a klónozást és a megjelenítést valósítja meg.
Az API-k új része átkerült a stabil kategóriába, beleértve a stabilizált módszereket is
‹*const T›::cast, ‹*mut T›::cast,
Időtartam::as_secs_f{32|64},
Időtartam::div_duration_f{32|64},
Időtartam::div_f{32|64},
Időtartam::from_secs_f{32|64},
Időtartam::mul_f{32|64},
osztási műveletek a maradékkal
div_euclid és rem_euclid minden integer primitívhez;
Támogatás hozzáadva a „--features” opció többszöri megadásához, hogy különböző funkciókat engedélyezzen a rakománycsomag-kezelőben;
A fordító egy harmadikat biztosít szint Támogatás a célplatformokhoz aarch64-uwp-windows-msvc, i686-uwp-windows-gnu, i686-uwp-windows-msvc, x86_64-uwp-windows-gnu, x86_64-uwp-windows-msvc targets,-mlinuxv7 -gnueabi, armv7-unknown-linux-musleabi, hexagon-unknown-linux-musl és riscv32i-unknown-none-elf. A harmadik szint alapvető támogatást foglal magában, de automatikus tesztelés és a hivatalos buildek közzététele nélkül.