Rust 1.40 Programming Language Version

pibliye lage langaj pwogramasyon sistèm lan Rouye 1.40, ki te fonde pa pwojè Mozilla. Lang lan konsantre sou sekirite memwa, bay jesyon memwa otomatik, epi li bay zouti pou reyalize gwo paralelis nan travay san yo pa itilize yon pèseptè fatra ak ègzékusion.

Jesyon otomatik memwa Rust la libere pwomotè a soti nan manipilasyon konsèy ak pwoteje kont pwoblèm ki rive nan manipilasyon memwa ki ba-nivo, tankou aksè memwa apre-gratis, dereferans pointer nil, depase tanpon, ak lòt bagay. Yon manadjè pake ap devlope pou distribye bibliyotèk, asire asanble ak jere depandans pa pwojè a. Chaj, ki pèmèt ou jwenn bibliyotèk ki nesesè pou pwogram nan nan yon sèl klike sou. Yon depo sipòte pou òganize bibliyotèk kès.io.

Prensipal la inovasyon:

  • Te ajoute kapasite pou make estrikti (struct) ak enumerasyon (enum ak blòk Variant) lè l sèvi avèk atribi "#[ki pa_exhaustive]", ki pèmèt nan tan kap vini an, ajoute nouvo jaden ak opsyon nan estrikti deklare ak enimerasyon. Pa egzanp, devlopè modil ki gen estrikti ak jaden ki deklare piblikman ka itilize "#[non_exhaustive]" pou make estrikti ki ka gen nouvo jaden yo ajoute alavni. Jiska kounye a, nan sitiyasyon sa a, pwomotè a te fòse yo chwazi ant deklare jaden an prive ak obligatwa nan yon lis imuiabl nan jaden. Nouvo atribi a retire limit sa a epi pèmèt ou ajoute nouvo jaden nan lavni san risk pou yo kraze kòd ekstèn ki te konpile deja. Nan pakè kès, lè matche opsyon nan seksyon "match", yon definisyon eksplisit nan mask "_ => {...}" obligatwa, ki kouvri posib jaden nan lavni, otreman yon erè ap parèt lè ajoute nouvo jaden.
  • Te ajoute abilite pou rele pwosedi macro mac!() nan yon kontèks tip. Pou egzanp, ou kapab kounye a ekri "type Foo = expand_to_type!(bar);" si "expand_to_type" se yon makro pwosedi.
  • Nan blòk "ekstèn { ... }". te ajoute kapasite pou itilize makro pwosedi ak atribi, ki gen ladan makro "bang!()", pou egzanp:

    makro_règ! make_item { ($name:ident) => { fn $name(); } }

    ekstèn {
    make_item!(alpha);
    make_item!(beta);
    }

    ekstèn "C" {
    #[makro_idantite_mwen] fn foo();
    }

  • Nan makro aplike kapasite pou jenere eleman "macro_rules!". Jenere "macro_rules!" posib tou de nan makro ki sanble ak fonksyon ("mac!()") ak nan makro nan fòm atribi ("#[mac]").
  • Nan $m:meta eleman kat la te ajoute sipò pou valè enimilasyon siy abitrè ("[TOKEN_STREAM]", "{TOKEN_STREAM}" ak "(TOKEN_STREAM)"), pou egzanp:

    makro_règ! 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 } );

  • Nan mòd Rust 2015, pwodiksyon erè aktive pou pwoblèm yo idantifye lè w tcheke prete varyab yo (prete chèk) lè l sèvi avèk teknik NLL (Non-Lexical Lifetimes). Anvan sa, avètisman yo te ranplase ak erè lè kouri nan mòd Rust 2018.
    Apre chanjman an te pwolonje nan mòd nan Rust 2015, devlopè yo te kapab finalman debarase m de soti nan ansyen chèk prete a.

    Se pou nou sonje ke sistèm verifikasyon an ki baze sou yon nouvo mekanis pou pran an kont tout lavi a nan varyab prete te fè li posib yo idantifye kèk pwoblèm ki te pase inapèsi pa ansyen kòd verifikasyon an. Depi pwodiksyon erè pou chèk sa yo ka afekte konpatibilite ak kòd ki te travay deja, yo te bay avètisman okòmansman olye pou yo erè.

  • Atribi "const" la, ki detèmine posibilite pou itilize li nan nenpòt kontèks olye pou yo konstan, yo itilize pou fonksyon is_power_of_two (pou nonm antye ki pa siyen).
  • Yon nouvo pati nan API a te deplase nan kategori ki estab, ki gen ladan makro a todo!() ak slice::repeat, mem::take, BTreeMap::get_key_value, HashMap::get_key_value, metòd yo te estabilize.
    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, ak {f32,f64}::from_ne_bytes.

  • Nan kago manadjè pake a
    aplike Cache avètisman konpilatè sou disk. Te ajoute opsyon "metadon kago" nan lòd "metadata kago".--filtre-platfòm" pou montre sèlman pakè ki asosye ak platfòm sib espesifye nan kolòn rezolisyon depandans lan. Te ajoute opsyon konfigirasyon http.ssl-version pou defini vèsyon TLS ki valab.
    Te ajoute kapasite pou pibliye seksyon an "dev-depandans" san yo pa espesifye kle "vèsyon an".

  • Du rustc a bay sipò twazyèm nivo pou platfòm sib thumbv7neon-unknown-linux-musleabihf, aarch64-unknown-none-softfloat, mips64-unknown-linux-muslabi64 ak mips64el-unknown-linux-muslabi64. Twazyèm nivo a enplike sipò debaz, men san tès otomatik ak piblikasyon bati ofisyèl yo.

Sous: opennet.ru

Add nouvo kòmantè