Hoʻokuʻu ʻia ka ʻōlelo papahana Rust 2021 (1.56)

Ua paʻi ʻia ka hoʻokuʻu ʻia ʻana o ka ʻōlelo hoʻonohonoho ʻōnaehana ʻo Rust 1.56, 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 ʻole ʻo Rust Foundation. Ma kahi o ka helu helu maʻamau, ua koho ʻia ka hoʻokuʻu ʻana iā Rust 2021 a hōʻailona i kahi hoʻomau o nā loli i manaʻo ʻia i nā makahiki ʻekolu i hala. E lilo ana ʻo Rust 2021 i kumu no ka hoʻonui ʻana i ka hana i nā makahiki ʻekolu e hiki mai ana, e like me ke ʻano o ka hoʻokuʻu ʻana o Rust 2018 i kumu no ka hoʻomohala ʻana i ka ʻōlelo i nā makahiki ʻekolu i hala.

No ka mālama pono ʻana, hiki i nā mea hoʻomohala ke hoʻohana i nā lepili "2015", "2018" a me "2021" i kā lākou papahana, e ʻae ana i nā papahana e hoʻopili ʻia i nā ʻāpana mokuʻāina ʻōlelo e pili ana i nā paʻi i koho ʻia o Rust. Hoʻokomo ʻia nā paʻi e hoʻokaʻawale i nā loli like ʻole a ua hoʻonohonoho ʻia i ka metadata o nā pūʻolo ukana ma o ke kahua "edition" ma ka ʻāpana "[package]". No ka laʻana, ʻo ka paʻi "2018" e pili ana i ka hana i hoʻopaʻa ʻia ma ka hopena o 2018 a uhi pū kekahi i nā hoʻololi hou aʻe i haki ʻole i ka hoʻohālikelike. Hoʻokomo pū ʻia ka paʻi 2021 i nā hiʻohiʻona interoperability-breaking i manaʻo ʻia i ka hoʻokuʻu ʻana 1.56 o kēia manawa a ʻae ʻia no ka hoʻokō ʻana i ka wā e hiki mai ana. Ma waho aʻe o ka ʻōlelo ponoʻī, noʻonoʻo nā mea hoʻoponopono i ke kūlana o nā mea hana a me nā palapala.

ʻO nā mea like ʻole nui i hoʻopaʻa ʻia ma Rust 2021:

  • Hoʻokaʻawale i nā Paʻa - Hiki i nā pani ke hopu i nā inoa kahua pākahi ma mua o ka mea hōʻike holoʻokoʻa. No ka laʻana, "|| ax + 1" e hopu wale i "ax" ma kahi o "a".
  • ʻO ke ʻano IntoIterator no nā ʻāpana: array.into_iter() hiki iā ʻoe ke hoʻololi i nā mea hoʻonohonoho ma nā waiwai, ma mua o nā kuhikuhi.
  • Ua hoʻololi ʻia ka hana ʻana o nā ʻōlelo "|" ma macro_rules (Boolean OR) i nā mamana - ʻO ka ":pat" kikoʻī i nā pāʻani i kēia manawa e mahalo i "A | B".
  • Hoʻokomo ʻia ka luna hoʻokele ukana ma ka maʻamau ka lua o ka hoʻonā hiʻohiʻona, kākoʻo i ʻike ʻia ma Rust 1.51.
  • Ua hoʻohui ʻia nā ʻano TryFrom, TryInto a me FromIterator i ka module waihona waihona maʻamau.
  • Ke hoʻohana mau nei nā macros i format_args!(..) e hoʻohālikelike i nā kaula, e like me println!().
  • Ua mālama ʻia nā huaʻōlelo ident#, ident»..." a me ident'...' ma ka syntax ʻōlelo.
  • Ua hoʻoneʻe ʻia nā ʻōlelo aʻo ʻana i nā hewa.

Mea hou ma Rust 1.56:

  • Ma Cargo.toml, ma ka ʻāpana "[package]", ua hoʻohui ʻia ke kahua rust-version, kahi e hiki ai iā ʻoe ke hoʻoholo i ka mana liʻiliʻi i kākoʻo ʻia o Rust no ka pahu pahu. Inā ʻaʻole kūlike ka mana o kēia manawa i ka ʻāpana i ʻōlelo ʻia, e hoʻōki ʻo Cargo i ka hana me kahi memo hewa.
  • Ke hoʻohālikelike ʻia ke kumu hoʻohana me ka hoʻohana ʻana i nā ʻōlelo "binding @ pattern", hāʻawi ʻia ke kākoʻo no ka wehewehe ʻana i nā mea hoʻopaʻa hou (e laʻa, "let matrix @ Matrix {row_len, .. } = get_matrix();").
  • 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:
    • std::os::unix::fs::chroot
    • AnofeCell::raw_get
    • BufWriter::into_parts
    • kumu::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • Vec::shrink_to
    • Kaha::shrink_to
    • OsString::shrink_to
    • PathBuf::shrink_to
    • BinaryHeap::shrink_to
    • VecDeque::shrink_to
    • HashMap::shrink_to
    • HashSet::shrink_to
  • Hoʻohana ʻia ka ʻano "const", ka mea e hoʻoholo ai i ka hiki ke hoʻohana i loko o kekahi pōʻaiapili ma kahi o nā mea mau, hoʻohana ʻia i nā hana.
    • std::mem::transmute
    • [T]::mua
    • [T]:: split_first
    • [T]:: hope
    • [T]::māhele_hope
  • Ua hoʻololi ʻia ka compiler e hoʻohana i ka mana LLVM 13.
  • Ua hoʻokō ʻia kahi pae ʻelua o ke kākoʻo no ka aarch64-apple-ios-sim platform a me ke kolu o ka pae no ka powerpc-unknown-freebsd a me riscv32imc-esp-espidf 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 ʻokoʻa, ka hoʻopuka ʻana i nā hale mana, a i ʻole ke nānā ʻana inā hiki ke kūkulu ʻia ke code.

E hoʻomanaʻo e pili ana ʻo Rust i ka palekana hoʻomanaʻo, hāʻawi i ka hoʻokele hoʻomanaʻo maʻalahi, a hāʻawi i kahi ala e hoʻokō ai i ka parallelism kiʻekiʻe i ka hoʻokō ʻana i ka hana me ka hoʻohana ʻole ʻana i ka ʻohi ʻōpala a i ʻole ka wā holo (ua hoʻemi ʻia ka manawa holo i ka hoʻomaka mua 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.

Source: opennet.ru

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