Hoʻokuʻu ʻia ʻo Rust 1.58

Ua paʻi ʻia ka hoʻokuʻu ʻia ʻana o ka ʻōlelo hoʻolālā kumu nui ʻo Rust 1.58, i hoʻokumu ʻia e ka papahana Mozilla, akā i kēia manawa ua hoʻomohala ʻia ma lalo o ka mana o ka hui kūʻokoʻa waiwai ʻole ʻo Rust Foundation. Hoʻopili ka ʻōlelo i ka palekana hoʻomanaʻo, hāʻawi i ka hoʻokele hoʻomanaʻo ʻakomi, a hāʻawi i ke ala e hoʻokō ai i ka hoʻohālikelike hana kiʻekiʻe me ka ʻole o ka hoʻohana ʻana i ka ʻōpala a i ʻole ka manawa holo (ua hoʻemi ʻia ka manawa holo i ka hoʻomaka kumu a me ka mālama ʻana i ka waihona maʻamau).

Hoʻopau ka hoʻokele hoʻomanaʻo hoʻomanaʻo a Rust i nā hewa i ka wā e hoʻopunipuni ai i nā kuhikuhi a pale i nā pilikia e puka mai ana mai ka hoʻoponopono hoʻomanaʻo haʻahaʻa haʻahaʻa, e like me ke komo ʻana i kahi ʻāpana hoʻomanaʻo ma hope o ka hoʻokuʻu ʻia ʻana, nā kuhikuhi kuhikuhi null, overruns buffer, etc. No ka hāʻawi ʻana i nā hale waihona puke, e hōʻoia i ka hui ʻana a me ka mālama ʻana i nā hilinaʻi, ke kūkulu nei ka papahana i ka luna pūʻolo Cargo. Kākoʻo ʻia ka waihona crates.io no ka mālama ʻana i nā hale waihona puke.

