Rust 1.47 programavimo kalbos leidimas

paskelbta 1.47 sistemos programavimo kalbos leidimas Rust, įkurta Mozilla projekto. Kalba orientuota į atminties saugumą, suteikia automatinį atminties valdymą ir suteikia galimybę pasiekti aukštą užduočių lygiagretumą nenaudojant šiukšlių surinkėjas и Runtime (vykdymo laikas apsiriboja pagrindine standartinės bibliotekos inicijavimu ir priežiūra).

„Rust“ automatinis atminties valdymas pašalina klaidas manipuliuojant rodyklėmis ir apsaugo nuo problemų, kylančių dėl žemo lygio atminties manipuliavimo, pvz., prieigos prie atminties srities ją atlaisvinus, nulinių rodyklės nuorodų, buferio viršijimo ir kt. Kuriama paketų tvarkyklė, skirta platinti bibliotekas, užtikrinti surinkimą ir valdyti projekto priklausomybes. krovinys. Saugykla palaikoma prieglobos bibliotekoms dėžės.io.

pagrindinis naujoves:

  • Įdiegta tipų palaikymas masyvai savavališkas dydis. Anksčiau dėl nesugebėjimo apibrėžti bendrųjų funkcijų visoms sveikųjų skaičių reikšmėms, standartinė biblioteka teikė įmontuotą bruožų palaikymą tik iki 32 elementų dydžio masyvams (kiekvieno dydžio bruožai buvo apibrėžti statiškai). Sukūrus pastovių bendrinių („const generics“) funkcionalumą, atsirado galimybė apibrėžti bendrąsias funkcijas bet kokiam masyvo dydžiui, tačiau jos dar nėra įtrauktos į stabilios kalbos ypatybes, nors jos yra įdiegtos kompiliatoriuje ir yra dabar dalyvauja standartinėje bibliotekoje bet kokio dydžio masyvo bruožams.

    Pavyzdžiui, ši konstrukcija „Rust 1.47“ atspausdins masyvo turinį, nors anksčiau būtų kilusi klaida:

    fn main() {
    tegul xs = [0; 34];

    println!("{:?}", xs);
    }

  • Suteikiama trumpesnių pėdsakų išvestis (backtrace), išvestis avarinėse situacijose. Elementai, kurie daugeliu atvejų nedomina, bet užgriozdina išvestį ir atitraukia dėmesį nuo pirminių problemos priežasčių, neįtraukiami į pėdsaką. Norėdami grąžinti visą pėdsaką, galite naudoti aplinkos kintamąjį „RUST_BACKTRACE=full“. Pavyzdžiui, dėl kodo

    fn main() {
    panika!();
    }

    Anksčiau pėdsakas buvo išvestas 23 etapais, tačiau dabar jis bus sumažintas iki
    3 žingsniai, leidžiantys iš karto suvokti esmę:

    gija „pagrindinis“ panikuoja dėl „aiškios panikos“, src/main.rs:2:5
    dėklo atgalinis pėdsakas:
    0: std::panika::begin_panic
    adresu /rustc/d…d75a/library/std/src/panicking.rs:497
    1: žaidimų aikštelė::pag
    adresu ./src/main.rs:2
    2: core::ops::function::FnOnce::call_once
    adresu /rustc/d…d75a/library/core/src/ops/function.rs:227

  • Rustc kompiliatorius buvo atnaujintas, kad būtų galima sukurti naudojant LLVM 11 (Rūdis naudoja LLVM kaip užpakalinė programa kodo generavimas). Tuo pačiu metu išsaugoma galimybė kurti naudojant senesnes LLVM, iki 8 versijos, tačiau pagal numatytuosius nustatymus ( rust-lang/llvm-projektas) dabar naudoja LLVM 11. Tikimasi, kad LLVM 11 bus išleistas artimiausiomis dienomis.
  • Ant platformos Windows в компиляторе rustc обеспечена поддержка включения проверок целостности потока выполнения (Control Flow Guard), активируемых при помощи флага «-C control-flow-guard». На других платформах данный флаг пока игнорируется.
  • Nauja API dalis buvo perkelta į stabilią kategoriją, įskaitant stabilizuotą
    Ident::new_raw,
    Diapazonas::yra_tuščias,
    Diapazonas įskaičiuotas::yra_tuščias,
    Rezultatas::as_deref,
    Rezultatas::as_deref_mut,
    Senas::nuotėkis,
    rodyklė::offset_from,
    f32::TAU ir
    f64::TAU.
  • Atributas „const“, kuris nustato galimybę jį naudoti bet kuriame kontekste, o ne konstantose, naudojamas metoduose:
    • naujas visiems sveikiesiems skaičiams, išskyrus nulį;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub ir saturating_mul visiems sveikiesiems skaičiams;
    • yra_ascii_alfabetinis, is_ascii_didžiosios raidės, is_ascii_mažosios raidės, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace ir is_ascii ir_control8 tipai.
  • Skirta FreeBSD dalyvauja įrankių rinkinys iš FreeBSD 11.4 (FreeBSD 10 nepalaiko LLVM 11).

Šaltinis: opennet.ru

Pirkite patikimą prieglobą svetainėms su DDoS apsauga, VPS VDS serveriais 🔥 Įsigykite patikimą svetainių talpinimą su DDoS apsauga, VPS VDS serveriais | ProHoster