Hoʻokuʻu ʻia ʻo Rust 1.66

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

  • Ma ka helu ʻana me nā hōʻike helu helu (ka ʻano "#[repr(Int)]"), ʻae ʻia ka hōʻike kikoʻī o ka mea hoʻokae (ka helu o ke koho i ka helu helu), ʻoiai inā loaʻa i ka helu ʻana nā kahua. #[repr(u8)] enum Foo { A(u8), # hoʻokae 0 B(i8), # hoʻokae 1 C(bool) = 42, # hoʻokae 42 }
  • Hoʻohui ʻia ke kumu::hint::black_box hana, e hoʻihoʻi wale i ka waiwai i loaʻa. Ma muli o ka manaʻo o ka mea hōʻuluʻulu he hana i hāʻawi ʻia i kahi mea kikoʻī, hiki ke hoʻohana ʻia ka hana black_box no ka hoʻopau ʻana i ka loiloi o ka mea hoʻopili i nā puka lou i ka wā e hana ana i ka hoʻāʻo hoʻokō code a i ʻole ke nānā ʻana i ke code mīkini i hana ʻia (i manaʻo ʻole ka mea hoʻopili i ke code hiki ʻole ke hoʻohana a wehe. ia). No ka laʻana, ma ka laʻana ma lalo nei, ʻo ka wehewehe ʻana i ka black_box(v.as_ptr()) e pale i ka mea hoʻopili mai ka manaʻo ʻaʻole hoʻohana ʻia ka vector v. hoʻohana std::hint::black_box; fn push_cap(v: &mut Vec) { no i i 0..4 { v.push(i); black_box(v.as_ptr()); } }
  • Hāʻawi ka luna pūʻolo "cargo" i ke kauoha "remove", e hiki ai iā ʻoe ke wehe i nā hilinaʻi mai ka Cargo.toml hōʻike mai ka laina kauoha.
  • 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:
    • proc_macro::Span::source_text
    • u*::{checked_add_signed, overflowing_add_signed, saturating_add_signed, wrapping_add_signed}
    • i*::{checked_add_unsigned, overflowing_add_unsigned, saturating_add_unsigned, wrapping_add_unsigned}
    • i*::{checked_sub_unsigned, overflowing_sub_unsigned, saturating_sub_unsigned, wrapping_sub_unsigned}
    • BtreeSet::{mua, hope, pop_first, pop_last}
    • BTreeMap::{waiwai_ki_mua, waiwai_ki_hope, komo_mua, komo_hope, kumu_mua, kumu_kumu}
    • Hoʻohui i nā hoʻokō AsFd no nā ʻano laka stdio i ka wā e hoʻohana ai iā WASI.
    • impl TryFrom > no ka pahu<[T; N]>
    • kumu::hint::black_box
    • Ka lōʻihi::hoʻo_mai_kekona_{f32,f64}
    • Koho:: wehe
    • std::os::fd
  • Ua ʻae ʻia ka hoʻohana ʻana i nā pae "..X" a me "..=X" i nā mamana.
  • I ka hui ʻana i ka mua o ka rustc compiler a me ka hope o LLVM, hoʻohana ʻia nā mode optimization LTO (Link Time Optimization) a me BOLT (Binary Optimization and Layout Tool), e ʻae ai i ka hoʻonui ʻana i ka hana o ke code hopena a hoʻemi i ka hoʻohana ʻana i ka hoʻomanaʻo.
  • Ua hoʻokō ʻia ke kolu o ke kākoʻo no nā kahua armv5te-none-eabi a me thumbv5te-none-eabi. ʻ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.
  • Hoʻohui ʻia ke kākoʻo no ka hoʻopili ʻana me nā hale waihona puke macOS universal.

Eia hou, hiki iā mākou ke hoʻomaopopo i ka hoʻokomo ʻia ʻana o ka ʻaoʻao mua o ka mea hōʻuluʻulu ʻōlelo Rust (gccrs) i ka waihona code GCC. Hoʻokomo ʻia ka frontend i ka lālā GCC 13, e hoʻokuʻu ʻia i Mei 2023. E hoʻomaka ana me GCC 13, hiki ke hoʻohana ʻia nā mea hana GCC maoli no ka hoʻopili ʻana i nā papahana ma ka ʻōlelo Rust me ka ʻole o ka pono e hoʻokomo i ka rustc compiler, i kūkulu ʻia me nā hoʻomohala LLVM. ʻO ka hoʻokō GCC 13 o Rust he mana beta, ʻaʻole hiki ke hoʻohana ʻia e ka paʻamau.

Source: opennet.ru

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