Mwepụta asụsụ mmemme nchara 1.58

Mwepụta nke asụsụ mmemme izugbe Rust 1.58, nke ọrụ Mozilla hibere, mana nke emepụtara ugbu a n'okpuru nkwado nke otu nọọrọ onwe ya na-anaghị akwụ ụgwọ Rust Foundation. Asụsụ a na-elekwasị anya na nchekwa ebe nchekwa, na-enye njikwa ebe nchekwa akpaka, ma na-enye ụzọ iji nweta nnukwu ọrụ myirịta na-ejighi ihe mkpofu ahịhịa ma ọ bụ oge ịgba ọsọ (oge ọ na-agba ọsọ na-ebelata ka ọ bụrụ mmalite na nhazi nke ọba akwụkwọ ọkọlọtọ).

Njikwa ebe nchekwa akpaka nke Rust na-ewepụ njehie mgbe ị na-emegharị ihe nrịbama ma na-echebe megide nsogbu na-esite na ngbanwe ebe nchekwa dị ala, dị ka ịnweta mpaghara ebe nchekwa mgbe a tọhapụrụ ya, nkwụsị pointer null, buffer overruns, wdg. Iji kesaa ọba akwụkwọ, hụ na mgbakọ na jikwaa dabere, ọrụ a na-emepe emepe njikwa ngwugwu Cargo. A na-akwado ebe nchekwa crates.io maka ọba akwụkwọ nnabata.

Isi ihe ọhụrụ:

  • N'ime ngọngọ nhazi ahịrị, na mgbakwunye na ikike enwere mbụ iji dochie mgbanwe mgbanwe ndị edepụtara n'ụzọ doro anya ka akara akara site na nọmba na aha, a na-emejuputa ikike iji dochie ihe nchọpụta aka ike site n'ịgbakwunye okwu "{identifier}" n'ahịrị. Dịka ọmụmaatụ: // Ihe owuwu akwadoro na mbụ: println!("Ndewo, {}!", get_person()); println!("Ndewo, {0}!", nweta_onye()); println! ("Ndewo, {onye}!", onye = get_person()); // ugbu a, ị nwere ike ezipụta ka onye = get_person (); println!("Ndewo, {onye}!");

    Enwere ike ịkọwapụta ihe nchọpụta ozugbo na nhọrọ nhazi. ka (obosara, nkenke) = get_format (); maka (aha, akara) na get_scores () {println!("{aha}: {score: wide$.precision$}"); }

    Ngbanwe ọhụrụ a na-arụ ọrụ na macros niile na-akwado nkọwa usoro eriri, ewezuga nnukwu "egwu!" na ụdị 2015 na 2018 nke asụsụ Rust, nke a na-ewere ụjọ!("{ident}") dị ka eriri mgbe niile (na Rust 2021 nnọchi na-arụ ọrụ).

  • Agbanwewo omume nke std :: usoro :: Usoro iwu na ikpo okwu Windows nke mere na mgbe ị na-eme iwu, maka ihe nchekwa, ọ naghị achọ faịlụ ndị nwere ike ime na ndekọ ugbu a. Ewepụla akwụkwọ ndekọ aha ugbu a n'ihi na enwere ike iji ya mebie koodu ọjọọ ma ọ bụrụ na emebere mmemme na akwụkwọ ndekọ aha enweghị ntụkwasị obi (CVE-2021-3013). Ọdịiche nchọpụta ọhụrụ a nwere ike ime na-agụnye ịchọ akwụkwọ ndekọ Rust, akwụkwọ ndekọ aha ngwa, ndekọ sistemụ Windows, yana akwụkwọ ndekọ aha akọwapụtara na mgbanwe gburugburu PATH.
  • Ọbá akwụkwọ ọkọlọtọ agbasawanyela ọnụ ọgụgụ ọrụ ndị akara "#[must_use]" iji nye ịdọ aka ná ntị ma ọ bụrụ na eleghara uru nloghachi anya, nke na-enyere aka ịchọpụta njehie kpatara site na iche na ọrụ ga-agbanwe ụkpụrụ kama ịlaghachi uru ọhụrụ. .
  • Atụgharịla akụkụ ọhụrụ nke API n'ụdị nke kwụsiri ike, gụnyere ụzọ na mmejuputa omume nke ejiri mesie ike:
    • Metadata:: is_symlink
    • Ụzọ ::is_symlink
    • {integer} :: saturating_div
    • Nhọrọ :: unwrap_anaghị enyocha ya
    • Nsonaazụ:: anaghị enyocha ya
    • Nsonaazụ :: unwrap_err_unchecked
  • A na-eji àgwà "const", nke na-ekpebi ohere iji ya mee ihe n'ọnọdụ ọ bụla kama ịdịgidesi ike, na ọrụ:
    • Ogologo oge:: ọhụrụ
    • Ogologo oge:: check_add
    • Ogologo oge :: saturating_add
    • Ogologo oge:: enyochala_sub
    • Ogologo oge :: saturating_sub
    • Ogologo oge:: checked_mul
    • Ogologo oge :: saturating_mul
    • Ogologo oge:: checked_div
  • Enyere ikike iwepụ ihe nrịbama "* const T" na ọnọdụ "const".
  • N'ime njikwa ngwugwu Cargo, agbakwunyere mpaghara rust_version na ngwugwu metadata, yana nhọrọ "-message-format" agbakwunyere na iwu "ebunye ibu".
  • Onye nchịkọta ahụ na-arụ ọrụ nkwado maka usoro nchebe CFI (Control Flow Integrity), nke na-agbakwụnye nlele tupu oku ọ bụla na-apụtaghị ìhè iji chọpụta ụdị ụfọdụ nke omume a na-akọwapụtaghị nke nwere ike iduga mmebi nke usoro mmezu nkịtị (nchịkwa nchịkwa) n'ihi nke a. iji mkpagbu na-agbanwe ntụnye echekwara na ebe nchekwa na ọrụ.
  • Onye nchịkọta agbakwunyela nkwado maka ụdị 5 na 6 nke usoro ntụnyere mkpuchi mkpuchi LLVM, ejiri iji nyochaa mkpuchi koodu n'oge ule.
  • Na mkpokọta, a na-ebuli ihe achọrọ maka ụdị LLVM kacha nta na LLVM 12.
  • Ọkwa nke atọ nke nkwado maka x86_64-unknown-ọ dịghị otu ikpo okwu emejuputa atumatu. Ọkwa nke atọ gụnyere nkwado bụ isi, mana na-enweghị nnwale akpaaka, na-ewu ụlọ ọrụ na-ebipụta, ma ọ bụ lelee ma enwere ike iwu koodu ahụ.

Ọzọkwa, anyị nwere ike ịhụ n'akwụkwọ Microsoft nke ntọhapụ nke Rust maka Windows 0.30 ọba akwụkwọ, nke na-enye gị ohere iji asụsụ nchara iji mepụta ngwa maka Windows OS. Ntọala ahụ gụnyere ngwugwu crate abụọ (window na windows-sys), nke ị nwere ike ịnweta Win API na mmemme Rust. A na-emepụta koodu maka nkwado API ike site na metadata na-akọwa API, nke na-enye gị ohere imejuputa nkwado ọ bụghị naanị maka oku API Win dị ugbu a, kama maka oku ga-apụta n'ọdịnihu. Ụdị ọhụrụ ahụ na-agbakwụnye nkwado maka ikpo okwu ebumnuche UWP (Universal Windows Platform) ma mejuputa ụdị Handle na Debug.

isi: opennet.ru

Tinye a comment