Rust 1.36 Chirongwa Mutauro Kuburitswa

rakabudiswa system programming mutauro kuburitswa Ngura 1.36, yakatangwa neMozilla project. Mutauro unotarisana nekuchengetedza ndangariro, unopa otomatiki ndangariro manejimendi, uye inopa nzira yekuwana yakakwirira basa parallelism pasina kushandisa muunganidzi wemarara kana nguva yekumhanya.

Rust's otomatiki ndangariro manejimendi inosunungura mugadziri kubva pakugadzirisa pointer uye inodzivirira kubva kune yakaderera-level ndangariro manipulation, senge mushure-yemahara memory yekuwana, null pointer dereferences, buffer overruns, nezvimwe. Maneja wepakeji ari kugadzirwa kugovera maraibhurari, kuona kuungana uye kugadzirisa zvinovimbika neprojekiti. kago, zvichikubvumidza kuti uwane maraibhurari anodiwa pachirongwa ichi nekudzvanya kumwe chete. A repository inotsigirwa kuitisa maraibhurari crates.io.

chikuru zvitsva:

  • Hunhu hwakadzikama Future, iyo inomiririra kukosha iyo ongororo inogona kunge isati yapera uchishandisa async / .await blocks. Asynchronous values ​​inotsanangurwa uchishandisa Ramangwana inoita kuti zvikwanise kuenderera mberi nekuita basa rinobatsira mushinda, panguva imwe chete yakamirira kupedzwa kwekuverenga kwehumwe kukosha;
  • Raibhurari yakagadzikana alloc, iyo inopa smart pointer uye kuunganidzwa kwekugadzirisa ndangariro-yakagoverwa kukosha. Memory allocation mu std ikozvino inoshandisa mhando Chinhu, iyo inotengeswa zvakare kubva kune alloc. Kushandiswa kwakaparadzana kwealloc kune musoro muzvishandiso zvisina kusungirirwa kune std ("#![no_std]"), pamwe nemumaraibhurari akagadzirirwa kushandiswa muzvirongwa zvakafanana pasina std;
  • Kunzvenga macheki ekutanga kwezvinokosha suggested mhando yepakati PamweUniti, iyo inogona kushandiswa pachinzvimbo che mem ::uninitialized basa seimwe nzira yakachengeteka. The mem :: uninitialized function yakanakira kukurumidza kugadzira arrays, asi inotsausa muunganidzi nekuti inoita seyakatanga, asi muchokwadi kukosha kunoramba kusingazivikanwe. Pamwe Uninit inokutendera kuti uratidze pachena kune mugadziri kuti kukosha hakuna kurongeka, kufunga nezve hunhu husina kutsanangurwa hunoenderana neizvi, uye zvakare kuronga cheki muzvirongwa kuburikidza ne "zvichida_t:" uye nhanho-ne-nhanho kutanga, zvichiratidza kupera kwayo. uchishandisa β€œ.assume_init()” kufona. Nekuuya kweMaybeUninit, mem ::uninitialized basa rakadzikiswa uye harikurudzirwe kushandiswa;
  • Iyo NLL (Non-Lexical Lifetimes) nzira, iyo yakawedzera sisitimu yekurekodha hupenyu hwezvakakweretwa zvakasiyana, yakagadziriswa kuRust 2015 mutauro (pakutanga, NLL yaitsigirwa chete neRust 2018). Panzvimbo pekuita hupenyu hwese padanho relexical, NLL inozviita pamwero weiyo seti yeanongedzo mune yekuuraya inoyerera girafu. Iyi nzira inokubvumira kuti uwedzere hutano hwekutarisa kukwereta kwezvimwe zvakasiyana-siyana (kukwereta cheki) uye kubvumira kuitwa kwemamwe marudzi ekodhi yakarurama, kushandiswa kwaimbove kwakakonzera kukanganisa. Hunhu hutsva hunoitawo kuti kugadzirisa kuve nyore;
  • Kuitwa kutsva kweassociative arrays inosanganisirwa HashMap, zvichienderana nekushandiswa kwechimiro Swiss Tafura (zvakaremerwa otomatiki hashbrown::HashMap, kunze kwekunge zvataurwa neimwe nzira, senge std::HashMap, iyo inobva paSipHash 1-3). Iyo software interface inoramba yakafanana, uye misiyano inoonekwa kumugadziri inowira pasi kusvika pakuwedzera kwekuita uye kuderedzwa kwendangariro kushandiswa;
  • Mupakeji maneja cargo akawedzera iyo "--offline" sarudzo, iyo inogonesa kushanda pasina kuwana network, umo chete mapakeji akavharirwa mune yemuno sisitimu anoshandiswa pakuisa zvinoenderana. Kana kutsamira kusiri mucache yenzvimbo, kukanganisa kunokandwa. Kufanorodha zvinotsamira mukati mecache yemuno usati waenda kunze kwenyika, unogona kushandisa murairo we "cargo fetch";
  • Yakaita kugona kudaidza iyo macro "dbg!" kuratidza nharo dzakawanda;
  • Iyo "const" hunhu, iyo inosarudza mukana wekushandisa mune chero mamiriro pachinzvimbo chezvisingaperi, inoshandiswa kune nzira.
    Layout::kubva_size_align_unchecked,
    mem::inoda_kudonha,
    NonNnull ::kurembera uye
    NonNnull::cast;

  • Chikamu chitsva che APIs chakaendeswa kune yakagadzikana chikamu, kusanganisira nzira dzakagadziriswa
    basa::Waker, basa::Poll,
    VecDeque::tenderera_kuruboshwe, VecDeque::tenderera_kurudyi,
    Verenga::verenga_vectored, Nyora::write_vectored,
    Iterator ::kopiwa,
    BorrowMut (yetambo) uye str::as_mut_ptr.

Source: opennet.ru

Voeg