sĂŒsteemse programmeerimise keele vĂ€ljaanne , mille Mozilla. Keel keskendub mĂ€lu ohutusele, tagab automaatse mĂ€lu juhtimise ja pakub tööde kĂ”rge paralleelsuse saavutamise vahendeid, ilma et oleks vaja prĂŒgikorjajat ja .
Rustis tagab automaatne mĂ€lu haldamine arendajale mĂ€lukĂ€itlemise manipuleerimise vabastamise ja kaitseb madala taseme mĂ€lu töötlemisega seotud probleemide eest, nagu mĂ€lu kasutamine pĂ€rast selle vabastamist, nullviidete de-referentsimine, puhverduspiiride ĂŒletamine jne. Raamatukogude jagamiseks, koostamise tagamiseks ja sĂ”ltuvuste haldamiseks arendatakse pakihaldurit , mis vĂ”imaldab vajalikke raamatukogusid ĂŒhe klikiga hankida. Raamatukogude paigutamiseks toetatakse hoidlapaiku .
Peamised :
- Lisatud on vĂ”imalus mĂ€rkida struktuure (struct) ja loendeid (enum) bloki Variant abil atribuudiga «]«, mille abil on edaspidi vĂ”imalik lisada uusi vĂ€lju ja variante vĂ€lja kuulutatud struktuuridesse ja loenditesse. NĂ€iteks saavad moodulite arendajad, kellel on avalikult vĂ€lja kuulutatud vĂ€ljad, kasutada «#[non_exhaustive]» nende struktuuride mĂ€rkimiseks, kus tulevikus on vĂ”imalik lisada uusi vĂ€lju. Seni pidi arendaja sellises olukorras valima kas privaatsete vĂ€ljade kuulutamise ja muutumatute vĂ€ljade nimekirjaga sidumise vahel. Uus atribuut kĂ”rvaldab selle piiratuse ja vĂ”imaldab tulevikus uusi vĂ€lju lisada, ilma et see ohustaks varasemate vĂ€liste koodide töö. Crate-pakettides, kui variantide sobitamisel jaotises «match», on nĂ”utav selge maski defineerimine «_ => {âŠ}», mis katab vĂ”imalikke tulevasi vĂ€lju, vastasel juhul tekib uute vĂ€ljade lisamisel viga.
- vĂ”imalus kutsuda protseduuriline makro mac!() tĂŒĂŒbi kontekstis. NĂ€iteks on nĂŒĂŒd vĂ”imalik kirjutada «type Foo = expand_to_type!(bar);», kui «expand_to_type» on protseduuriline makro.
- Blokkides «extern { ⊠}» vĂ”imalus kasutada protseduurilisi ja atribuudi makroseid, sealhulgas makroseid âbang!()â, nĂ€iteks:
macro_rules! make_item { ($name:ident) => { fn $name(); } }
extern {
make_item!(alpha);
make_item!(beta);
}extern "C" {
#[my_identity_macro]
fn foo();
} - Makrose kohta vĂ”imalus genereerida elemente âmacro_rules!â. Generatsioon âmacro_rules!â on vĂ”imalik nii funktsiooni sarnastes makroseis (âmac!()â) kui ka atribuudivormis makroseis (â#[mac]â).
- Elementi vastavuses $m:meta toetab suvalisi vÀÀrtusi tokenite loendite (â[TOKEN_STREAM]â, â{TOKEN_STREAM}â ja â(TOKEN_STREAM)â), nĂ€iteks:
macro_rules! accept_meta { ($m:meta) => {} }
accept_meta!( my::path );
accept_meta!( my::path = "lit" );
accept_meta!( my::path ( a b c ) );
accept_meta!( my::path [ a b c ] );
accept_meta!( my::path { a b c } ); - Rust 2015 reĆŸiimis on aktiveeritud vigade vĂ€ljund, et tegeleda probleemidega, mis ilmnevad muutuva laenamise kontrollimise (borrow checker) abil NLL (Non-Lexical Lifetimes) tehnika kasutamisel. Varasemalt asendati hoiatused vigadega, töötades Rust 2018 reĆŸiimis.
PĂ€rast muudatuste laiemat rakendamist ja Rust 2015 reĆŸiimi vĂ”imaldas arendajatel lĂ”puks vanast borrow checker'ist.Tulet meelde, et uus eluea jĂ€lgimise mehhanismiga pĂ”hinev kontrollisĂŒsteem on vĂ”imaldanud tuvastada teatud probleeme, mis vanas kontrollkoodis tĂ€helepanuta jĂ€etud. Kuna selleteemalise vea vĂ€ljastamine vĂ”ib mĂ”jutada varasemat koodeksisse ĂŒhilduvust, esitati esialgu veateade asemel hoiatused.
- MÀrgis «const», mis mÀÀratleb, kas seda saab igas kontekstis kasutada muutumatute vÀÀrtuste asemel, on rakendatud funktsioonile is_power_of_two (ilma mÀrgita tÀisarvude jaoks).
- Uue stabiilse partii API on lÀinud stabiilsete rikka seeriasse, sealhulgas stabiliseeriti makrod todo!() ja meetodid slice::repeat, mem::take, BTreeMap::get_key_value, HashMap::get_key_value,
Option::as_deref, Option::as_deref_mut, Option::flatten, UdpSocket::peer_addr, {f32,f64}::to_be_bytes, {f32,f64}::to_le_bytes, {f32,f64}::to_ne_bytes, {f32,f64}::from_be_bytes, {f32,f64}::from_le_bytes ja {f32,f64}::from_ne_bytes. - Paketihalduris cargo
kompileerimise hoiatused nende kettas. Komandisse âcargo metadataâ lisatud valik ââ, et kuvada sĂ”ltuvuste loendis ainult selliseid pakette, mis on seotud mÀÀratud sihtplatvormiga. Lisatud konfiguratsiooniparameter http.ssl-version lubatud TLS versioonide mÀÀramiseks.
Lisatud on vÔimalus avaldada jaotist «» ilma «version» vÔtme mÀÀramata. - Kompaileerijas rustc on tagatud kolmas tase sihtplatvormide toe jaoks thumbv7neon-unknown-linux-musleabihf, aarch64-unknown-none-softfloat, mips64-unknown-linux-muslabi64 ja mips64el-unknown-linux-muslabi64. Kolmas tase tÀhendab baastoetust, kuid ilma automatiseeritud testimise ja ametlike kogumite avaldamiseta.
Allikas: opennet.ru
