Hoʻokuʻu ʻia ʻo Rust 1.34

Ua hoʻokuʻu ʻia ka ʻōlelo papahana ʻo Rust 1.34, i hoʻomohala ʻ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. 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, kahi e hiki ai iā ʻoe ke kiʻi i nā hale waihona puke e pono ai no ka papahana i hoʻokahi kaomi. Kākoʻo ʻia ka waihona crates.io no ka mālama ʻana i nā hale waihona puke.

Nā hana hou nui:

  • Ua hoʻohui ka luna pūʻolo Cargo i nā mea hana e hana me nā papa inoa pūʻulu ʻē aʻe i hiki ke noho pū me ka crates.io hoʻopaʻa inoa lehulehu. No ka laʻana, hiki i nā mea hoʻomohala o nā noi waiwai ke hoʻohana i kā lākou papa inoa pilikino ponoʻī, hiki ke hoʻohana ʻia i ka wā e hoʻopaʻa inoa i nā hilinaʻi ma Cargo.toml, a hoʻopili i kahi ʻano hoʻohālike e like me crates.io no kā lākou huahana, a me ka kuhikuhi ʻana i nā hilinaʻi i nā pahu ʻelua. io a i kāu papa inoa ponoʻī.

    E hoʻohui i kahi papa inoa waho i ~/.cargo/config
    ua hāʻawi ʻia kahi koho hou "my-registry" ma ka ʻāpana "[registries]", a ua hoʻohui ʻia kahi koho "other-crate" e haʻi i ka hoʻopaʻa inoa waho ma nā hilinaʻi ma Cargo.toml ma ka ʻāpana "[dependencies]". No ka hoʻohui ʻana i kahi papa inoa hou, e kau wale i ka hōʻailona hōʻoia i ka ~/.cargo/credentials file a holo i ke kauoha
    "ka hoʻokomo ukana --registry=my-registry" a no ka hoʻolaha ʻana i kahi pūʻolo -
    "cargo publish -regy=my-register";

  • Hoʻohui i ke kākoʻo piha no ka hoʻohana ʻana i ka mea hoʻohana "?". i nā doctests, e ʻae iā ʻoe e hoʻohana i ka code code mai ka palapala e like me nā hoʻāʻo. Mea hoʻohana mua
    "?" hiki ke hoʻohana ʻia e mālama i nā hewa i ka wā o ka hoʻokō ʻana i ka hoʻāʻo ma ke alo o ka hana "fn main()" a i ʻole nā ​​hana "#[test]";

  • Ma nā hiʻohiʻona maʻamau i wehewehe ʻia me ka hoʻohana ʻana i nā macros kaʻina hana, hiki ke hoʻohana i nā pūʻulu ʻokoʻa o nā hōʻailona (“#[attr($tokens)]”, “#[attr[$tokens]] a me #[attr{$tokens}]”). Ma mua, hiki ke kuhikuhi ʻia nā mea i loko o kahi kumu lāʻau/recursive me ka hoʻohana ʻana i nā string literals, no ka laʻana "#[foo(bar, baz(quux, foo = "bar"))]", akā i kēia manawa hiki ke hoʻohana i nā helu helu (' #[range(0. .10)]') a me nā hana e like me “#[bound(T: MyTrait)]”;
  • Ua hoʻopaʻa ʻia nā ʻano TryFrom a me TryInto, e ʻae ana i ka hoʻololi ʻana i ke ʻano me ka lawelawe hewa. No ka laʻana, hoʻohana nā ʻano like from_be_bytes me nā ʻano integer i nā arrays ma ke ʻano he hoʻokomo, akā hele pinepine ka ʻikepili i kahi ʻano Slice, a ʻo ka hoʻololi ʻana ma waena o nā arrays a me nā ʻāpana he pilikia ke hana me ka lima. Me ke kōkua o nā hiʻohiʻona hou, hiki ke hana i ka hana i ʻōlelo ʻia ma ka lele ma o ke kelepona ʻana iā .try_into(), no ka laʻana, "let num = u32::from_be_bytes(slice.try_into()?)". No nā hoʻololi ʻana i kūleʻa mau (no ka laʻana, mai ka ʻano u8 a i ka u32), ua hoʻohui ʻia kahi ʻano hewa Infallible e ʻae i ka hoʻohana pono ʻana o
    E ho'āʻo mai no nā hoʻokō āpau o "Mai";

  • Hoʻopau i ka hana CommandExt::before_exec, ka mea i ʻae i ka hoʻokō ʻana i kahi mea lawelawe ma mua o ka hoʻokō ʻia i hoʻokō ʻia i loko o ka pōʻaiapili o kahi kaʻina hana keiki i ʻoki ʻia ma hope o ke kāhea ʻana () kelepona. Ma lalo o ia mau kūlana, hiki ke hoʻopalike ʻia kekahi mau kumuwaiwai o ke kaʻina hana makua, e like me ka wehewehe ʻana i nā faila a me nā wahi hoʻomanaʻo palapala ʻāina, hiki ke alakaʻi i ke ʻano ʻike ʻole a me ka hana hewa o nā hale waihona puke.
    Ma kahi o before_exec, ua ʻōlelo ʻia e hoʻohana i ka hana palekana CommandExt::pre_exec.

  • ʻO nā ʻano integer atomika i hoʻopaʻa ʻia i hoʻopaʻa ʻia a ʻaʻole pūlima ʻia mai ka 8 a hiki i ka 64 bits (no ka laʻana, AtomicU8), a me nā ʻano pūlima NonZeroI[8|16|32|54|128].
  • Ua hoʻoneʻe ʻia kahi ʻāpana hou o ka API i ka wae paʻa, me ka Any::type_id, Error::type_id, slice::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant::checked_[add|sub ] a ua hoʻopaʻa ʻia nā ala SystemTime ::checked_[add|sub]. Ua hoʻokūpaʻa ʻia nā hana iter::from_fn a me iter::subcessors;
  • No nā ʻano integer a pau, ua hoʻokō ʻia nā hana checked_pow, saturating_pow, wrapping_pow a me overflowing_pow;
  • Hoʻohui i ka hiki ke hiki i nā loiloi ma ke kahua hoʻopili ma ka wehewehe ʻana i ke koho kūkulu "-C linker-plugin-lto" (rustc compiles Rust code i LLVM bitcode, e hiki ai ke hoʻohana ʻia nā loiloi LTO).

Source: opennet.ru

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