Hoʻokuʻu ʻia ʻo Rust 1.61

Ua paʻi ʻia ka hoʻokuʻu ʻia ʻana o ka ʻōlelo hoʻolālā kumu nui ʻo Rust 1.61, 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:

  • Hiki ke wehewehe i kāu mau code hoʻihoʻi mai ka hana nui. Ma mua, hiki i ka hana nui a Rust ke hoʻihoʻi i ke ʻano "()" (unit), i hōʻike mau i ke kūlana puka kūleʻa ke ʻole i kapa ʻia ka mea hoʻomohala i ka hana "process::exit(code)". Ma Rust 1.26, me ka hoʻohana ʻana i ka ʻano hoʻopau paʻa ʻole i ka hana nui, hiki ke hoʻihoʻi i nā waiwai "Ok" a me "Err", e pili ana i nā code EXIT_SUCCESS a me EXIT_FAILURE i nā polokalamu C. Ma Rust 1.61, ua hoʻopaʻa ʻia ka ʻano hoʻopau, a ua manaʻo ʻia kahi ʻano ExitCode ʻokoʻa e hōʻike i kahi code hoʻihoʻi kikoʻī, kahi e unuhi ai i nā ʻano hoʻihoʻi kikoʻī o ka paepae ma o ka hāʻawi ʻana i nā mea mau i koho mua ʻia SUCCESS a FAILURE, a me ke ala Mai. e hoʻihoʻi i ke code hoʻihoʻi maʻamau. hoʻohana std :: process :: ExitCode; fn main() -> ExitCode { ina !check_foo() { hoihoi ExitCode::mai(8); } Code Exit::SUCCESS }
  • Ua hoʻopaʻa ʻia nā mana hou o nā hana i wehewehe ʻia me ka huaʻōlelo "const fn", hiki ke kapa ʻia ʻaʻole he mau hana maʻamau wale nō, akā hoʻohana pū ʻia i loko o kekahi ʻano ma kahi o nā mea mau. Hoʻopili ʻia kēia mau hana i ka manawa hōʻuluʻulu a ʻaʻole i ka wā holo, no laila ke kau nei lākou i kekahi mau palena, e like me ka hiki ke heluhelu wale mai nā mea mau. Ma ka mana hou, ua ʻae ʻia nā hana maʻamau me nā kuhikuhi hana i loko o nā hana const (ʻae ʻia ka hana ʻana, ka hele ʻana a me ka hoʻolei ʻana i nā kuhikuhi, akā ʻaʻole e kāhea i kahi hana ma ke kuhikuhi); nā palena ʻano no nā ʻāpana maʻamau o nā hana const e like me T: Copy; nā hiʻohiʻona hiki ke hoʻouna ʻia (dyn Trait); impl Nā ʻano ʻano no nā hoʻopaʻapaʻa hana a me nā waiwai hoʻihoʻi.
  • Hoʻohana ke kahawai iā Stdin, Stdout a me Stderr i std::io i kēia manawa he ola paʻa ("'static") ke laka ʻia, e ʻae ana i nā hana e like me "let out = std::io::stdout().lock();" me ka loaʻa ʻana o kahi paʻa a me ka hoʻonohonoho ʻana i kahi laka ma kahi ʻōlelo hoʻokahi.
  • 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:
    • Pin::static_mut
    • Pin::static_ref
    • Vec::retain_mut
    • VecDeque::retain_mut
    • Kākau no Cursor<[u8; N]>
    • std::os::unix::net::SocketAddr::mai_pathname
    • std::kaʻina::ExitCode
    • std::kaʻina::Hoʻopau
    • std::thread::JoinHandle:: is_finished
  • 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:
    • <*const T>::offset a me <*mut T>::offset
    • <*const T>::wrapping_offset a <*mut T>::wrapping_offset
    • <*const T>::add a <*mut T>::add
    • <*const T>::sub a me <*mut T>::sub
    • <*const T>::wrapping_add a <*mut T>::wrapping_add
    • <*const T>::wrapping_sub a me <*mut T>::wrapping_sub
    • <[T]>::as_mut_ptr
    • <[T]>::as_ptr_range
    • <[T]>::as_mut_ptr_range

Eia hou, hiki iā ʻoe ke hoʻomaopopo i ka ʻatikala "Rust: A Critical Retrospective" me kahi hōʻuluʻulu o nā manaʻo o ka ʻōlelo Rust ma hope o ke kākau ʻana i nā laina 100 tausani o ke code i loko o ka hoʻomohala ʻana o ka ʻōnaehana microkernel Xous i hoʻohana ʻia ma firmware. ʻO nā hemahema e pili ana i ka syntax paʻakikī, ʻaʻole piha a hoʻomau i ka hoʻomohala ʻana i ka ʻōlelo, ka nele o ka hana hou ʻana, nā pilikia maʻamau me ka hilinaʻi hilinaʻi iā Crates.io, a me ka pono e mālama i kekahi aʻo e kākau i ka code paʻa. ʻO nā hiʻohiʻona i ʻoi aku ma mua o nā mea i manaʻo ʻia he mau mea hana no ka refactoring code a me ka hana hou ʻana i nā "hacks" i hoʻohui ʻia i ka wā prototyping wikiwiki.

Source: opennet.ru

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