Hoʻokuʻu ʻia ʻo Rust 1.38

paʻi ʻia hoʻokuʻu ʻōlelo hoʻolālā ʻōnaehana Popo 1.38, i hoʻokumu ʻia e ka papahana Mozilla. Hoʻopili ka ʻōlelo i ka palekana hoʻomanaʻo, hāʻawi i ka hoʻokele hoʻomanaʻo ʻakomi, a hāʻawi i kahi ala e hoʻokō ai i ka parallelism hana kiʻekiʻe me ka hoʻohana ʻole ʻana i ka ʻōpala a i ʻole ka wā holo.

Hoʻokuʻu ka hoʻokele hoʻomanaʻo ʻakomi a Rust i ka mea hoʻomohala mai ka hoʻopololei ʻana i ka pointer a pale aku i nā pilikia e kū mai ana mai ka hoʻohana ʻana i ka hoʻomanaʻo haʻahaʻa haʻahaʻa, e like me ka loaʻa ʻana o ka hoʻomanaʻo ʻana ma hope o ka manuahi, ka hoʻihoʻi ʻole ʻana o ka pointer, ka hoʻonui ʻana i ka buffer, a me nā mea like. Ke kūkulu ʻia nei kahi luna pūʻolo e puʻunaue i nā hale waihona puke, e hōʻoia i ka hui ʻana a me ka mālama ʻana i nā hilinaʻi e ka papahana. waiwai, hiki iā ʻoe ke kiʻi i nā hale waihona puke e pono ai no ka papahana i hoʻokahi kaomi. Kākoʻo ʻia kahi waihona no ka mālama ʻana i nā hale waihona puke crates.io.

ka papa kuhikuhiE nā mea hou:

  • Hoʻohui ʻia kahi ʻano hoʻohui pipelined (pipelined), kahi e hoʻomaka ai ke kūkulu ʻana i kahi pūʻolo pahu hilinaʻi i ka wā e loaʻa ai ka metadata hilinaʻi, me ke kali ʻole i ka hoʻopau ʻana. Ke hōʻuluʻulu ʻana i kahi pūʻolo, ʻaʻole pono e hui piha ʻia nā mea hilinaʻi, wehewehe wale i ka metadata, aia nā papa inoa o nā ʻano, nā hilinaʻi, a me nā mea i lawe ʻia aku. Loaʻa ka metadata i ka wā mua o ke kaʻina hana, no laila hiki ke hoʻopili ʻia nā pūʻolo pili i kēia manawa ma mua. Ke kūkulu ʻana i nā pūʻolo hoʻokahi, ʻaʻole pili ke ʻano i manaʻo ʻia i ka hana, akā inā uhi ka hale i nā pūʻolo me nā hilinaʻi lālā, hiki ke hoʻemi ʻia ka manawa kūkulu holoʻokoʻa e 10-20%;
  • E hōʻoia i ka ʻike ʻana i ka hoʻohana hewa ʻana i nā hana std::mem::uninitialized и std::mem::zeroed. No ka laʻana, std::mem::uninitialized mea maʻalahi no ka hana wikiwiki ʻana i nā arrays, akā alakaʻi hewa ia i ka mea hoʻopili no ka mea ua hoʻomaka ʻia ia, akā ʻo ka ʻoiaʻiʻo, ʻaʻole i hoʻomaka ka waiwai. Ua hōʻailona ʻia ka hana mem:: uninitialized ʻaʻole i hoʻopau ʻia a makemake ʻia e hoʻohana i kahi ʻano waena. MaliaUnit. No ka mem::zeroed, hiki i kēia hana ke hoʻopilikia i nā ʻano ʻaʻole hiki ke ʻae i nā waiwai ʻole.

    No ke kōkua ʻana i ka ʻike ʻana i ka ʻano undefined, hoʻohui ka hoʻokuʻu hou i kahi lint check i ka compiler e ʻike i kekahi mau pilikia me ka mem:: uninitialized a i ʻole mem:: zeroed. Eia kekahi laʻana, loaʻa iā ʻoe ka hewa i ka wā e hoʻohana ai i ka mem::uninitialized a i ʻole mem::zeroed me nā ʻano &T a me Box‹T›, e hōʻike ana i nā mea kuhikuhi ʻaʻole hiki ke ʻae i nā waiwai null;

  • Ua hoʻonui ʻia ke ʻano "#[deprecated]" e ʻae i nā pūʻolo crate e hōʻailona ʻia i ka wā kahiko a hoʻonohonoho ʻia no ka holoi ʻana i ka wā e hiki mai ana. Ma ka Rust 1.38, hiki ke hoʻohana ʻia kēia ʻano no nā macros;
  • Hoʻohui i ka hiki ke hoʻohana i ke ʻano "#[global_allocator]" i nā submodules;
  • Hana hou std::kekahi::type_name, hiki iā ʻoe ke ʻike i ka inoa o ke ʻano, hiki ke hoʻohana ʻia no nā kumu debugging. No ka laʻana, i ka wā e hoʻokō ai i ka papahana hiki iā ʻoe ke ʻike no ke ʻano o ka hana i kapa ʻia ai:

    fn gen_value‹T: Default>() -› T {
    println!("Hoʻomaka i kahi laʻana o {}", std::kekahi::type_name::‹T›());
    Default::default()
    }

    fn nui() {
    let _: i32 = gen_value(); # "i32" e paʻi ʻia
    let _: String = gen_value(); # e paʻi "aloc::string::String"
    }

  • Nā hana lōʻihi o ka waihona maʻamau:
    • slice::{concat, connect, join} hiki ke lawe i ka waiwai &[T] me ka &T;
    • "*const T" a me "*mut T" i kēia manawa e hoʻokomo i ka marker::Unpin;
    • "Arc‹[T]›" a me "Rc‹[T]›" i kēia manawa hoʻokō FromIterator‹T›;
    • iter::{StepBy, Peekable, Take} i kēia manawa e hoʻokō i DoubleEndedIterator.
    • ascii :: Hoʻohana ʻo EscapeDefault i ka Clone a me ka Hōʻike.
  • Ua hoʻoili ʻia kahi ʻāpana hou o nā API i ka ʻāpana paʻa, me nā ʻano hana i hoʻopaʻa ʻia
    • ‹*const T›::cast, ‹*mut T›::cast,
    • Ka lōʻihi::as_secs_f{32|64},
    • Ka lōʻihi::div_duration_f{32|64},
    • Ka lōʻihi::div_f{32|64},
    • Ka lōʻihi::from_secs_f{32|64},
    • Ka lōʻihi::mul_f{32|64},
    • hana mahele me ke koena
      div_euclid a me rem_euclid no nā helu helu mua;

  • Hoʻohui i ke kākoʻo no ka wehewehe ʻana i ke koho "--features" i nā manawa he nui e hiki ai i nā hiʻohiʻona like ʻole i loko o ka luna hoʻokele ukana;
  • Hāʻawi ka mea hōʻuluʻulu i ke kolu keka ke kākoʻo no nā paepae i hoʻopaʻa ʻia aarch64-uwp-windows-msvc, i686-uwp-windows-gnu, i686-uwp-windows-msvc, x86_64-uwp-windows-gnu, x86_64-uwp-windows-msvc targets, armvux7 -gnueabi, armv7-unknown-linux-musleabi, hexagon-unknown-linux-musl a me riscv32i-unknown-none-elf. ʻO ke kolu o ka pae e pili ana i ke kākoʻo maʻamau, akā me ka ʻole o ka hoʻāʻo ʻana a me ka hoʻolaha ʻana i nā hale kūhelu.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka