Rust 1.45 forritunarmálsútgáfa

birt útgáfu 1.45 af forritunarmáli kerfisins Ryð, stofnað af Mozilla verkefninu. Tungumálið einbeitir sér að minnisöryggi, veitir sjálfvirka minnisstjórnun og veitir verkfæri til að ná fram mikilli samsvörun verkefna án þess að nota sorphirðu og afturkreistingur.

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, sem gerir þér kleift að fá þau bókasöfn sem þarf fyrir forritið með einum smelli. Geymsla er studd til að hýsa bókasöfn crates.io.

Helstu nýjungar:

  • Útrýmt langvarandi galli þegar umbreytingar eru framkvæmdar á milli heiltalna og flottalna. Þar sem Rust þýðandinn notar LLVM sem bakenda, voru gerð umbreytingaraðgerðir gerðar með LLVM millikóðaleiðbeiningum eins og fptoui, sem hafa einn marktækan eiginleika - óskilgreinda hegðun ef gildið sem myndast passar ekki inn í markgerðina. Til dæmis, þegar flotgildinu 300 er breytt með gerð f32 í heiltölugerð u8, er niðurstaðan ófyrirsjáanleg og getur verið mismunandi eftir mismunandi kerfum. Vandamálið er að þessi eiginleiki birtist í kóða sem er ekki merktur sem „óöruggur“.

    Frá og með Rust 1.45 er hegðun tegundarstærðarflæðis stranglega stjórnað og „eins og“ umbreytingaraðgerðin athugar hvort um flæði sé að ræða og þvingar gildið sem er umbreytt í hámarks- eða lágmarksgildi markgerðarinnar (fyrir dæmið hér að ofan, gildi 300 yrði breytt í 255). Til að slökkva á slíkum athugunum eru fleiri API símtöl „{f64, f32}::to_int_unchecked“ veitt, sem starfa í óöruggri stillingu.

    fn cast(x: f32) -> u8 {
    x sem u8
    }

    fn main() {
    láta of_stórt = 300.0;
    láta of_small = -100.0;
    láta nan = f32::NAN;

    láttu x: f32 = 1.0;
    láttu y: u8 = óöruggt { x.to_int_unchecked() };

    println!("too_big_casted = {}", cast(too_big)); // framleiðsla 255
    println!("too_small_casted = {}", cast(of_small)); // úttak 0
    println!("not_a_number_casted = {}", cast(nan)); // úttak 0
    }

  • Notaðu stöðugt málsmeðferð fjölvifallalík orð, sniðmát og staðhæfingar. Áður fyrr var ekki hægt að kalla á slíka fjölvi alls staðar, heldur aðeins í ákveðnum hlutum kóðans (sem sérstakt símtal, ekki samtvinnað öðrum kóða). Að víkka út hvernig hægt er að kalla fjölva, svipað og aðgerðir, var ein af kröfunum til að veframminn virki Flugeldur í stöðugum útgáfum af Rust. Áður, til að ná auknum sveigjanleika við að skilgreina meðhöndlun í Rocket, þurfti að virkja tilraunaeiginleika sem kallast „proc_macro_hygiene“, sem er ekki fáanlegur í stöðugum útgáfum af Rust. Þessi virkni er nú innbyggð í stöðugar útgáfur af tungumálinu.
  • Leyft að nota svið með gerðinni „char“ til að endurtaka gildi yfir svið (ops::{Range, RangeFrom, RangeFull, RangeInclusive, RangeTo}):

    fyrir ch í 'a'..='z' {
    prenta!("{}", ch);
    }
    println!(); // Mun prenta "abcdefghijklmnopqrstuvwxyz"

  • Nýr hluti API hefur verið fluttur í stöðugan flokk, þar á meðal stöðug
    Arc::as_ptr,
    BTreeMap::remove_entry,
    Rc::as_ptr,
    rc::Weak::as_ptr,
    rc::Weak::from_raw,
    rc::Weak::into_raw,
    str::strip_prefix,
    str::strip_suffix,
    samstilling::Weak::as_ptr,
    sync::Weak::from_raw,
    sync::Weak::into_raw,
    bleikja::UNICODE_VERSION,
    Span::resolved_at,
    Span::located_at,
    Span::mixed_site,
    unix::process::CommandExt::arg0.

  • Rustc þýðandinn hefur bætt við stuðningi við að hnekkja ýmsum eiginleikum markvettvangs með því að nota „target-feature“ fána, til dæmis „-C target-feature=+avx2,+fma“. Nýjum fánum hefur einnig verið bætt við:
    "force-unwind-tables" til að búa til vinda af kallatöflur, óháð hrunmeðferðarstefnu; "embed-bitcode" til að stjórna því hvort LLVM bitakóði sé innifalinn í mynduðum rlibs. "Embed-bitcode" fáninn er sjálfgefið virkur í Cargo til að hámarka byggingartíma og plássnotkun.

  • Þriðja stig stuðnings hefur verið veitt fyrir mipsel-sony-psp og thumbv7a-uwp-windows-msvc pallana. Þriðja stigið felur í sér grunnstuðning, en án sjálfvirkrar prófunar og birtingar á opinberum byggingum.

Auk þess má geta þess sagan um að búa til það einfaldasta приложения á Rust tungumálinu, byrjað að nota ræsiforrit kerfisins og tilbúið til sjálfstætt hleðslu í stað stýrikerfisins.
Greinin er sú fyrsta í röð sem er tileinkuð því að sýna tækni sem er eftirsótt í forritun á lágu stigi og stýrikerfisþróun.

Heimild: opennet.ru

Bæta við athugasemd