Rust 1.47 Kutulutsa Chilankhulo cha Mapulogalamu

Lofalitsidwa kutulutsa 1.47 ya chilankhulo cha pulogalamu yamakina dzimbiri, yokhazikitsidwa ndi polojekiti ya Mozilla. Chilankhulochi chimayang'ana kwambiri pachitetezo cha kukumbukira, chimapereka kasamalidwe ka kukumbukira, ndipo chimapereka njira zopezera kufananirana kwakukulu kwa ntchito popanda kugwiritsa ntchito wotolera zinyalala ΠΈ nthawi yothamanga (nthawi yothamanga imafikira pakuyambitsa koyambira ndi kukonza laibulale yokhazikika).

Kuwongolera kukumbukira kwa Rust kumachotsa zolakwika pakuwongolera zolozera ndikutchinjiriza ku zovuta zomwe zimadza chifukwa chakuwongolera kukumbukira pang'ono, monga kulowa mdera la kukumbukira zitamasulidwa, kuchotsedwa kwa null pointer, buffer overruns, ndi zina zambiri. Woyang'anira phukusi akupangidwa kuti azigawira malaibulale, kuwonetsetsa kusonkhanitsa ndi kuyang'anira zodalira ndi polojekiti. katundu. Malo osungiramo mabuku amathandizidwa kuti azisunga malaibulale makate.io.

waukulu zatsopano:

  • Thandizo lokhazikitsidwa kwa mitundu magulu kukula kulikonse. M'mbuyomu, chifukwa cholephera kufotokozera magwiridwe antchito amtundu uliwonse wamitundu yonse, laibulale yokhazikika idapereka chithandizo chomangidwira pazokha zolumikizana mpaka maelementi 32 kukula kwake (makhalidwe a saizi iliyonse adafotokozedwa motsatana). Chifukwa cha kupangidwa kwa magwiridwe antchito amtundu wanthawi zonse ("const generics"), zidakhala zotheka kutanthauzira magwiridwe antchito amtundu uliwonse wamtundu uliwonse, koma sizinaphatikizidwe m'mawu okhazikika achilankhulo, ngakhale akugwiritsidwa ntchito popanga ndipo tsopano. okhudzidwa mu laibulale yokhazikika yamagulu osiyanasiyana amtundu uliwonse.

    Mwachitsanzo, zomanga zotsatirazi mu Rust 1.47 zidzasindikiza zomwe zili mugulu, ngakhale m'mbuyomu zikanabweretsa cholakwika:

    fn chachikulu () {
    lolani xs = [0; 34];

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

  • Anapereka zotsatira zazifupi (zotsatira), zotuluka muzochitika zadzidzidzi. Zinthu zomwe sizikhala ndi chidwi muzochitika zambiri, koma zimasokoneza zomwe zimatuluka ndikusokoneza chidwi kuchokera ku zomwe zimayambitsa vutoli, sizimachotsedwa. Kuti mubwererenso, mutha kugwiritsa ntchito kusintha kwa chilengedwe "RUST_BACKTRACE=full". Mwachitsanzo, kwa code

    fn chachikulu () {
    mantha!();
    }

    M'mbuyomu, kufufuzaku kunachitika mu magawo 23, koma tsopano kuchepetsedwa
    Masitepe 3 omwe amakupatsani mwayi kuti mumvetsetse tanthauzo lake:

    thread 'main' anachita mantha ndi 'explicit panic', src/main.rs:2:5
    stack backtrace:
    0: std::mantha::kuyamba_mantha
    pa /rustc/d…d75a/library/std/src/panicking.rs:497
    1: bwalo lamasewera::mayi
    pa ./src/main.rs:2
    2: pachimake::ops::function::FnOnce::call_ once
    pa /rustc/d…d75a/library/core/src/ops/function.rs:227

  • Rustc compiler yasinthidwa kuti amange pogwiritsa ntchito LLVM 11 (Rust amagwiritsa LLVM ngati backend kwa kupanga kodi). Nthawi yomweyo, kuthekera komanga ndi ma LLVM akale, mpaka mtundu 8, kumasungidwa, koma mwachisawawa (mu rust-lang/llvm-project) tsopano akugwiritsa ntchito LLVM 11. LLVM 11 ikuyembekezeka kutulutsidwa m'masiku akubwerawa.
  • Pa nsanja ya Windows, compiler ya rustc imapereka chithandizo chothandizira kuyang'anira kukhulupirika kwakuyenda (Control Flow Guard), yoyendetsedwa pogwiritsa ntchito mbendera ya "-C control-flow-guard". Pa nsanja zina mbendera iyi imanyalanyazidwa pakadali pano.
  • Gawo latsopano la APIs lasamutsidwa ku gulu lokhazikika, kuphatikizapo kukhazikika
    Chizindikiritso::chatsopano_raw,
    Range::ndi_palibe,
    RangeInclusive::ndi_palibe,
    Zotsatira::as_deref,
    Zotsatira::as_deref_mut,
    Vec::kutuluka,
    pointer::chotsa_kuchokera,
    f32::TAU ndi
    f64::UU.

  • Lingaliro la "const", lomwe limatsimikizira kuthekera kogwiritsa ntchito mwanjira iliyonse m'malo mokhazikika, limagwiritsidwa ntchito m'njira:
    • zatsopano pamagulu onse kupatula ziro;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shr, saturating_add, saturating_sub ndi saturating_mul zonse;
    • is_ascii_alphabetic, is_ascii_uppercase, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace and is_ascii_ucontrol.
  • Kwa FreeBSD okhudzidwa zida kuchokera ku FreeBSD 11.4 (FreeBSD 10 sigwirizana ndi LLVM 11).

Source: opennet.ru

Kuwonjezera ndemanga