Nā hana hou nui:

  • Ma nā poloka hoʻopololei laina, ma waho aʻe o ka hiki i loaʻa mua e hoʻololi i nā mea hoʻololi i hōʻike maopopo ʻia ma hope o kahi laina ma ka helu a me ka inoa, ua hoʻokō ʻia ka hiki ke hoʻololi i nā mea hōʻike arbitrary ma ka hoʻohui ʻana i ka huaʻōlelo "{identifier}" i ka laina. No ka laʻana: // Nā hana i kākoʻo mua ʻia: println!("Aloha, {}!", get_person()); println!("Aloha, {0}!", get_person()); println!("Aloha, {kanaka}!", kanaka = loaa_kanaka()); // i kēia manawa hiki iā ʻoe ke kuhikuhi i ka let person = get_person (); println!("Aloha, {kanaka}!");

    Hiki ke kuhikuhi pololei ʻia nā mea ʻike ma nā koho hoʻopono. let (ākea, pololei) = get_format(); no (inoa, helu) ma get_scores() { println!("{inoa}: {helu: laula$.kaulike$}"); }

    Hoʻohana ka hoʻololi hou i nā macro a pau e kākoʻo ana i ka wehewehe ʻana i ke ʻano o ka string, koe wale ka "panic!" ma nā mana 2015 a me 2018 o ka ʻōlelo Rust, kahi i mālama ʻia ai ka panic!("{ident}") ma ke ʻano he kaula maʻamau (ma Rust 2021 ka hana hoʻololi).

  • Ua hoʻololi ʻia ke ʻano o ka std::process::Command structure ma ka Windows platform i ka wā e hoʻokō ai i nā kauoha, no nā kumu palekana, ʻaʻole ia e ʻimi hou i nā faila hiki ke hoʻokō ʻia i ka papa kuhikuhi o kēia manawa. Hoʻokaʻawale ʻia ka papa kuhikuhi o kēia manawa no ka mea hiki ke hoʻohana ʻia no ka hoʻokō ʻana i nā code ʻino inā holo nā papahana i nā papa kuhikuhi hilinaʻi ʻole (CVE-2021-3013). ʻO ka loiloi hoʻokō hou e pili ana i ka ʻimi ʻana i nā papa kuhikuhi Rust, ka papa kuhikuhi noi, ka papa kuhikuhi ʻōnaehana Windows, a me nā kuhikuhi i kuhikuhi ʻia i loko o ka loli kaiapuni PATH.
  • Ua hoʻonui ka waihona maʻamau i ka helu o nā hana i kaha ʻia "#[must_use]" e hoʻopuka i kahi ʻōlelo aʻo inā ʻaʻole mālama ʻia ka waiwai hoʻihoʻi, e kōkua ana e ʻike i nā hewa i hana ʻia e ka manaʻo e hoʻololi i kahi hana ma mua o ka hoʻihoʻi ʻana i kahi waiwai hou.
  • Ua hoʻoili ʻia kahi ʻāpana hou o ka API i ka ʻāpana paʻa, me nā ʻano a me nā hoʻokō o nā ʻano:
    • Metadata::is_symlink
    • Alanui::is_symlink
    • {integer}::saturating_div
    • Koho:: unwrap_unchecked
    • Ka hopena::unwrap_unchecked
    • Ka hopena:: unwrap_err_unchecked
  • Hoʻohana ʻia ka ʻano "const", ka mea e hoʻoholo ai i ka hiki ke hoʻohana ʻia i kēlā me kēia pōʻaiapili ma kahi o nā mea mau, hoʻohana ʻia i nā hana:
    • Ka lōʻihi::hou
    • Ka lōʻihi::checked_add
    • Ka lōʻihi::saturating_add
    • Ka lōʻihi::checked_sub
    • Ka lōʻihi::saturating_sub
    • Ka lōʻihi::checked_mul
    • Ka lōʻihi::saturating_mul
    • Ka lōʻihi::checked_div
  • ʻAe ʻia ka hoʻopau ʻana i nā kuhikuhi "*const T" ma nā pōʻaiapili "const".
  • I loko o ka luna pūʻolo Cargo, ua hoʻohui ʻia ke kahua rust_version i ka metadata pūʻolo, a ua hoʻohui ʻia ke koho "--message-format" i ke kauoha "cargo install".
  • Hoʻokomo ka mea hōʻuluʻulu i ke kākoʻo no ka CFI (Control Flow Integrity), e hoʻohui i nā loiloi ma mua o kēlā me kēia kelepona hele ʻole e ʻike i kekahi mau ʻano o ka ʻano undefined i hiki ke alakaʻi i ka uhaki ʻana i ke kauoha hoʻokō maʻamau (control flow) ma muli o ka ka hoʻohana ʻana i nā hana e hoʻololi i nā kuhikuhi i mālama ʻia i ka hoʻomanaʻo ma nā hana.
  • Ua hoʻohui ka mea hoʻopili i ke kākoʻo no nā mana 5 a me 6 o ka hoʻohālikelike hoʻohālikelike uhi LLVM, i hoʻohana ʻia e loiloi i ka uhi code i ka wā o ka hoʻāʻo ʻana.
  • I ka compiler, hoʻokiʻekiʻe ʻia nā koi no ka liʻiliʻi liʻiliʻi o LLVM i LLVM 12.
  • Ua hoʻokō ʻia ke kolu o ke kākoʻo no ka x86_64-unknown-none platform. ʻ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, ka hoʻopuka ʻana i nā hale mana, a i ʻole ka nānā ʻana inā hiki ke kūkulu ʻia ke code.

Eia hou, hiki iā mākou ke hoʻomaopopo i ka paʻi ʻia e Microsoft o ka hoʻokuʻu ʻana o Rust no nā hale waihona puke Windows 0.30, e ʻae iā ʻoe e hoʻohana i ka ʻōlelo Rust e hoʻomohala i nā noi no ka Windows OS. Aia i loko o ka hoʻonohonoho nā pahu pahu ʻelua (windows a windows-sys), kahi e hiki ai iā ʻoe ke komo i ka Win API i nā polokalamu Rust. Hoʻokumu ʻia ke code no ke kākoʻo API mai ka metadata e wehewehe ana i ka API, kahi e hiki ai iā ʻoe ke hoʻokō i ke kākoʻo ʻaʻole wale no nā kelepona Win API i loaʻa, akā no nā kelepona e ʻike ʻia i ka wā e hiki mai ana. Hoʻohui ka mana hou i ke kākoʻo no ka UWP (Universal Windows Platform) paena a hoʻokō i nā ʻano Handle a Debug.

Source: opennet.ru

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