Rust 1.42 Programming Language Release

gipatik pagpagawas sa pinulongan sa sistema sa programming Taya 1.42, gitukod sa proyekto sa Mozilla. Ang lengguwahe nagtutok sa kaluwasan sa panumduman, naghatag og awtomatik nga pagdumala sa panumduman, ug naghatag og mga himan alang sa pagkab-ot sa taas nga paralelismo sa buluhaton nga walay paggamit ug tigkolekta sa basura ug runtime.

Ang awtomatik nga pagdumala sa memorya ni Rust nagpalingkawas sa developer gikan sa pagmaniobra sa pointer ug nanalipod batok sa mga problema nga naggikan sa ubos nga lebel sa pagmaniobra sa memorya, sama sa human-free nga memory access, null pointer dereferences, buffer overruns, ug uban pa. Usa ka manedyer sa pakete ang gipalambo aron sa pag-apod-apod sa mga librarya, pagsiguro sa asembliya ug pagdumala sa mga dependency sa proyekto. Cargo, nga nagtugot kanimo nga makuha ang mga librarya nga gikinahanglan alang sa programa sa usa ka pag-klik. Gisuportahan ang usa ka repository sa pag-host sa mga librarya crates.io.

nag-unang mga inobasyon:

  • Gidugang suporta alang sa mga templates alang sa pagpares sa mga bahin sa mga hiwa (dynamic arrays, slice). Kaniadto, ang eksaktong mga posporo gitugutan, apan karon posible nga gamiton ang mga konstruksyon nga gimarkahan nga ".." aron matabonan ang nahabilin nga mga elemento sa laray. Pananglitan:

    fn foo(mga pulong: &[&str]) {
    pagpares sa mga pulong {

    // nagsusi sa pagsugod nga mga elemento sa laray ug wala magtagad
    mga elemento nga nagsunod kanila
    ["Hello", "World", "!", ..] => println!("Hello World!"),

    // nagsusi sa unang duha ka elemento nga "Foo" ug "Bar", ug ang uban dili importante
    ["Foo", "Bar", ..] => println!("Baz"),

    // ibaliwala ang tanan, apan ang katapusan nga elemento kinahanglan nga "!".
    [.., β€œ!”] => println!(β€œ!!!”),

    // sa pagsugod nga slice among gilakip ang tanan gawas sa katapusan nga elemento, nga kinahanglan nga "z"
    [pagsugod @ .., "z"] => println!("pagsugod sa: {:?}", pagsugod),

    // sa katapusan nga slice gibutang namon ang tanan gawas sa unang elemento, nga kinahanglan nga "a".
    ["a", katapusan @ ..] => println!("natapos sa: {:?}", katapusan),

    pahulay => println!("{:?}", pahulay),
    }
    }

  • Gidugang ang usa ka bag-ong macro nga "match!", nga nagkuha usa ka ekspresyon ug usa ka sumbanan ingon input, ug ibalik ang "tinuod" kung ang sumbanan motugma sa ekspresyon. Ang template mahimong mogamit sa "|" nga mga operasyon ug kung".

    pagpares sa kaugalingon.partial_cmp(uban pa) {
    Pipila(Dili kaayo) => tinuod,
    _ => bakak,
    }

    mga pareha!(self.partial_cmp(other), Some(Minos))

    let foo = 'f';
    ipahayag!(mga posporo!(foo, 'A'..='Z' | 'a'..='z'));

    let bar = Pipila(4);
    ipahayag!(match!(bar, Some(x) if x > 2));

  • Sa panic nga mga mensahe nga gipakita kung gigamit nga dili husto
    mga tipo nga Opsyon ug Resulta, karon ipakita ang mga numero sa linya nga adunay usa ka link sa code nga naghimo sa problema nga tawag, kaysa mga link sa code nga nagpatuman sa tawag sa libcore. Pananglitan, ang pagbag-o makaapekto sa mga tawag sa pag-unwrap ug pagpaabot sa Opsyon::Wala, o nahagsa sa dihang naggamit sa unwrap_err, expect, expect_err, ug susamang mga pamaagi sa Resulta nga matang.

  • Ang tagdumala sa pakete sa Cargo naghatag ug awtomatik nga pag-ilis sa "proc_macro crate" ngadto sa "extern" block alang sa mga pakete nga adunay mga procedural macros. Kini nga pagbag-o nagtugot sa "paggamit" nga direktiba nga magamit sa mga procedural macros nga dili kinahanglan nga ipiho ang "extern crate proc_macro;" sa code. Pananglitan, kung ang programa naggamit sa linya nga "gamit ang proc_macro::TokenStream;", nan ang kodigo magpabilin nga molihok kung ang "extern crate proc_macro;" gikuha gikan niini.
  • Ang mga kapabilidad sa standard nga librarya gipalapdan. Sa iter::Walay sulod gidugang Ipadala ug I-sync ang suporta para sa bisan unsang T value.
    Pin sa Tawag::{map_unchecked, map_unchecked_mut} gihatud gikan sa pagpabalik sa usa ka tipo nga kantidad alang sa "Sized" nga pagpatuman.
    Sa io::Cursor gipatuman PartialEq ug Eq. Ang "const" nga hiyas nagtino sa posibilidad sa paggamit sa bisan unsa nga konteksto imbis nga mga kanunay, gipadapat para sa Layout::bag-ong pamaagi.

  • Usa ka bag-ong bahin sa API ang gibalhin ngadto sa stable nga kategorya, lakip ang gipalig-on nga CondVar::wait_while, CondVar::wait_timeout_while,
    DebugMap::key, DebugMap::value,
    ManuallyDrop::kuhaa,
    ptr::slice_from_raw_parts_mut ug ptr::slice_from_raw_parts.

  • Ang Error::description method wala na gamita.
  • Naghatag ikaduha nga lebel nga suporta alang sa armv7a-none-eabi ug riscv64gc-unknown-linux-gnu nga mga plataporma. Gihatag ang suporta alang sa standard library para sa riscv64gc-unknown-linux-gnu nga plataporma.
    Apple 32-bit nga mga plataporma gipaubos hangtod sa ikatulo nga lebel sa suporta, nga nagpasabut nga sukaranan nga suporta, apan wala’y awtomatiko nga pagsulay ug pagmantala sa mga opisyal nga pagtukod. Ang pag-downgrade sa suporta tungod sa Apple nga wala na nagsuporta sa 32-bit nga mga plataporma.

Source: opennet.ru

Idugang sa usa ka comment