Rust 1.47 forritunarmálsútgáfa

birt útgáfu 1.47 af forritunarmáli kerfisins Ryð, stofnað af Mozilla verkefninu. Tungumálið leggur áherslu á minnisöryggi, veitir sjálfvirka minnisstjórnun og veitir leið til að ná mikilli samsvörun verkefna án þess að nota rusla safnari и afturkreistingur (keyrslutími snýst um grunnuppstillingu og viðhald á venjulegu bókasafni).

Sjálfvirk minnisstjórnun Rust útilokar villur þegar verið er að meðhöndla ábendingar og verndar gegn vandamálum sem stafa af minni meðhöndlun á lágu stigi, eins og aðgangur að minnissvæði eftir að það hefur verið losað, frávísanir á núll bendi, offramkeyrsla á biðminni osfrv. Verið er að þróa pakkastjóra til að dreifa bókasöfnum, tryggja samsetningu og stjórna ósjálfstæði verkefnisins. Hleðsla. Geymsla er studd til að hýsa bókasöfn crates.io.

Helstu nýjungar:

  • Innleiddur stuðningur fyrir tegundir fylki hvaða stærð sem er. Áður, vegna vanhæfni til að skilgreina almennar aðgerðir fyrir öll heiltölugildi, veitti staðlaða bókasafnið innbyggðan eiginleikastuðning aðeins fyrir fylki allt að 32 þætti að stærð (eiginleikarnir fyrir hverja stærð voru skilgreindir með kyrrstöðu). Þökk sé því að skapa virkni stöðugra samheitalyfja („const generics“) varð mögulegt að skilgreina almenn föll fyrir hvaða fylkisstærð sem er, en þau eru ekki enn innifalin í stöðugu tungumálaeiginleikum, þó að þau séu útfærð í þýðandanum og eru núna þátt í staðlaða bókasafninu fyrir eiginleika fylkis af hvaða stærð sem er.

    Til dæmis mun eftirfarandi smíði í Rust 1.47 prenta innihald fylkis, þó áður hefði það leitt til villu:

    fn main() {
    láttu xs = [0; 34];

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

  • Veitt úttak af styttri ummerkjum (til baka), framleiðsla í neyðartilvikum. Hlutir sem eru ekki áhugaverðir í flestum aðstæðum, en rugla útkomuna og draga athyglina frá aðalorsökum vandans, eru útilokaðir frá rekstrinum. Til að skila fullri rakningu geturðu notað umhverfisbreytuna "RUST_BACKTRACE=full". Til dæmis fyrir kóðann

    fn main() {
    hræðsla!();
    }

    Áður var rekjan framleidd í 23 þrepum, en nú verður dregið úr því
    3 skref sem gera þér kleift að átta þig strax á kjarnanum:

    þráður 'aðal' panikkaði við 'skýrt læti', src/main.rs:2:5
    stafla bakslag:
    0: std::panikk::begin_panic
    á /rustc/d…d75a/library/std/src/panicking.rs:497
    1: leikvöllur::aðal
    á ./src/main.rs:2
    2: kjarna::ops::fall::FnOnce::call_once
    á /rustc/d…d75a/library/core/src/ops/function.rs:227

  • Rustc þýðandinn hefur verið uppfærður til að byggja með LLVM 11 (Rust notar LLVM sem bakendi fyrir kóða kynslóð). Á sama tíma er getu til að byggja með eldri LLVM, allt að útgáfu 8, haldið, en sjálfgefið (í rust-lang/llvm-verkefni) er nú að nota LLVM 11. Búist er við að LLVM 11 komi út á næstu dögum.
  • Á Windows vettvangnum veitir rustc þýðandinn stuðning til að virkja eftirlitsflæðisheilleika (Control Flow Guard), virkjað með „-C control-flow-guard“ fánanum. Á öðrum kerfum er þessi fáni hunsuð í bili.
  • Nýr hluti API hefur verið fluttur í stöðugan flokk, þar á meðal stöðug
    Ident::new_raw,
    Svið::er_tómt,
    RangeInclusive::is_empty,
    Niðurstaða::as_deref,
    Niðurstaða::as_deref_mut,
    Vec::leka,
    bendil::offset_from,
    f32::TAU og
    f64::TAU.

  • „const“ eigindin, sem ákvarðar möguleikann á að nota hann í hvaða samhengi sem er í stað fasta, er notaður í aðferðunum:
    • nýtt fyrir allar heiltölur aðrar en núll;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub og saturating_mul fyrir allar heiltölur;
    • is_ascii_stafrófsröð, is_ascii_hástafur, is_ascii_lágstafur, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace og is_ascii_
  • Fyrir FreeBSD þátt verkfærakista frá FreeBSD 11.4 (FreeBSD 10 styður ekki LLVM 11).

Heimild: opennet.ru

Bæta við athugasemd