Ukukhutshwa kolwimi lwenkqubo ye-Rust 1.66, eyasekwa yiprojekthi ye-Mozilla, kodwa ngoku iphuhliswe phantsi kombutho ozimeleyo ongenzi nzuzo i-Rust Foundation, ipapashiwe. Ulwimi lugxininise ekukhuselweni kwememori kwaye lubonelela ngeendlela zokufikelela kwi-parallelism ephezulu yemisebenzi ngelixa ugwema ukusetyenziswa komqokeleli wenkunkuma kunye nexesha lokuqhuba (ixesha lokuqhuba liyancitshiswa ekuqaliseni okusisiseko kunye nokugcinwa kwelayibrari esemgangathweni).
Iindlela zokuphatha imemori ye-Rust zigcina umphuhlisi kwiimpazamo xa ulawula izikhombisi kwaye ukhusele kwiingxaki ezivela ngenxa yokuphathwa kwememori ekwinqanaba elisezantsi, njengokufikelela kwindawo yememori emva kokuba ikhululiwe, ukususa ireferensi yezalathisi ezingenanto, ukugqithiswa kwe-buffer, njl. Ukusasaza amathala eencwadi, ukubonelela ngokwakha kunye nokulawula ukuxhomekeka, iprojekthi iphuhlisa umphathi wephakheji yeCargo. Uvimba we-crates.io uyaxhaswa kukusingatha amathala eencwadi.
Ukhuseleko lwenkumbulo lubonelelwa kwiRust ngexesha lokudibanisa ngokujongwa kwereferensi, ukugcina umkhondo wobunini bento, ukugcina umkhondo wobomi bento (i-scopes), kunye nokuvavanya ukuchaneka kokufikelela kwimemori ngexesha lokwenziwa kwekhowudi. Umhlwa ukwabonelela ngokhuseleko ngokuchasene nokuphuphuma kwenani elipheleleyo, kufuna ukuqaliswa okunyanzelekileyo kwamaxabiso aguquguqukayo ngaphambi kokusetyenziswa, iphatha iimpazamo ngcono kwithala leencwadi elisemgangathweni, isebenzisa ingqikelelo yeembekiselo ezingenakuguquguquka kunye nezinto eziguquguqukayo ngokungagqibekanga, ibonelela ngochwethezo olomeleleyo ukuze kuncitshiswe iimpazamo ezinengqiqo.
Iinguqulelo eziphambili:
- Π ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡΡ c ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΌΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌΠΈ (Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ Β«#[repr(Int)]Β») ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΡΠ²Π½ΠΎΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π΄ΠΈΡΠΊΡΠΈΠΌΠΈΠ½Π°Π½ΡΠ° (Π½ΠΎΠΌΠ΅ΡΠ° Π²Π°ΡΠΈΠ°Π½ΡΠ° Π² ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠΈ), Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠΎΠ»Ρ. #[repr(u8)] enum Foo { A(u8), # Π΄ΠΈΡΠΊΡΠΈΠΌΠΈΠ½Π°Π½Ρ 0 B(i8), # Π΄ΠΈΡΠΊΡΠΈΠΌΠΈΠ½Π°Π½Ρ 1 C(bool) = 42, # Π΄ΠΈΡΠΊΡΠΈΠΌΠΈΠ½Π°Π½Ρ 42 }
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΡΠ½ΠΊΡΠΈΡ core::hint::black_box, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΎΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½Π°Π·Π°Π΄ ΠΏΡΠΈΠ½ΡΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΡΠΈΡΠ°Π΅Ρ, ΡΡΠΎ Π΄Π°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΡΡΠ½ΠΊΡΠΈΡ black_box ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ ΡΠΈΠΊΠ»ΠΎΠ² ΠΏΡΠΈ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΏΡΠΈ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° (ΡΡΠΎΠ±Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π½Π΅ ΠΏΠΎΡΡΠΈΡΠ°Π» ΠΊΠΎΠ΄ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌ ΠΈ Π½Π΅ ΡΠ±ΡΠ°Π» Π΅Π³ΠΎ). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½ΠΈΠΆΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ black_box(v.as_ptr()) Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΡΡΠΈΡΠ°ΡΡ, ΡΡΠΎ Π²Π΅ΠΊΡΠΎΡ v Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ. use std::hint::black_box; fn push_cap(v: &mut Vec) { for i in 0..4 { v.push(i); black_box(v.as_ptr()); } }
- Π ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ΅ Β«cargoΒ» ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Β«removeΒ», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΡΠ΄Π°Π»ΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈΠ· ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ° Cargo.toml.
- Inxalenye entsha ye-API iye yasiwa kudidi oluzinzileyo, kubandakanywa iindlela kunye nokuphunyezwa kweempawu ziye zazinziswa:
- 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::{first, last, pop_first, pop_last}
- BTreeMap::{first_key_value, last_key_value, first_entry, last_entry, pop_first, pop_last}
- Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Add AsFd Π΄Π»Ρ ΡΠΈΠΏΠΎΠ² Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ stdio ΠΏΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ WASI.
- impl TryFrom<Vec<T>> Π΄Π»Ρ Box<[T; N]>
- core::hint::black_box
- Duration::try_from_secs_{f32,f64}
- Option::unzip
- std::os::fd
- Π ΡΠ°Π±Π»ΠΎΠ½Π°Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² Β«..XΒ» ΠΈ Β«..=XΒ».
- ΠΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ ΡΡΠΎΠ½ΡΡΠ½Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° rustc ΠΈ Π±ΡΠΊΠ΅Π½Π΄Π° LLVM Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½Ρ ΡΠ΅ΠΆΠΈΠΌΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ LTO (Link Time Optimization) ΠΈ BOLT (Binary Optimization and Layout Tool), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ ΡΠ½ΠΈΠ·ΠΈΡΡ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ.
- Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΡΡΠ΅ΡΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌ armv5te-none-eabi ΠΈ thumbv5te-none-eabi. Π’ΡΠ΅ΡΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ Π±Π°Π·ΠΎΠ²ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ, Π½ΠΎ Π±Π΅Π· Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠ±ΠΎΡΠΎΠΊ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ±ΠΎΡΠΊΠΈ ΠΊΠΎΠ΄Π°.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ Ρ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ macOS.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ΄ΠΎΠ²ΡΡ Π±Π°Π·Ρ GCC ΡΡΠΎΠ½ΡΡΠ½Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΡΠ·ΡΠΊΠ° Rust (gccrs). Π€ΡΠΎΠ½ΡΡΠ½Π΄ Π²ΠΊΠ»ΡΡΡΠ½ Π² Π²Π΅ΡΠΊΡ GCC 13, ΡΠ΅Π»ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΡΡΠΎΠΈΡΡΡ Π² ΠΌΠ°Π΅ 2023 Π³ΠΎΠ΄Π°. ΠΠ°ΡΠΈΠ½Π°Ρ Ρ GCC 13 ΡΡΠ°ΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ GCC ΡΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ Rust Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° rustc, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π°ΡΠ°Π±ΠΎΡΠΎΠΊ LLVM. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Rust Π² GCC 13 Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΡΠ°ΡΡΡ Π±Π΅ΡΠ°-Π²Π΅ΡΡΠΈΠΈ, Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌΠΎΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
umthombo: opennet.ru