Weşana Zimanê Bernamesaziyê Rust 1.40

weşandin serbestberdana zimanê bernamesaziya pergalê Rûst 1.40, ji hêla projeya Mozilla ve hatî damezrandin. Ziman balê dikişîne ser ewlehiya bîranînê, rêveberiya bîranînê ya otomatîkî peyda dike, û amûran peyda dike ji bo bidestxistina paraleliya peywira bilind bêyî karanîna berhevkarek çopê û davêjin.

Rêvebiriya bîranîna otomatîkî ya Rust pêşdebiran ji manîpulasyona nîşankerê azad dike û li hember pirsgirêkên ku ji manîpulasyona bîranînê ya nizm derdikevin, wek gihandina bîranîna bêpere, veqetandinên nîşangirên betal, zêdekirina tampon û yên wekî wan diparêze. Rêvebirek pakêtê ji bo belavkirina pirtûkxaneyan, misogerkirina civîn û birêvebirina girêdanên ji hêla projeyê ve tê pêşve xistin. Bar, dihêle hûn pirtûkxaneyên ku ji bo bernameyê hewce ne bi yek klîk bistînin. Depoyek ji bo pirtûkxaneyên mêvandar tê piştgirî kirin crates.io.

sereke nûbûnên:

  • Qabiliyeta nîşankirina strukturên (avahî) û hejmartinan (enum bi bloka Guhertoyê) bi karanîna taybetmendiyê zêde kir.#[ne_tevger]", ku Ev rê dide di pêşerojê de, qad û vebijarkên nû li avahî û hejmartinên ragihandinê zêde bikin. Mînakî, pêşdebirên modulên ku xwedan strukturên bi qadên eşkerekirî ne dikarin "#[non_exhaustive]" bikar bînin da ku strukturên ku dibe ku di pêşerojê de qadên nû lê zêde bikin nîşan bidin. Heya nuha, di vê rewşê de, pêşdebir neçar bû ku di navbera ragihandina zeviyan de bi taybetî û girêdana bi navnîşek zeviyên neguhêrbar hilbijêrin. Taybetmendiya nû vê sînordariyê radike û dihêle hûn di pêşerojê de qadên nû lê zêde bikin bêyî xetereya şikandina koda derveyî ya berê ya berhevkirî. Di pakêtên kulikê de, dema ku vebijarkên di beşa "hev" de li hev bikin, pênaseyek eşkere ya maskê "_ => {...}" hewce ye, ku qadên pêşerojê yên gengaz vedigire, wekî din dema ku qadên nû lê zêde bikin dê xeletiyek were xuyang kirin.
  • Zêde kirin şiyana gazîkirina makroya prosedurî ​​mac!() di çarçoveyek celeb de. Mînakî, hûn dikarin nuha "type Foo = expand_to_type!(bar);" binivîsin heke "expand_to_type" makroyek prosedurî ​​ye.
  • Di blokên "derve { ... }". zêde kirin şiyana karanîna makroyên prosedur û taybetmendiyê, di nav de makroyên "bang!()", mînakî:

    macro_rules! made_item { ($name:ident) => {fn $name(); } }

    derveyî {
    make_item!(alpha);
    make_item!(beta);
    }

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

  • Di makroyan de pêkanîn şiyana hilberandina hêmanên "macro_rules!" Hilberîna "macro_rules!" hem di makroyên mîna fonksiyonê de ("mac!()") hem jî di makroyan de di forma taybetmendiyan de ("#[mac]") mimkun e.
  • Di hêmana nexşeya $m:meta de zêde kirin piştgirî ji bo nirxên hejmartina tokenê yên keyfî ("[TOKEN_STREAM]", "{TOKEN_STREAM}" û "(TOKEN_STREAM)"), wek nimûne:

    macro_rules! qebûl_meta { ($m:meta) => {} }
    qebûl_meta!( my::path );
    qebûl_meta!( my::path = "lit" );
    qebûl_meta!( my:: path (a b c));
    qebûl_meta!( my:: path [ a b c ] );
    qebûl_meta!( my:: path { a b c } );

  • Di moda Rust 2015-ê de, derketina xeletiyê ji bo pirsgirêkên ku dema ku bi teknîka NLL (Jiyanên Ne-Leksîkî) ve têne kontrolkirina deynkirina guhêrbaran (kontrolkerê deyn) têne destnîşan kirin. Berê, dema ku di moda Rust 2018 de xebitîn, hişyarî bi xeletiyan hatin guheztin.
    Piştî ku guhertin di moda Rust 2015 de hate dirêj kirin, pêşdebiran di dawiyê de karîbûn xilas bûn ji ji kontrolê deynê kevn.

    Werin em bînin bîra xwe ku pergala verastkirinê ya ku li ser bingeha mekanîzmayek nû ye ji bo girtina heyama guhêrbarên deynkirî ev gengaz kir ku hûn hin pirsgirêkên ku ji hêla koda verastkirinê ya kevn ve ji nedîtî ve hatine nas bikin. Ji ber ku derketina xeletiya ji bo kontrolên weha dikare bandorê li hevahengiya bi koda berê ya xebatê bike, di destpêkê de li şûna xeletiyan hişyarî hatin dayîn.

  • Taybetmendiya "const", ku îhtîmala karanîna wê di her çarçovê de li şûna sabitan diyar dike, ji bo fonksiyona is_hêza_duyan (ji bo jimareyên bênîşan) tê bikar anîn.
  • Beşek nû ya API-yê hate veguheztin kategoriya îstîqrar, tevî todo!() makro û perçe::repeat, mem::take, BTreeMap::get_key_value, HashMap::get_key_value, rêbaz hatine stabîlkirin.
    Vebijêrk::as_deref, Vebijêrk::as_deref_mut, Vebijêrk:: 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, û {f64,f32}::from_ne_bytes.

  • Di kargoya rêveberê pakêtê de
    pêkanîn caching hişyariyên berhevkar li ser dîskê. Vebijarka "kargo metadata" li fermana "metadata bargiraniyê" zêde kir-- Parzûn-platform" ji bo ku di stûna çareseriya pêwendiyê de tenê pakêtên girêdayî platforma armancê ya diyarkirî nîşan bide. Vebijarka veavakirina guhertoya http.ssl zêde kir da ku guhertoyên derbasdar ên TLS diyar bike.
    Kapasîteya weşandina beşê zêde kir "dev-girêdayîn"bêyî ku mifteya "guhertoyê" diyar bike.

  • Berhevkarê rustc ji bo platformên armanc thumbv7neon-unknown-linux-musleabihf, aarch64-nenas-none-softfloat, mips64-nenas-linux-muslabi64 û mips64el-nenas-linux-muslabi64, piştgiriya asta sêyemîn peyda dike. Asta sêyem piştgiriya bingehîn pêk tîne, lê bêyî ceribandina otomatîk û weşandina avahiyên fermî.

Source: opennet.ru

Add a comment