Mwepụta asụsụ mmemme nchara 1.38

bipụtara mwepụta asụsụ mmemme sistemụ Nchara 1.38, nke Mozilla rụpụtara ya. Asụsụ a na-elekwasị anya na nchekwa ebe nchekwa, na-enye njikwa ebe nchekwa akpaka, ma na-enye ụzọ iji nweta ọrụ dị elu na-enweghị iji ihe mkpofu ma ọ bụ oge ịgba ọsọ.

Njikwa ebe nchekwa akpaghị aka nke Rust na-ahapụ onye nrụpụta na ntule ntụaka ma na-echebekwa pụọ ​​na nsogbu na-esite na ngbanwe ebe nchekwa dị ala, dị ka ịnweta ebe nchekwa anaghị akwụghị ụgwọ, ndebiri pointer null, buffer overruns, na ihe ndị ọzọ. A na-emepụta onye njikwa ngwugwu iji kesaa ọba akwụkwọ, hụ na mgbakọ na jikwaa ndabere site na ọrụ ahụ. ibu, na-enye gị ohere ịnweta ụlọ akwụkwọ ndị achọrọ maka mmemme ahụ n'otu pịa. A na-akwado ebe nchekwa iji kwado ọba akwụkwọ crates.io.

Main ihe ọhụrụ:

  • Agbakwunyere ụdị nchịkọta pipelined (pipelined), bụ nke a na-amalite ngwungwu mkpuchi nke dabere ozugbo metadata dabere na-adị, na-echeghị ka nchịkọta ya mechaa. Mgbe ị na-achịkọta ngwugwu, ihe ndabere adịghị mkpa ka achịkọta ya nke ọma, na-akọwapụta metadata, nke gụnyere ndepụta nke ụdị, ihe ndabere na ihe mbupụ. A na-eme ka metadata dị n'isi n'usoro nchịkọta, yabụ enwere ike ịchịkọta ngwugwu ejikọtara ugbu a na mbụ. Mgbe ị na-ewu otu ngwugwu, ọnọdụ a tụrụ aro anaghị emetụta arụmọrụ, ma ọ bụrụ na ihe owuwu ahụ na-ekpuchi ngwugwu na-adabere na alaka, oge a na-ewu ụlọ nwere ike belata site na 10-20%;
  • Na-eme ka nchọpụta nke ojiji nke ọrụ na-ezighi ezi std :: mem :: unitialized и std:: mem:: efu. Dịka ọmụmaatụ, std :: mem :: uniitialized dị mma maka ịmepụta ngwa ngwa ngwa ngwa, mana ọ na-eduhie onye nchịkọta n'ihi na ọ dị ka a na-ebute ya, ma n'eziokwu, uru ahụ ka na-enweghị isi. Emerela ọrụ mem:: anaghị ebido ya ka ọ kwụsịrị ma a na-atụ aro ka iji ụdị etiti kama. Ma eleghị anya,Unit. Banyere mem :: zeroed, ọrụ a nwere ike ịkpata nsogbu na ụdị na-enweghị ike ịnakwere ụkpụrụ efu.

    Iji nyere aka chọpụta omume akọwapụtaghị, ntọhapụ ọhụrụ ahụ na-agbakwunye nlele lint na onye nchịkọta nke na-achọpụta ụfọdụ nsogbu na mem :: unitialized or mem:: zeroed. Dịka ọmụmaatụ, ị nwetala njehie mgbe ị na-agbalị iji mem :: uninitialized or mem :: zeroed with type &T and Box‹T›, nke na-anọchi anya ihe ndị na-egosi ihe na-enweghị ike ịnakwere ụkpụrụ efu;

  • Agbasawanye àgwà "#[deprecated]" iji nye ohere ka egosi na ngwugwu crate agaghịzi adị ma hazie maka ihichapụ n'ọdịnihu. Dị ka nchara 1.38, a pụkwara iji àgwà a maka macro;
  • Agbakwunyere ikike iji njirimara "#[global_allocator]" na submodules;
  • Ọrụ agbakwunyere std :: ọ bụla :: ụdị_aha, nke na-enye gị ohere ịchọpụta aha ụdị ahụ, nke nwere ike ịba uru maka nbibi. Dịka ọmụmaatụ, n'oge mmemme mmemme ị nwere ike ịchọpụta ụdị ọrụ a na-akpọ:

    fn gen_value‹T: Ebube>() -› T {
    println! ("Na-amalite ihe atụ nke {}", std :: ọ bụla :: ụdị_aha :: ‹T› ());
    Nke an-kpọ: nke ndabara()
    }

    fn isi() {
    ka _: i32 = gen_value (); A ga-ebipụta # "i32".
    ka _: eriri = gen_value (); # ga-ebipụta "alloc :: eriri :: eriri"
    }

  • Ọrụ agbatịkwuru nke ọba akwụkwọ ọkọlọtọ:
    • iberi::{concat, connect, join} nwere ike ugbu a were uru &[T] na mgbakwunye na &T;
    • "* const T" na "* mut T" ugbu a mejuputa akara :: Wepụ;
    • "Arc‹[T]›" na" Rc‹[T]›" ugbu a mejuputa FromIterator‹T›;
    • Iter:: {StepBy, Peekable, Take} ugbu a mejuputa DoubleEndedIterator.
    • ascii :: EscapeDefault na-arụ ọrụ Clone na Ngosipụta.
  • Ebufeela akụkụ ọhụrụ nke API gaa na ngalaba kwụsiri ike, gụnyere ụzọ ndị edoziworo
    • ‹* const T›:: ihe nkedo, ‹*mut T›:: ihe nkedo,
    • Ogologo oge:: as_secs_f{32|64},
    • Ogologo oge:: div_duration_f{32|64},
    • Ogologo oge:: div_f{32|64},
    • Ogologo oge:: site na sk_f{32|64},
    • Ogologo oge::mul_f{32|64},
    • nkewa arụmọrụ na fọdụrụnụ
      div_euclid na rem_euclid maka integer primitives niile;

  • Nkwado agbakwunyere maka ịkọwapụta nhọrọ “--atụmatụ” ọtụtụ oge iji mee ka atụmatụ dị iche iche dị na njikwa ngwugwu ibu;
  • Onye nchịkọta na-enye nke atọ ọkwa nkwado maka nyiwe ebumnuche aarch64-uwp-windows-msvc, i686-uwp-windows-gnu, i686-uwp-windows-msvc, x86_64-uwp-windows-gnu, x86_64-uwp-windows-msvc targets, armv7-unknown-lins -gnueabi, armv7-amaghị-linux-musleabi, hexagon-amaghị-linux-musl na riscv32i-amaghị-ọ dịghị onye-elf. Ọkwa nke atọ gụnyere nkwado bụ isi, mana enweghị nnwale akpaaka na mbipụta nke ụlọ ọrụ gọọmentị.

isi: opennet.ru

Tinye a comment