Hoʻokuʻu ʻia ʻo Rust 1.73

Ua paʻi ʻia ka hoʻokuʻu ʻia ʻana o ka ʻōlelo hoʻolālā kumu nui ʻo Rust 1.73, 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ʻolālā hou ʻia ke ʻano o nā memo i hoʻopuka ʻia e ka mea hoʻokele ulia pōpilikia (panic). ʻO ka kikokikona i kuhikuhi ʻia ma ka macro "panic!" hōʻike ʻia i kēia manawa ma kahi laina ʻokoʻa me ka ʻole o nā kaha puʻupuʻu, e maʻalahi ka heluhelu ʻana a me ka hoʻopau ʻana i ka huikau ke loaʻa nā puʻupuʻu pūnana a i ʻole ka māhele ʻana i nā laina he nui. fn main() { let file = "ferris.txt"; panic!("ʻaʻole! {file:?} ʻaʻole i loaʻa!"); } Aia ke kaula 'main' weliweli i 'oh no! ʻAʻole i loaʻa ka "ferris.txt"!', src/main.rs:3:5 Ua hoʻoweliweli ʻia ke kaula 'main' ma src/main.rs:3:5: ʻaʻole! "ferris.txt" ʻaʻole i loaʻa!

    Ua hana hou ʻia ka hoʻopuka o nā memo i ka wā i hoʻomaka ʻia ai nā macros "assert_eq" a me "assert_ne". fn main() { assert_eq!("🦀", "🐟", "ʻaʻole iʻa ka ferris"); } Aia ka milo 'main' i hopohopo i ka 'assertion failed: `(hema == akau)` hema: `"🦀"`, akau: `"🐟"`: ferris is not a fish', src/main.rs: 2 : 5 ʻAʻole i haʻalele ʻo ferris: “🦀” ʻākau: “🐟”

  • E like me ka RFC 3184, ua hoʻohui ʻia ka hiki ke hoʻopololei pololei i ka thread-local (thread_local) LocalKey. > a me LocalKey > ma o ka hoʻohana 'ana i ka get(), set(), take() and replace() method, ma kahi o ka "me(|inner| ...)" pani pani, e hoopau ana i ka pono e hana hou i ka code initialization no ka nā waiwai paʻamau i kuhikuhi ʻia no nā pae hou ke hoʻohana nei i ka macro "thread_local!" thread_local! { static THINS: Cell > = Cell::new(Vec::new()); } fn f() { // was THINGS.with(|i| i.set(vec![32, 1, 2])); // became THINGS.set(vec![3, 1, 2]); // ... // ua let v = THINGS.with(|i| i.take()); // lilo i let v: Vec = NA MEA. lawe (); }
  • 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:
    • ʻAʻole pūlima ʻia {integer}::div_ceil
    • ʻAʻole pūlima ʻia {integer}::next_multiple_of
    • ʻAʻole pūlima ʻia {integer}::checked_next_multiple_of
    • std::ffi::FromBytesUntilNulError
    • std::os::unix::fs::chown
    • std::os::unix::fs::fchown
    • std::os::unix::fs::lfchown
    • LocalKey:: >::loaʻa
    • LocalKey:: >:: hoʻonohonoho
    • LocalKey:: >:: lawe
    • LocalKey:: >:: pani
    • LocalKey:: >::me_borrow
    • LocalKey:: >::me_borrow_mut
    • LocalKey:: >:: hoʻonohonoho
    • LocalKey:: >:: lawe
    • LocalKey:: >:: pani
  • 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:
    • rc::Nawaliwali::hou
    • sync::Nawaliwali::mea hou
    • NonNull::as_ref
  • Hāʻawi ka mea hōʻuluʻulu i ka hoʻopaʻa ʻana i ka ʻike mana ma ka ʻāpana ".comment", e like me GCC a me Clang.
  • Ua hoʻokō ʻia ke kolu o ke kākoʻo no nā paepae aarch64-unknown-teeos, csky-unknown-linux-gnuabiv2, riscv64-linux-android, riscv64gc-unknown-hermit, x86_64-unikraft-linux-musl a me x86_64-unknown-linux -ohos. ʻ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.
  • Ua hoʻokō ʻia ka pae ʻelua o ke kākoʻo no ka paepae i manaʻo ʻia ʻo wasm32-wasi-preview1-threads. ʻO ka pae ʻelua o ke kākoʻo e pili ana i kahi hōʻoia hui.

Source: opennet.ru

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