հրապարակված համակարգի ծրագրավորման լեզվի թողարկում Ժանգ 1.36, որը հիմնադրվել է Mozilla նախագծի կողմից։ Լեզուն կենտրոնանում է հիշողության անվտանգության վրա, ապահովում է հիշողության ավտոմատ կառավարում և ապահովում է առաջադրանքների բարձր զուգահեռության հասնելու միջոց՝ առանց աղբահանող սարքի կամ գործարկման ժամանակի օգտագործման:
Rust-ի հիշողության ավտոմատ կառավարումն ազատում է ծրագրավորողին ցուցիչի մանիպուլյացիայից և պաշտպանում է ցածր մակարդակի հիշողության մանիպուլյացիայից առաջացող խնդիրներից, ինչպիսիք են հիշողության ազատ մուտքերը, զրոյական ցուցիչի մատնանշումները, բուֆերների գերակատարումները և այլն: Մշակվում է փաթեթների կառավարիչ՝ գրադարանները բաշխելու, հավաքումն ապահովելու և ծրագրի կողմից կախվածությունները կառավարելու համար: բեռ, որը թույլ է տալիս մեկ սեղմումով ստանալ ծրագրի համար անհրաժեշտ գրադարանները: Գրադարանները հյուրընկալելու համար աջակցվում է պահեստ crates.io.
Հատկանիշը կայունացել է Ապագա, որը ներկայացնում է արժեք, որի գնահատումը դեռ չի ավարտվել async / .wait բլոկների օգտագործման ժամանակ: Future-ի միջոցով սահմանված ասինխրոն արժեքները հնարավորություն են տալիս շարունակել օգտակար աշխատանք կատարել թելի մեջ՝ միաժամանակ սպասելով որոշակի արժեքի հաշվարկների ավարտին.
Գրադարանը կայունացել է հատկացնել, որն ապահովում է խելացի ցուցիչներ և հավաքածուներ՝ հիշողության կողմից հատկացված արժեքները կառավարելու համար: Հիշողության տեղաբաշխումը std-ում այժմ օգտագործում է տեսակը Մի բան, որոնք վերաարտահանվում են ալոկ. alloc-ի առանձին օգտագործումը իմաստ ունի այն հավելվածներում, որոնք կապված չեն std-ի հետ («#![no_std]»), ինչպես նաև գրադարաններում, որոնք նախատեսված են առանց std-ի նմանատիպ ծրագրերում օգտագործելու համար;
Արժեքների ճիշտ սկզբնավորման ստուգումները շրջանցելու համար առաջարկել է միջանկյալ տեսակ Գուցե միավոր, որը կարող է օգտագործվել mem::uniitialized ֆունկցիայի փոխարեն՝ որպես ավելի անվտանգ այլընտրանք։ Mem::uniitialized ֆունկցիան հարմար է զանգվածներ արագ ստեղծելու համար, բայց այն մոլորեցնում է կոմպիլյատորին, քանի որ այն կարծես սկզբնավորվել է, բայց իրականում արժեքը մնում է չնախաստորագրված: MaybeUninit-ը թույլ է տալիս բացահայտորեն ցույց տալ կոմպիլյատորին, որ արժեքը չնախաձեռնված է, հաշվի առնել դրա հետ կապված հնարավոր չսահմանված վարքագիծը, ինչպես նաև կազմակերպել ստուգումներ ծրագրերում «maybe_t:» և քայլ առ քայլ սկզբնավորման միջոցով՝ նշելով դրա ավարտը: օգտագործելով «.assume_init()» զանգը: MaybeUninit-ի գալուստով mem::uniitialized ֆունկցիան հնացել է և խորհուրդ չի տրվում օգտագործել;
NLL (Non-Lexical Lifetimes) տեխնիկան, որն ընդլայնել է փոխառված փոփոխականների կյանքի տևողությունը գրանցելու համակարգը, կայունացվել է Rust 2015 լեզվի համար (սկզբում NLL-ն աջակցվում էր միայն Rust 2018-ի կողմից): Լեքսիկական մակարդակում ժամկետներ սահմանելու փոխարեն, NLL-ն դա անում է կատարման հոսքի գրաֆիկի ցուցիչների բազմության մակարդակում: Այս մոտեցումը թույլ է տալիս բարձրացնել փոփոխականների փոխառության ստուգման որակը (borrow checker) և թույլ տալ կատարել որոշ տեսակի ճիշտ կոդեր, որոնց օգտագործումը նախկինում հանգեցրել է սխալի։ Նոր վարքագիծը նաև շատ ավելի հեշտ է դարձնում վրիպազերծումը.
Ներառված է ասոցիատիվ զանգվածների նոր իրականացում HashMap, կառուցվածքի կիրառման հիման վրա Շվեյցարական սեղան (ավտոմատ բեռնված hashbrown::HashMap, եթե այլ բան հստակորեն նշված չէ, օրինակ՝ std::HashMap, որը հիմնված է SipHash 1-3-ի վրա): Ծրագրային ապահովման ինտերֆեյսը մնում է նույնը, և ծրագրավորողի համար նկատելի տարբերությունները հանգում են կատարողականի բարձրացման և հիշողության սպառման նվազեցմանը.
Փաթեթի մենեջերի բեռների մեջ ավելացրել է «--անցանց» տարբերակը, որը հնարավորություն է տալիս գործել առանց ցանց մուտք գործելու, որում կախվածություն տեղադրելիս օգտագործվում են միայն տեղական համակարգում քեշավորված փաթեթները: Եթե կախվածությունը տեղական քեշում չէ, սխալ կհայտնվի: Նախքան ցանցից դուրս գալը կախվածությունները տեղական քեշում նախապես բեռնելու համար կարող եք օգտագործել «բեռների առբերում» հրամանը.
Իրականացրել է մակրո «dbg!» անվանելու հնարավորությունը: նշելով մի քանի փաստարկներ;
Մեթոդների համար օգտագործվում է «const» հատկանիշը, որը որոշում է հաստատունների փոխարեն ցանկացած համատեքստում օգտագործելու հնարավորությունը
Layout::from_size_align_unchecked,
mem::needs_drop,
NonNull::կախված ու
NonNull::cast;
API-ների նոր մասը փոխանցվել է կայուն կատեգորիայի՝ ներառյալ կայունացված մեթոդները
առաջադրանք::Ուակեր, առաջադրանք::Հարցում,
VecDeque::rotate_left, VecDeque::rotate_right,
Read::read_vectored, Write::write_vectored,
Iterator::պատճենված,
BorrowMut (տողերի համար) և str::as_mut_ptr: