Rust 1.38 forritunarmálsútgáfa

birt útgáfu forritunarmáls kerfisins Ryð 1.38, 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 sorphirðu eða keyrslutíma.

Sjálfvirk minnisstjórnun Rust leysir þróunaraðilann við bendil meðhöndlunar og verndar gegn vandamálum sem stafa af minni meðhöndlun á lágu stigi, eins og eftir-frjáls minni aðgangur, núll bendilinn afvísun, biðminni framúrkeyrsla, og þess háttar. 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:

  • Bætt við leiðslusamsetningarham (pipelined), þar sem smíði háðs rimlakassa hefst um leið og ósjálfstæðislýsigögnin verða tiltæk, án þess að bíða eftir að samantekt þeirra ljúki. Þegar pakki er safnað saman þarf ekki að setja ósjálfstæðin saman að fullu, bara að skilgreina lýsigögnin, sem innihalda lista yfir tegundir, ósjálfstæði og útflutta þætti. Lýsigögn eru gerð aðgengileg snemma í samantektarferlinu, þannig að nú er hægt að safna saman tengdum pakka mun fyrr. Þegar smíðaðir eru stakir pakkar hefur fyrirhugaður háttur ekki áhrif á frammistöðu, en ef smíðin nær yfir pakka með greinóttar ósjálfstæði getur heildarbyggingartíminn minnkað um 10-20%;
  • Tryggir uppgötvun á rangri notkun aðgerða std::mem::ó frumstillt и std::mem::núllað. Til dæmis, std::mem::uninitialized er þægilegt til að búa til fylki fljótt, en það villir þýðandann af því að það virðist vera að frumstilla, en í raun er gildið óinitialsett. mem::uninitialized fallið er þegar merkt sem úrelt og mælt er með því að nota milligerð í staðinn KannskiUnit. Hvað varðar mem::zeroed, þá getur þessi aðgerð valdið vandræðum með gerðir sem geta ekki samþykkt núllgildi.

    Til að hjálpa til við að bera kennsl á óskilgreinda hegðun, bætir nýja útgáfan við lófaskoðun við þýðandann sem greinir nokkur vandamál með mem::uninitialized eða mem::núllað. Til dæmis færðu nú villu þegar þú reynir að nota mem::uninitialized eða mem::zeroed með gerðunum &T og Box‹T›, sem tákna bendihluti sem geta ekki samþykkt núllgildi;

  • Eigindin „#[úrleitt]“ hefur verið stækkuð til að gera kleift að merkja rimlakakka úrelta og áætlaða eyðingu í framtíðinni. Frá og með Rust 1.38 er einnig hægt að nota þennan eiginleika fyrir fjölvi;
  • Bætti við möguleikanum á að nota „#[global_allocator]“ eigindina í undireiningum;
  • Bætt við eiginleika std::hvað sem er::tegundarheiti, sem gerir þér kleift að finna nafn tegundarinnar, sem getur verið gagnlegt fyrir villuleit. Til dæmis, við framkvæmd forritsins geturðu fundið út fyrir hvaða tegund aðgerðin var kölluð:

    fn gen_value‹T: Sjálfgefið>() -› T {
    println!("Fjarlægir tilvik af {}", std::any::type_name::‹T›());
    Sjálfgefið::default()
    }

    fn main() {
    láta _: i32 = gen_gildi(); # "i32" verður prentað
    láta _: String = gen_gildi(); # mun prenta "alloc::string::String"
    }

  • Auknar aðgerðir staðlaða bókasafnsins:
    • sneið::{concat, connect, join} getur nú tekið gildið &[T] til viðbótar við &T;
    • "*const T" og "*mut T" útfæra nú merki::Unpin;
    • „Arc‹[T]›“ og „Rc‹[T]›“ útfæra nú FromIterator‹T›;
    • iter::{StepBy, Peekable, Take} innleiða nú DoubleEndedIterator.
    • ascii::EscapeDefault útfærir Clone og Display.
  • Nýr hluti API hefur verið fluttur í stöðugan flokk, þar á meðal aðferðir sem hafa verið stöðugar
    • ‹*const T›::cast, ‹*mut T›::cast,
    • Lengd::as_sek_f{32|64},
    • Lengd::div_duration_f{32|64},
    • Lengd::div_f{32|64},
    • Lengd::frá_sekúndum_f{32|64},
    • Lengd::mul_f{32|64},
    • sviðsrekstur með afgangi
      div_euclid og rem_euclid fyrir alla heiltölu frumstæður;

  • Bætti við stuðningi við að tilgreina „--eiginleika“ valkostinn mörgum sinnum til að virkja mismunandi eiginleika í farmpakkastjóranum;
  • Þýðandinn veitir þriðja stigi stuðningur fyrir markpalla aarch64-uwp-windows-msvc, i686-uwp-windows-gnu, i686-uwp-windows-msvc, x86_64-uwp-windows-gnu, x86_64-uwp-windows-msvc markmið, armv7-unknown-linux -gnueabi, armv7-óþekktur-linux-musleabi, sexhyrningur-óþekktur-linux-musl og riscv32i-unknown-none-elf. Þriðja stigið felur í sér grunnstuðning, en án sjálfvirkrar prófunar og birtingar á opinberum byggingum.

Heimild: opennet.ru

Bæta við athugasemd