áááááááá áááááá ááááášáá£ááááá¡ áá ááá áááá áááá¡ ááá Rust 1.77, á ááááá᪠áááá á¡áá Mozilla-á¡ áá ááá¥á¢áá¡ áááá , áááá áá áá®áá ášááá¥ááá ááááá£áááááááá áá áááááá áªáá£áá áá áááááááªááá¡ Rust Foundation-áá¡ áááááá. ááá á§á£á áááŠáááá¡ áááá®áááááá¡ ááá®á¡ááá áááá¡ á£á¡áá€á áá®áááááá áá á£áá á£ááááá§áá€á¡ á¡áášá£ááááááá¡ á¡ááá£ášááá¡ áááŠááá ááá ááááá£á áááá¡ ááá¡ááŠá¬áááá, áááááá¡ ášáááá ááááááá¡á áá áá£ášááááá¡ áá ááá¡ ááááááá ááªáááááá¡áá¡ (ááášááááá¡ áá á ááªáá áááá á¡á¢ááááá á¢á£áá ááááááááááá¡ á«áá áááá ááááªáááááááªááááá áá ášáááá á©á£ááááááá).
Rust-áá¡ ááá®á¡ááá áááá¡ áááá£ášáááááá¡ áááááááá ááªááá¡ ááááááááá á¡ ášááªááááááá¡ááá ááá©áááááááááá¡ áááááá£ááá áááá¡áá¡ áá ááªááá¡ áá ááááááááá¡ááá, á áááááá᪠á¬áá áááá¥ááááá áááááá ááááá¡ ááá®á¡ááá áááá¡ áááá£ášáááááá¡ áááá, á áááá ááªáá ááá®á¡ááá áááá¡ áá ááá á¬ááááá ááá¡á ááááááá¡á£á€ááááá¡ ášááááá, áá£á ááááá¢áá áááá¡ ááá£á¥áááá, áá£á€áá áá¡ ááááááá áááá áá á.áš. ááááááááááááá¡ ááá¡ááá áªááááááá, áááá¡á¢á á£á¥áªááááá¡ á£áá á£ááááá¡áá§áá€áá áá áááááááááá£ááááááá¡ á¡áááá ááááá, áá ááá¥á¢á ášáááá£ášááááá¡ Cargo ááááá¢áá¡ ááááá¯áá á¡. crates.io á¡ááªááá áá®áá ááááá áááá ááááááááááááá¡ á°áá¡á¢ááááá¡áááá¡.
ááá®á¡ááá áááá¡ á£á¡áá€á áá®áááá á£áá á£ááááá§áá€áááá Rust-ášá ááááááááªááá¡ áá áá¡, ááááááááá¡ ášáááá¬ááááá¡, ááááá¥á¢áá¡ á¡ááá£áá áááá¡ ááááá§á£á áá¡ áááááááá¡, ááááá¥á¢áááá¡ á¡ááªááªá®ááá¡ á®áááá á«ááááááá¡ (á€áá áááááá¡) ááááá§á£á áá¡ áááááááá¡ áááá áá ááááá¡ ášáá¡á á£ááááá¡ áá áá¡ ááá®á¡ááá áááá¡ á¬áááááá¡ á¡áá¡á¬áá áá¡ ášáá€áá¡áááá. Rust áá¡ááá á£áá á£ááááá§áá€á¡ áááªááá¡ ááááá á ááªá®ááááá¡ ááááááááááá¡ááá, ááááá®ááá¡ áªáááááá¡ áááášáááááááááá¡ á¡áááááááá£áá ááááªáááááááªááá¡ ááááá§áááááááá, á£ááá ááá£ášááááá¡ ášááªáááááá¡ á¡á¢ááááá á¢á£á ááááááááááášá, áá§ááááá¡ á£áªááááá ááááááááááá¡á áá áªáááááááá¡ ááááªáá€áªááá¡ áááá£ááá¡á®ááááá, ááááááááá á«áááá á¡á¢áá¢ááá£á ááá áá€áá¡ áááááá£á á ášááªááááááá¡ ášáá¡áááªáá ááááá.
á«áá ááááá ááááááªáááá:
- ÐПбавлеМа пПЎЎеÑжка лОÑеÑалПв ÐŽÐ»Ñ Ð¡Ðž-ÑÑÑПк (c»ÑекÑÑ»), кПÑПÑÑе Ñ ÑаМÑÑÑÑ Ð² паЌÑÑО Ñ Ð·Ð°Ð²ÐµÑÑаÑÑОЌ ÐœÑлевÑÐŒ ÑОЌвПлПЌ О аÑÑПÑООÑÐŸÐ²Ð°ÐœÑ Ñ ÑОпПЌ «CStr». ÐÑеЎпПлагаеÑÑÑ, ÑÑП пПЎЎеÑжка СО-ÑÑÑПк ÑпÑПÑÑÐžÑ ÐœÐ°Ð¿ÐžÑаМОе кПЎа, взаОЌПЎейÑÑвÑÑÑегП Ñ Ð¿ÑПÑлПйкаЌО Ма ÑзÑÐºÐ°Ñ Ð¿ÑПгÑаЌЌОÑПваМОÑ, в кПÑПÑÑÑ Ð¿ÑОЌеМÑÑÑÑÑ Ð·Ð°Ð²ÐµÑÑаеЌÑе ÐœÑлевÑÐŒ байÑПЌ ÑÑÑПкО, О Ð¿ÐŸÐ·Ð²ÐŸÐ»ÐžÑ Ð²ÑпПлМÑÑÑ ÐœÐµÐŸÐ±Ñ ÐŸÐŽÐžÐŒÑе пÑПвеÑкО Ма ÑÑаЎОО кПЌпОлÑÑОО. const HELLO: &core::ffi::CStr = c»Hello, world!»;
- РаÑÐžÐœÑ ÑПММП вÑпПлМÑеЌÑÑ ÑÑМкÑОÑÑ , ПбÑÑвлеММÑÑ Ð¿ÑО пПЌПÑО вÑÑÐ°Ð¶ÐµÐœÐžÑ Â«async fn», ÑазÑеÑеМП ОÑпПлÑзПваМОе ÑекÑÑÑОО, Ñ.е. пПЎПбМÑе ÑÑМкÑОО ÑепеÑÑ ÐŒÐŸÐ³ÑÑ Ð²ÑзÑваÑÑ ÑаЌО ÑебÑ. async fn fib(n: u32) -> u32 { match n { 0 | 1 => 1, _ => Box::pin(fib(n-1)).await + Box::pin(fib(n-2)).await } }
- СÑабОлОзОÑПваМ ЌакÑÐŸÑ offset_of!, пПзвПлÑÑÑОй ПпÑеЎелОÑÑ Ð±Ð°Ð¹ÑПвПе ÑЌеÑеМОе пПлей ÑÑÑÑкÑÑÑ, пеÑеÑОÑлеМОй, ПбÑеЎОМеМОй О кПÑÑежей, ПÑМПÑОÑелÑМП МаÑала ÑОпа. Ðа пÑакÑОке ЌакÑÐŸÑ ÐŒÐŸÐ¶ÐµÑ Ð±ÑÑÑ Ð¿ÐŸÐ»ÐµÐ·ÐµÐœ в ÑОÑÑаÑОÑÑ , кПгЎа ÑÑебÑеÑÑÑ ÑабПÑа Ма ÑÑПвМе ÑЌеÑÐµÐœÐžÑ Ð¿ÐŸÐ»ÐµÐ¹ пÑО ПÑÑÑÑÑÑвОО ÑкзеЌплÑÑа ÑОпа. Ð ÑаÑÑМПÑÑО, ÑÑМкÑОПМалÑМПÑÑÑ offset_of ÐœÐµÐŸÐ±Ñ ÐŸÐŽÐžÐŒÐ° пÑО ÑазÑабПÑке МОзкПÑÑПвМевÑÑ ÐºÐŸÐŒÐ¿ÐŸÐœÐµÐœÑПв, ÑÐ°ÐºÐžÑ ÐºÐ°Ðº ÐŽÑайвеÑÑ. use std::mem; #[repr(C)] struct FieldStruct { first: u8, second: u16, third: u8 } assert_eq!(mem::offset_of!(FieldStruct, first), 0); assert_eq!(mem::offset_of!(FieldStruct, second), 2); assert_eq!(mem::offset_of!(FieldStruct, third), 4);
- РпакеÑМПЌ ЌеМеЎжеÑе Cargo в пÑПÑОлÑÑ ÑелОзПв пП ÑЌПлÑÐ°ÐœÐžÑ Ð²ÐºÐ»ÑÑеМа ПÑОÑÑка ÑайлПв ÐŸÑ ÐŸÑлаЎПÑÐœÑÑ ÐŽÐ°ÐœÐœÑÑ (strip = «debuginfo»), еÑлО в пÑПÑОле Cargo ÑвМП Ме вклÑÑÑÐœ ÑежОЌ ПÑлаЎкО, Ñ.е. еÑлО паÑаЌеÑÑ debug = 0.
- ÐклÑÑеМа пП ÑЌПлÑÐ°ÐœÐžÑ ÐŸÐ¿ÑÐžÑ Â«-Zthir-unsafeck=on», ПбеÑпеÑОваÑÑÐ°Ñ Ð¿ÑПвеÑÐºÑ unsafe ÐŽÐ»Ñ Ð¿ÑПЌежÑÑПÑМПгП пÑеЎÑÑÐ°Ð²Ð»ÐµÐœÐžÑ THIR («Typed High-Level Intermediate Representation»).
- ÐПбавлеМа lint-пÑПвеÑка static_mut_refs ÐŽÐ»Ñ Ð²ÑвПЎа пÑеЎÑпÑÐµÐ¶ÐŽÐµÐœÐžÑ Ð¿ÑО ОÑпПлÑзПваМОО ÑÑÑлПк Ма ОзЌеМÑеЌÑе ÑÑаÑОÑеÑкОе зМаÑеМОÑ.
- РеалОзПваМа вПзЌПжМПÑÑÑ Ð¿ÑÐžÐŒÐµÐœÐµÐœÐžÑ ÑОпажа «From<&[T; N]>» ÐŽÐ»Ñ ÑОпа «Cow<[T]>». fn foo(data: impl Into<Cow<âstatic, [&âstatic str]>>) { /* ⊠*/ } fn main() { foo(&[«hello», «world»]); }
- РкПЌпОлÑÑПÑе ПбеÑпеÑеМП вÑÑавМОваМОе 16-байÑПвÑÑ ÑОпПв i128 О u128 ÐŽÐ»Ñ ÑОÑÑеЌ x86.
- API-á¡ áá®ááá ááá¬ááá áááááááá á¡á¢ááááá£á áááá¡ ááá¢áááá ááášá, ááá ášáá áá¡, á¡á¢áááááááá ááá£ááá áááá¡áááááá¡ áááááááá áá áááá®áá áªáááááááá:
- array::each_ref
- array::each_mut
- core::net
- f32::round_ties_even
- f64::round_ties_even
- mem::offset_of!
- slice::first_chunk
- slice::first_chunk_mut
- slice::split_first_chunk
- slice::split_first_chunk_mut
- slice::last_chunk
- slice::last_chunk_mut
- slice::split_last_chunk
- slice::split_last_chunk_mut
- slice::chunk_by
- slice::chunk_by_mut
- Bound::map
- File::create_new
- Mutex::clear_poison
- RwLock::clear_poison
- РеалОзПваМ ÑÑеÑОй ÑÑÐŸÐ²ÐµÐœÑ Ð¿ÐŸÐŽÐŽÐµÑжкО ÐŽÐ»Ñ Ð¿Ð»Ð°ÑÑПÑÐŒ aarch64-unknown-illumos, hexagon-unknown-none-elf, riscv32imafc-esp-espidf О riscv32im-risc0-zkvm-elf. ТÑеÑОй ÑÑÐŸÐ²ÐµÐœÑ Ð¿ÐŸÐŽÑазÑÐŒÐµÐ²Ð°ÐµÑ Ð±Ð°Ð·ÐŸÐ²ÑÑ Ð¿ÐŸÐŽÐŽÐµÑжкÑ, МП без авÑПЌаÑОзОÑПваММПгП ÑеÑÑОÑПваМОÑ, пÑблОкаÑОО ПÑОÑОалÑÐœÑÑ ÑбПÑПк О пÑПвеÑкО вПзЌПжМПÑÑО ÑбПÑкО кПЎа.
á¬á§áá á: opennet.ru