Ua paʻi ʻia ka hoʻokuʻu ʻia ʻana o ka ʻōlelo hoʻolālā kumu nui ʻo Rust 1.74, 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 ʻia ka ʻōlelo i ka palekana hoʻomanaʻo a hāʻawi i nā ala e hoʻokō ai i ka parallelism kiʻekiʻe i ka hoʻokō ʻana i ka hana, ʻoiai e pale ana i ka hoʻohana ʻana i ka ʻōpala a me 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ʻokuʻu ʻia nā ʻenehana hoʻomanaʻo hoʻomanaʻo a Rust i ka mea hoʻomohala mai nā hewa manipulation pointer a pale 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 ke komo ʻana ma hope o ka loaʻa ʻole ʻana, nā kuhi kuhikuhi null, overruns 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. Kākoʻo ʻia ka waihona crates.io no ka mālama ʻana i nā hale waihona puke.
Hoʻoikaika ʻia ka palekana hoʻomanaʻo ma Rust i ka manawa hōʻuluʻulu ma o ka nānā ʻana, ka nānā ʻana i ka mea nona ka mea, ka noʻonoʻo ʻana i ke ola o ka mea (scoping), a me ka loiloi hoʻomanaʻo i ka wā holo. Hāʻawi pū ʻo Rust i ka pale ʻana i ka integer overflows, pono e hoʻomaka mua ʻia nā waiwai hoʻololi ma mua o ka hoʻohana ʻana, ʻoi aku ka maikaʻi o ka lawelawe hewa ʻana i ka waihona maʻamau, hoʻohana i ka manaʻo o nā kuhikuhi immutable a me nā loli ma ke ʻano maʻamau, a hāʻawi i ka paʻi static ikaika e hōʻemi i nā hewa loiloi.
Nā hana hou nui:
- Ua hoʻohui ʻia ka hiki ke hoʻonohonoho i nā nānā lint ma o ka faila Cargo.toml me ka hōʻike manakia pūʻolo. Ua manaʻo ʻia nā ʻāpana hou "[lints]" a me "[workspace.lints]" no ka wehewehe ʻana i nā hoʻonohonoho lint, e like me ka pae pane (pāpā, hōʻole, hoʻomaopopo, ʻae); ua noʻonoʻo ʻia nā hoʻololi i kēia mau ʻāpana i ka wā e hoʻoholo ai inā e kūkulu hou. No ka laʻana, ma kahi o ka wehewehe ʻana i nā hae "-F", "-D", "-W", a me "-A" i ka wā o ke kūkulu ʻana a i ʻole ka hoʻohui ʻana i nā ʻano "#![forbid(unsafe_code)]" a me "#![deny(clippy::enum_glob_use)]" i ke code, hiki iā ʻoe ke hoʻohana i kēia mau mea ma ka hōʻike Cargo: [lints.rust] unsafe_code = "forbid" [lints.clippy] enum_glob_use = "deny"
- Kākoʻo ka luna hoʻokele pūʻolo Crate i ka hōʻoia i ka wā e hoʻopili ai i kahi waihona. Ua hoʻokomo ʻia ke kākoʻo no ka mālama ʻana i nā palena hōʻoia i nā hale kūʻai hōʻoia i loko o ka pūʻolo kumu. Linux (ma muli o libsecret), macOS (Kī kaulahao) a me Windows (Windows Luna Hoʻomalu Hōʻoia), akā ua hoʻolālā ʻia ka ʻōnaehana mai ka hoʻomaka ʻana e modular a hiki ke hana me nā mea hoʻolako like ʻole no ka mālama ʻana a me ka hana ʻana i nā hōʻailona; no ka laʻana, ua hoʻomākaukau ʻia kahi plugin no ka hoʻohana ʻana i ka luna ʻōlelo huna 1Password. Hiki ke noi ʻia ka hōʻoia e ka waihona no kekahi hana, ʻaʻole wale no ka hōʻoia ʻana i nā paʻi pūʻolo. ~/.cargo/config.toml [registry] global-credential-providers = ["cargo:token", "cargo:libsecret"]
- Kākoʻo paʻa no nā projections ʻano hoʻihoʻi (impl_trait_projections), e ʻae ana i ka ʻōlelo ʻana o Self a me T::Assoc i nā ʻano hoʻihoʻi e like me "async fn" a me "-> impl Trait". struct Wrapper<'a, T>(&'a T); // Nā ʻano hoʻihoʻi opaque e ʻōlelo ana iā `Self`: impl Wrapper<'_, ()> { async fn async_fn() -> Self { /* … */ } fn impl_trait() -> impl Iterator { /* … */ } } trait Trait<'a> { type Assoc; fn new() -> Self::Assoc; } impl Trait<'_> no () { type Assoc = (); fn new() {} } // Nā ʻano hoʻihoʻi opaque e haʻi ana i kahi ʻano pili: impl<'a, T: Trait<'a>> Wrapper<'a, T> { async fn mk_assoc() -> T::Assoc { /* … */ } fn a_few_assocs() -> impl Iterator { /* … */ } }
- 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:
- 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:
- ʻiʻo::mem::transmute_copy
- str::is_ascii
- [u8]::is_ascii
- core::num::Ke hoʻopiha nei
- impl Mai no std::process::Stdio
- impl Mai no std::process::Stdio
- impl Mai no std::process::Child{Stdin, Stdout, Stderr}
- impl Mai no std::process::Child{Stdin, Stdout, Stderr}
- std::ffi::OsString::from_encoded_bytes_unchecked
- std::ffi::OsString::into_encoded_bytes
- std::ffi::OsStr::from_encoded_bytes_unchecked
- std::ffi::OsStr::as_encoded_bytes
- std::io::Hewa::ʻē aʻe
- hoʻokomo HoʻāʻoMai no ka U16
- hoʻokomo Mai<&[T; N]> no Vec
- hoʻokomo Mai<&mut [T; N]> no Vec
- hoʻokomo Mai<[T; N]> no Arc<[T]>
- hoʻokomo Mai<[T; N]> no Rc<[T]>
- Ua hoʻonui ka mea hōʻuluʻulu, ka toolchain, ka waihona puke maʻamau, a me nā mea hoʻokō noi i hana ʻia i kā lākou mau koi no nā kahua Apple, e koi ana i nā mana ma ka liʻiliʻi loa macOS 10.12 Sierra, iOS 10, a me tvOS 10, i hoʻokuʻu ʻia i ka makahiki 2016.
- Ua hoʻokō ʻia ke kākoʻo Pae 3 no ka paepae i686-pc-windows-gnullvm. Hāʻawi ka Pae 3 i ke kākoʻo kumu, akā me ka ʻole o ka hoʻāʻo hana aunoa, nā hoʻokuʻu kūkulu kūhelu, a i ʻole ka hōʻoia kūkulu.
- Ua hoʻokō ʻia ka pae ʻelua o ke kākoʻo no ka paepae pahuhopu loongarch64-unknown-none. Hoʻokomo pū kēia pae ʻelua o ke kākoʻo i kahi hōʻoia kūkulu.
Eia kekahi, ʻelua mau hanana e pili ana i ka ʻōlelo Rust e pono ke hoʻomaopopo ʻia:
- Ua paʻi ka Open Source Technology Improvement Fund (OSTIF), i hana ʻia e hoʻoikaika i ka palekana o nā papahana open source, i nā hopena o kahi loiloi o ka papahana RustVMM, kahi e hāʻawi ai i nā ʻāpana no ka hana ʻana i nā hypervisors a me nā monitor kikoʻī. nā mīkini uila (VMM). Ke komo nei nā ʻoihana e like me Intel, Alibaba, Amazon, Google, Linaro, a me Red Hat i ka hoʻomohala ʻana o ka papahana. Ua hoʻomohala ʻia nā Intel Cloud Hypervisor a me Dragonball hypervisors ma RustVMM. Ua hōʻoia ka loiloi i ke kiʻekiʻe o ke codebase a me ka hoʻohana ʻana i nā ʻano hana hoʻonui palekana i ka hoʻolālā a me ka hoʻokō ʻana. Ua ʻike ka loiloi i ʻeono mau pilikia i ʻole e hoʻopilikia pololei i ka palekana.
- Ua hoʻolauna ʻo Google i kahi papa inoa leka uila no nā mea hoʻomohala kernel Linux ʻO kahi hoʻokō hou o ka ʻōnaehana kamaʻilio Binder interprocess, i kākau hou ʻia ma Rust. ʻO kēia hana hou ʻana he ʻāpana o kahi papahana e hoʻonui i ka palekana, hoʻolaha i nā hana papahana palekana, a hoʻomaikaʻi i ka pono o ka ʻike ʻana i nā pilikia hoʻomanaʻo i loko. Android (ma kahi o 70% o nā nāwaliwali weliweli āpau i ʻike ʻia ma Android, i hoʻokumu ʻia e nā hewa i ka lawelawe ʻana i ka hoʻomanaʻo). Ua hoʻokō ka hoʻokō ʻana o Binder ma Rust i ka like ʻana o ka hana me ka mana C mua a hala i nā hoʻokolohua AOSP āpau (Android Papahana Open-Source) a hiki ke hoʻohana ʻia e hana i nā mana firmware hana. ʻO ka hana o nā hoʻokō ʻelua ua like like ia (nā ʻokoʻa i loko o -1.96% a me +1.38%).
Source: opennet.ru
