Rust 1.40 Ukukhishwa Kolimi Lokuhlela

eshicilelwe ukukhululwa kolimi lokuhlela uhlelo Ukugqwala 1.40, eyasungulwa iphrojekthi ye-Mozilla. Ulimi lugxile ekuphepheni kwenkumbulo, luhlinzeka ngokuphathwa kwenkumbulo okuzenzakalelayo, futhi luhlinzeka ngamathuluzi okuthola ukufana kwemisebenzi ephezulu ngaphandle kokusebenzisa umqoqi kadoti kanye isikhathi sokuqalisa.

Ukuphathwa kwenkumbulo okuzenzakalelayo kwe-Rust kukhulula umthuthukisi ekukhohlisweni kwezikhombisi futhi kuvikele ezinkingeni ezivela ekukhohlisweni kwenkumbulo yezinga eliphansi, njengokufinyelela kwememori yangemuva kwamahhala, izinkomba ezingenalutho, ukugcwala kwebhafa, nokunye okunjalo. Umphathi wephakheji uyathuthukiswa ukuze asabalalise imitapo yolwazi, aqinisekise ukuhlanganisa nokuphatha ukuncika ngephrojekthi. cargo, okukuvumela ukuthi uthole amalabhulali adingekayo ohlelweni ngokuchofoza okukodwa. Indawo yokugcina isekelwa ukuze isingathe amalabhulali amakhreyithi.io.

main emisha:

  • Kwengezwe ikhono lokumaka izakhiwo (isakhiwo) kanye nokubala (i-enum ene-variant block) usebenzisa isibaluli "#[akupheleli]", okuthi kuvumela ngokuzayo, engeza izinkambu ezintsha nezinketho ezakhiweni ezimenyezelwe nokubala. Isibonelo, abathuthukisi bamamojula anezakhiwo ezinezinkambu ezimenyezelwe esidlangalaleni bangasebenzisa okuthi "#[non_exhaustive]" ukumaka izakhiwo okungenzeka zibe nezinkambu ezintsha ezingezwe esikhathini esizayo. Kuze kube manje, kulesi simo, umthuthukisi uphoqeleke ukuthi akhethe phakathi kokumemezela izinkambu ngasese nokubophezela kuhlu lwezinkambu olungaguquleki. Isibaluli esisha sisusa lo mkhawulo futhi sikuvumela ukuthi ungeze izinkambu ezintsha ngokuzayo ngaphandle kwengozi yokwephula ikhodi yangaphandle ehlanganiswe ngaphambilini. Kumaphakheji ekhreyithi, lapho kuqathaniswa izinketho esigabeni “sokufanisa”, kudingeka incazelo ecacile yemaski “_ => {...}”, ehlanganisa izinkambu ezingaba khona zesikhathi esizayo, ngaphandle kwalokho iphutha lizovela lapho kwengezwa izinkambu ezintsha.
  • Kwengeziwe ikhono lokubiza i-procedural macro mac!() kumongo wohlobo. Isibonelo, usungakwazi manje ukubhala okuthi “type Foo = expand_to_type!(bar);” uma okuthi “expand_to_type” kuyinqubo enkulu.
  • Kumabhulokhi "angaphandle { ... }". kwengezwe ikhono lokusebenzisa amamakhro enqubo kanye nesibaluli, okuhlanganisa “bang!()” amamakhro, isibonelo:

    imithetho_enkulu! make_item { ($name:ident) => {fn $name(); }}

    ngaphandle {
    make_item!(i-alpha);
    make_item!(beta);
    }

    ngaphandle "C" {
    #[my_identity_macro] fn foo();
    }

  • Kumakhro kwenziwe ikhono lokukhiqiza izakhi ze-“macro_rules!”. Ikhiqiza "ama-macro_rules!" kungenzeka kokubili kumamakhro afana nomsebenzi (“mac!()”) kanye namamakhro ngendlela yezibaluli (“#[mac]”).
  • Ku-elementi yemephu engu-$m:meta kwengezwe ukusekelwa kwamanani okubalwa kwamathokheni ngokungafanele (“[TOKEN_STREAM]”, “{TOKEN_STREAM}” kanye “(TOKEN_STREAM)”), isibonelo:

    imithetho_enkulu! accept_meta { ($m:meta) => {}}
    accept_meta!( yami::indlela );
    accept_meta!( my::path = "lit" );
    accept_meta!( yami::indlela ( abc ));
    accept_meta!( yami::path [ abc ] );
    accept_meta!( yami::indlela { abc } );

  • Kumodi ye-Rust 2015, ukuphuma kwephutha kunikwe amandla ezinkingeni ezikhonjwe lapho kuhlolwa ukuboleka okuguquguqukayo (isihloli sokuboleka) kusetshenziswa indlela ye-NLL (Non-Lexical Lifetimes). Ngaphambilini, izixwayiso zathathelwa indawo amaphutha lapho isebenza ngemodi ye-Rust 2018.
    Ngemuva kokuthi ushintsho lunwetshiwe kumodi ye-Rust 2015, abathuthukisi bakwazile ekugcineni ukulahla kusukela kusihloli esidala sokuboleka.

    Masikhumbule ukuthi isistimu yokuqinisekisa esekelwe endleleni entsha yokucabangela ukuphila kwezinto eziguquguqukayo ezibolekiwe yenze kwaba nokwenzeka ukuhlonza izinkinga ezithile ezingazange ziqashelwe ikhodi endala yokuqinisekisa. Njengoba ukukhishwa kwephutha kokuhlola okunjalo kungase kuthinte ukuhambisana nekhodi yokusebenza yangaphambilini, izixwayiso zikhishwe ekuqaleni esikhundleni samaphutha.

  • Isibaluli esithi “const”, esinquma ukuthi kungenzeka yini ukusisebenzisa kunoma imuphi umongo esikhundleni sama-constants, sisetshenziselwa umsebenzi othi is_power_of_two (kuzinombolo eziphelele ezingasayiniwe).
  • Ingxenye entsha ye-API iyiswe esigabeni esizinzile, okuhlanganisa ne-todo!() macro kanye nocezu::phinda, mem::thatha, BTreeMap::get_key_value, HashMap::get_key_value, izindlela zizinzile.
    Inketho::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}::from_be_bytes, {f64,f32}::from_le_bytes, kanye ne-{f64,f32}::from_ne_bytes.

  • In the Package manager cargo
    kwenziwe izixwayiso ze-caching compiler kudiski. Kwengezwe inketho "yemethadatha yempahla" kumyalo "we-cargo metadata".--isihlungi-inkundla" ukukhombisa kuphela amaphakheji aboshelwe kunkundla eqondiwe ekholamu kukholamu yokuncika. Kwengezwe inketho yokumisa yenguqulo ye-http.ssl ukuze kuchazwe izinguqulo ezivumelekile ze-TLS.
    Kwengezwe ikhono lokushicilela isigaba "ukuncika kwe-dev" ngaphandle kokucacisa ukhiye "wenguqulo".

  • I-rustc compiler inikeza ukwesekwa kwezinga lesithathu kumapulatifomu okuqondiwe kuwo thumbv7neon-unknown-linux-musleabihf, aarch64-unknown-none-softfloat, mips64-unknown-linux-muslabi64 kanye mips64el-unknown-linux-muslabi64. Izinga lesithathu libandakanya ukwesekwa okuyisisekelo, kodwa ngaphandle kokuhlola okuzenzakalelayo nokushicilelwa kwezakhiwo ezisemthethweni.

Source: opennet.ru

Engeza amazwana