Rust 1.42 programavimo kalbos leidimas

paskelbta sistemos programavimo kalbos leidimas Rūdys 1.42, įkurta Mozilla projekto. Kalba skirta atminties saugai, suteikia automatinį atminties valdymą ir suteikia įrankius, leidžiančius pasiekti aukštą užduočių lygiagretumą nenaudojant šiukšlių rinktuvo ir Runtime.

„Rust“ automatinis atminties valdymas išlaisvina kūrėją nuo manipuliavimo žymekliu ir apsaugo nuo problemų, kylančių dėl žemo lygio atminties manipuliavimo, pvz., laisvos atminties prieigos, nulinių rodyklės nuorodų, buferio viršijimo ir panašiai. Kuriama paketų tvarkyklė, skirta platinti bibliotekas, užtikrinti surinkimą ir valdyti projekto priklausomybes. krovinys, leidžiančiu vienu paspaudimu gauti programai reikalingas bibliotekas. Saugykla palaikoma prieglobos bibliotekoms dėžės.io.

pagrindinis naujoves:

  • Pridėta palaikymas šablonų, skirtų suderinti pjūvių dalis (dinaminiai masyvai, skiltis). Anksčiau buvo leidžiamos tikslios atitikties, tačiau dabar galima naudoti konstrukcijas, pažymėtas ".." likusiems masyvo elementams padengti. Pavyzdžiui:

    fn foo(žodžiai: &[&str]) {
    suderinti žodžius {

    // patikrina pradinius masyvo elementus ir nepaiso
    juos sekančius elementus
    ["Sveikas", "Pasaulis", "!", ..] => println!("Sveikas, pasauli!"),

    // patikrina pirmuosius du elementus „Foo“ ir „Bar“, o likusieji nėra svarbūs
    ["Foo", "Bar", ..] => println!("Baz"),

    // ignoruoti viską, bet paskutinis elementas turi būti "!".
    [.., "!"] => println!(“!!!”),

    // pradžios skiltyje įtraukiame viską, išskyrus paskutinį elementą, kuris turėtų būti „z“
    [pradėti @ .., "z"] => println!("prasideda: {:?}", pradžia),

    // į galutinį pjūvį dedame viską, išskyrus pirmąjį elementą, kuris turėtų būti „a“.
    ["a", pabaiga @ ..] => println!("baigiasi: {:?}", pabaiga),

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

  • Pridėta nauja makrokomanda „atitinka!“, kuri kaip įvestį priima išraišką ir šabloną ir grąžina „true“, jei šablonas atitinka išraišką. Šablonas gali naudoti „|“ operacijas ir jeigu".

    atitikti self.partial_cmp(other) {
    Kai kurie (mažiau) => tiesa,
    _ => klaidinga,
    }

    atitinka!(self.partial_cmp(other), Some(Less))

    let foo = 'f';
    tvirtinti!(atitinka!(foo, 'A'..='Z' | 'a'..='z'));

    let bar = Some(4);
    tvirtinti!(atitinka!(bar, Some(x) if x > 2));

  • Panikos pranešimai rodomi netinkamai naudojant
    tipai Option ir Result, dabar rodomi eilučių numeriai su nuoroda į kodą, kuris iškvietė probleminį skambutį, o ne nuorodas į kodą, įgyvendinantį iškvietimą programoje libcore. Pavyzdžiui, pakeitimas turi įtakos iškvietimams išvynioti ir tikėtis per Option::None arba strigti naudojant unwrap_err, expect, expect_err ir panašius metodus Rezultato tipui.

  • Krovinių paketų tvarkyklė automatiškai pakeičia „proc_macro crate“ į „išorinį“ bloką paketams su procedūrinėmis makrokomandomis. Šis pakeitimas leidžia taikyti direktyvą „use“ procedūrinėms makrokomandoms, kode nenurodant „extern crate proc_macro;“. Pavyzdžiui, jei programa naudoja eilutę „use proc_macro::TokenStream;“, tada kodas toliau veiks, jei iš jo bus pašalintas „extern crate proc_macro;“.
  • Standartinės bibliotekos galimybės buvo išplėstos. Itere::Tuščia pridėta Bet kokių T verčių siuntimo ir sinchronizavimo palaikymas.
    Skambučių PIN kodas::{map_unchecked, map_unchecked_mut} pristatyta nereikia grąžinti tipo reikšmės „Dydžio“ diegimui.
    In io::Cursor įgyvendinta PartialEq ir Eq. Atributas „const“ nustato galimybę naudoti bet kuriame kontekste vietoj konstantų, taikomos „Layout::new“ metodui.

  • Nauja API dalis buvo perkelta į stabilią kategoriją, įskaitant stabilizuotą CondVar::wait_while, CondVar::wait_timeout_while,
    DebugMap::key, DebugMap::value,
    Rankiniu būdu nuleiskite::paimkite,
    ptr::slice_from_raw_parts_mut ir ptr::slice_from_raw_parts.

  • Error::description metodas buvo pasenęs.
  • Teiktas antro lygio palaikymas armv7a-none-eabi ir riscv64gc-unknown-linux-gnu platformoms. Suteiktas standartinės bibliotekos riscv64gc-unknown-linux-gnu platformos palaikymas.
    Apple 32 bitų platformos pažemintas iki trečiojo palaikymo lygio, o tai reiškia pagrindinį palaikymą, bet be automatinio testavimo ir oficialių versijų paskelbimo. Palaikymas sumažintas dėl to, kad „Apple“ nebepalaiko 32 bitų platformų.

Šaltinis: opennet.ru

Добавить комментарий