Ua paʻi ʻia ka hoʻokuʻu ʻia ʻana o ka ʻōlelo hoʻolālā kumu nui ʻo Rust 1.59, 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 hoʻohana i nā mea hoʻokomo ʻōlelo hui, i koi ʻia i nā noi e pono ai ke kāohi i ka hoʻokō ma kahi haʻahaʻa a i ʻole hiki ke hoʻohana i nā ʻōlelo kuhikuhi mīkini kūikawā. Hoʻohui ʻia nā mea hoʻohui hui me ka hoʻohana ʻana i nā macros "asm!" a me "global_asm!" me ka hoʻohana ʻana i ka syntax formatting string no ka hoʻopaʻa inoa ʻana e like me ka mea i hoʻohana ʻia no ka hoʻololi ʻana i ke kaula i Rust. Kākoʻo ka mea hōʻuluʻulu i nā ʻōlelo aʻoaʻo no ka x86, x86-64, ARM, AArch64 a me RISC-V architectures. Laʻana hoʻokomo: hoʻohana std::arch::asm; // E hoʻonui i ka x me ka 6 me ka hoʻololi a hoʻohui i ka let mut x: u64 = 4; palekana { asm!( "mov {tmp}, {x}", "shl {tmp}, 1", "shl {x}, 2", "hoʻohui {x}, {tmp}", x = inout(reg ) x, tmp = waho(reg) _, ); } assert_eq!(x, 4 * 6);
- Kākoʻo hoʻohui ʻia no nā hana i hoʻopau ʻia (parallel), kahi i kuhikuhi ʻia ai kekahi mau ʻano, nā ʻāpana a i ʻole nā hale ma ka ʻaoʻao hema o ka ʻōlelo. Eia kekahi laʻana: let (a, b, c, d, e); (a, b) = (1, 2); [c, .., d, _] = [1, 2, 3, 4, 5]; Hana { e, .. } = Hana { e: 5, f: 3 }; assert_eq!([1, 2, 1, 4, 5], [a, b, c, d, e]);
- Hiki ke kuhikuhi i nā waiwai paʻamau no const generics: struct ArrayStorage { arr: [T; N], } impl ArrayStorage { fn hou(a: T, b: T) -> ArrayStorage { ArrayStorage { arr: [a, b], } } }
- Hāʻawi ka luna pūʻolo Cargo i nā ʻōlelo aʻo e pili ana i ka hoʻohana ʻana i nā hale kūpono ʻole i nā hilinaʻi i hana ʻia ma muli o nā hewa i ka mea hoʻopili (no ka laʻana, ma muli o kahi hewa, ua ʻae ʻia nā māla o nā hale i hoʻopaʻa ʻia e hōʻaiʻē i nā poloka palekana). ʻAʻole kākoʻo hou ʻia ia mau hana i kahi mana o Rust e hiki mai ana.
- Loaʻa i ka Cargo a me ka rustc kahi mana i kūkulu ʻia e hana i nā faila hiki ke hoʻopau ʻia i ka ʻikepili debugging (strip = "debuginfo") a me nā hōʻailona (strip = "hōʻailona"), me ka ʻole o ka pono e kāhea i kahi pono ʻokoʻa. Hoʻokō ʻia ka hoʻonohonoho hoʻomaʻemaʻe ma o ka ʻāpana "strip" ma Cargo.toml: [profile.release] strip = "debuginfo", "hōʻailona"
- Hoʻopau ʻia ka hōʻuluʻulu hoʻonui ʻia e ka paʻamau. ʻO ke kumu i ʻōlelo ʻia he workaround pōkole no kahi bug i ka compiler e alakaʻi ana i nā ulia a me nā hewa deserialization. Ua hoʻomākaukau mua ʻia kahi hoʻoponopono bug a e hoʻokomo ʻia i loko o ka hoʻokuʻu aʻe. No ka hoʻihoʻi ʻana i ka hōʻuluʻulu hoʻohui, hiki iā ʻoe ke hoʻohana i ka ʻano hoʻololi kaiapuni RUSTC_FORCE_INCREMENTAL=1.
- 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::thread::available_parallelism
- Ka hopena::kope
- Ka hopena:: cloned
- arch::asm!
- arch::global_asm!
- ops::ControlFlow::is_break
- ops::ControlFlow::is_continue
- E hoao mai no u8
- char::TryFromCharError (Clone, Debug, Display, PartialEq, Copy, Eq, Hapa)
- iter::zip
- NonZeroU8::ʻo ia ka_mana_o_ʻelua
- NonZeroU16::ʻo ia ka_mana_o_ʻelua
- NonZeroU32::ʻo ia ka_mana_o_ʻelua
- NonZeroU64::ʻo ia ka_mana_o_ʻelua
- NonZeroU128::ʻo ia ka_mana_o_ʻelua
- DoubleEndedIterator no ka hoʻolālā ToLowercase
- DoubleEndedIterator no ka hoʻolālā ToUppercase
- E hoao mai no [T; N]
- UnwindSafe no ka hana Once
- RefUnwindSafe no hoʻokahi manawa
- armv8 neon kākoʻo hana i kūkulu ʻia i loko o ka compiler no aarch64
- 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:
- mem::Uninit paha::as_ptr
- mem::Uninit paha::assume_init
- mem::Uninit paha:: assume_init_ref
- ffi::CStr::from_bytes_with_nul_unchecked
Source: opennet.ru