Ukukhutshwa kolwimi lwenkqubo ye-Rust 1.61, 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:
- ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΊΠΎΠ΄ΠΎΠ² Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ main. ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΡΡΠ½ΠΊΡΠΈΡ main Π² Rust ΠΌΠΎΠ³Π»Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΏ Β«()Β» (unit), ΡΡΠΎ Π²ΡΠ΅Π³Π΄Π° ΡΠΊΠ°Π·ΡΠ²Π°Π»ΠΎ Π½Π° ΡΡΠΏΠ΅ΡΠ½ΡΠΉ ΡΡΠ°ΡΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΌ ΡΠ²Π½ΠΎ Π½Π΅ Π²ΡΠ·Π²Π°Π½Π° ΡΡΠ½ΠΊΡΠΈΡ Β«process::exit(code)Β». Π Rust 1.26 ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π½Π΅ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°ΠΆΠ° Termination Π² ΡΡΠ½ΠΊΡΠΈΠΈ main Π±ΡΠ»Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Β«OkΒ» ΠΈ Β«ErrΒ», ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΊΠΎΠ΄Π°ΠΌ EXIT_SUCCESS ΠΈ EXIT_FAILURE Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ. Π Rust 1.61 ΡΠΈΠΏΠ°ΠΆ Termination ΠΏΠ΅ΡΠ΅Π²Π΅Π΄ΡΠ½ Π² ΡΠ°Π·ΡΡΠ΄ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ , Π° Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠΈΠΏ ExitCode, ΠΊΠΎΡΠΎΡΡΠΉ Π°Π±ΡΡΡΠ°Π³ΠΈΡΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΡΠΈΠΏΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡ ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ SUCCESS ΠΈ FAILURE, ΡΠ°ΠΊ ΠΈ ΠΌΠ΅ΡΠΎΠ΄ From<u8> Π΄Π»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°. use std::process::ExitCode; fn main() -> ExitCode { if !check_foo() { return ExitCode::from(42); } ExitCode::SUCCESS }
- Π‘ΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Β«const fnΒ», ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½ΠΎ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² Π»ΡΠ±ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ. ΠΠ°Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, Π° Π½Π΅ Π² Ρ ΠΎΠ΄Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π° Π½ΠΈΡ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· ΠΊΠΎΠ½ΡΡΠ°Π½Ρ. Π Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π²Π½ΡΡΡΠΈ const-ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Ρ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ (ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅, ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ, Π½ΠΎ Π½Π΅ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ); ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠ°ΠΆΠ΅ΠΉ (trait bounds) Π΄Π»Ρ ΠΎΠ±ΠΎΠ±ΡΡΠ½Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² const-ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ T: Copy; Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΈΠ·ΠΈΡΡΠ΅ΠΌΡΠ΅ ΡΠΈΠΏΠ°ΠΆΠΈ (dyn Trait); ΡΠΈΠΏΡ impl Trait Π΄Π»Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
- ΠΠ΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Stdin, Stdout ΠΈ Stderr Π² std::io ΡΠ΅ΠΏΠ΅ΡΡ ΠΈΠΌΠ΅ΡΡ cΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΆΠΈΠ·Π½ΠΈ (Β«βstaticΒ») ΠΏΡΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ΅, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π²ΠΈΠ΄Π° Β«let out = std::io::stdout().lock();Β» Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° ΠΈ Π²ΡΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ.
- Inxalenye entsha ye-API iye yasiwa kudidi oluzinzileyo, kubandakanywa iindlela kunye nokuphunyezwa kweempawu ziye zazinziswa:
- Pin::static_mut
- Pin::static_ref
- Vec::retain_mut
- VecDeque::retain_mut
- Write Π΄Π»Ρ Cursor<[u8; N]>
- std::os::unix::net::SocketAddr::from_pathname
- std::process::ExitCode
- std::process::Termination
- std::thread::JoinHandle::is_finished
- Uphawu "const", olumisela ukuba kunokwenzeka ukulisebenzisa kuyo nayiphi na imeko endaweni yesigxina, lisetyenziswa kwimisebenzi:
- <*const T>::offset ΠΈ <*mut T>::offset
- <*const T>::wrapping_offset ΠΈ <*mut T>::wrapping_offset
- <*const T>::add ΠΈ <*mut T>::add
- <*const T>::sub ΠΈ <*mut T>::sub
- <*const T>::wrapping_add ΠΈ <*mut T>::wrapping_add
- <*const T>::wrapping_sub ΠΈ <*mut T>::wrapping_sub
- <[T]>::as_mut_ptr
- <[T]>::as_ptr_range
- <[T]>::as_mut_ptr_range
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΡΡΠ°ΡΡΡ Β«Rust: A Critical RetrospectiveΒ» Ρ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΠΌ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΠΉ ΠΎ ΡΠ·ΡΠΊΠ΅ Rust ΠΏΠΎΡΠ»Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π½Π° Π½ΡΠΌ 100 ΡΡΡΡΡ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π° Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΄Π΅ΡΠ½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Xous, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ Π² ΠΏΡΠΎΡΠΈΠ²ΠΊΠ°Ρ
. ΠΠ· Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ² ΠΎΡΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΡΡΡΠ΄Π½ΡΠΉ Π΄Π»Ρ Π²ΠΎΡΠΏΡΠΈΡΡΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, Π½Π΅Π·Π°Π²Π΅ΡΡΡΠ½Π½ΠΎΡΡΡ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π·Π²ΠΈΡΠΈΡ ΡΠ·ΡΠΊΠ°, ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌΡΡ
ΡΠ±ΠΎΡΠΎΠΊ, ΡΠΈΠΏΠΎΠ²ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π΄ΠΎΠ²Π΅ΡΠΈΠ΅ΠΌ ΠΊ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌ Π² Crates.io, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Ρ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΏΡΠ΅Π²Π·ΠΎΡΠ΅Π΄ΡΠΈΡ
ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΡΠΏΠΎΠΌΠΈΠ½Π°ΡΡΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Π° ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π΅Π»ΠΊΠΈ Β«Ρ
Π°ΠΊΠΎΠ²Β», Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΡ
ΠΏΡΠΈ Π±ΡΡΡΡΠΎΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΎΠ².
umthombo: opennet.ru