A liberazione di a lingua di prugrammazione di u sistema Rust 1.57, fundata da u prughjettu Mozilla, ma avà sviluppata sottu à l'auspici di l'urganizazione indipendente Rust Foundation, hè stata publicata. A lingua fucalizza nantu à a sicurità di a memoria, furnisce una gestione automatica di a memoria, è furnisce i mezi per ottene un parallelismu elevatu di u travagliu senza aduprà un cullizzioni di basura o runtime (u runtime hè ridutta à l'inizializazione basica è u mantenimentu di a biblioteca standard).
A gestione automatica di a memoria di Rust salva u sviluppatore da l'errore durante a manipulazione di puntatori è prutegge da i prublemi chì si sviluppanu per via di a manipulazione di memoria di livellu bassu, cum'è l'accessu à una zona di memoria dopu chì hè stata liberata, dereferencing null pointers, buffer overruns, etc. Per distribuisce biblioteche, furnisce e custruzzioni è gestisce e dipendenze, u prugettu sviluppa u gestore di pacchetti Cargo. U repository crates.io hè supportatu per e biblioteche di hosting.
Innuvazioni principali:
- Π‘ΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ° Β«panic!Β» Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°Ρ , ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΡ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Β«const fnΒ». ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Β«panic!Β» Π² const-ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠ° Β«assert!Β» ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π΄ΡΡΠ³ΠΈΡ API ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. Π‘ΡΠ°Π±ΠΈΠ»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΡ Π²Π°ΡΡΠ²Π°Π΅Ρ Π²ΡΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ Π²ΠΈΠ΄Π΅ ΠΌΠ°ΠΊΡΠΎΡ Β«panic!Β» ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ (panic!(Β«β¦Β»)) ΠΈΠ»ΠΈ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Β«&strΒ» ΠΏΡΠΈ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ (panic!(Β«{}Β», a)), ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΡΡ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ Β«{}Β» Π±Π΅Π· ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠΈΠΏΠ°ΠΆΠ΅ΠΉ. Π Π±ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎΡΡΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² Π² ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½Π°, Π½ΠΎ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΡΠΆΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ assert-ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ: const _: () = assert!(std::mem::size_of::<u64>() == 8); const _: () = assert!(std::mem::size_of::<u8>() == 1);
- Π ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ΅ Cargo ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΌΠΈ Β«devΒ», Β«releaseΒ», Β«testΒ» ΠΈ Β«benchΒ». ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ (LTO) ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠ±ΠΎΡΠΎΠΊ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π² Cargo.toml ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΡΠΈΠ»Ρ Β«productionΒ» ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² Π½Π΅Π³ΠΎ ΡΠ»Π°Π³ Β«lto = trueΒ». ΠΡΠΈ ΡΡΠΎΠΌ ΠΏΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΊΠ°Π·Π°ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΡΠΎΡΠΈΠ»Ρ Π΄Π»Ρ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ· Π½Π΅Π³ΠΎ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½ΠΈΠΆΠ΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΏΡΠΎΡΠΈΠ»Ρ Β«productionΒ», ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΡΠΎΡΠΈΠ»Ρ Β«releaseΒ» Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ»Π°Π³Π° Β«lto = trueΒ». Π‘Π°ΠΌ ΠΏΡΠΎΡΠΈΠ»Ρ Π°ΠΊΡΠΈΠ²ΠΈΡΡΠ΅ΡΡΡ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ cargo Ρ ΠΎΠΏΡΠΈΠ΅ΠΉ Β«βprofile productionΒ», Π° ΡΠ±ΠΎΡΠΎΡΠ½ΡΠ΅ Π°ΡΡΠ΅ΡΠ°ΠΊΡΡ Π±ΡΠ΄ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Ρ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Β«target/productionΒ». [profile.production] inherits = Β«releaseΒ» lto = true
- Π‘ΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ try_reserve Π΄Π»Ρ ΡΠΈΠΏΠΎΠ² Vec, String, HashMap, HashSet ΠΈ VecDeque, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°ΡΠ°Π½Π΅Π΅ ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΡΠΎ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ½ΠΈΠ·ΠΈΡΡ ΡΠ°ΡΡΠΎΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π°Π²Π°ΡΠΈΠΉΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΈΠ·-Π·Π° Π½Π΅Ρ Π²Π°ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ.
- Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² Ρ ΡΠΈΠ³ΡΡΠ½ΡΠΌΠΈ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ Β«m!{ .. }.method()Β» ΠΈ Β«m!{ .. }?Β».
- ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ File::read_to_end ΠΈ read_to_string.
- U supportu per a specificazione Unicode hè stata aghjurnata à a versione 14.0.
- Π Π°ΡΡΠΈΡΠ΅Π½ΠΎ ΡΠΈΡΠ»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΡΡ Β«#[must_use]Β» Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π² ΡΠ»ΡΡΠ°Π΅ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π²ΡΡΠ²ΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ, Π²ΡΠ·Π²Π°Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π° Π½Π΅ Π²Π΅ΡΠ½ΡΡ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΉ Π±ΡΠΊΠ΅Π½Π΄ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ libgccjit.
- Una nova parte di l'API hè stata trasferita à a categuria di stabile, cumprese i metudi è l'implementazione di i tratti sò stati stabilizzati:
- [T; N]::as_mut_slice
- [T; N]::as_slice
- collections::TryReserveError
- HashMap::try_reserve
- HashSet::try_reserve
- String::try_reserve
- String::try_reserve_exact
- Vec::try_reserve
- Vec::try_reserve_exact
- VecDeque::try_reserve
- VecDeque::try_reserve_exact
- Iterator::map_while
- iter::MapWhile
- proc_macro::is_available
- Command::get_program
- Command::get_args
- Command::get_envs
- Command::get_current_dir
- CommandArgs
- CommandEnvs
- ΠΡΠΈΠ·Π½Π°ΠΊ Β«constΒ», ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² Π»ΡΠ±ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ½ Π² ΡΡΠ½ΠΊΡΠΈΠΈ hint::unreachable_unchecked.
- Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΡΡΠ΅ΡΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌ armv6k-nintendo-3ds, armv7-unknown-linux-uclibceabihf, m68k-unknown-linux-gnu, aarch64-kmc-solid_asp3, armv7a-kmc-solid_asp3-eabi ΠΈ armv7a-kmc-solid_asp3-eabihf. Π’ΡΠ΅ΡΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ Π±Π°Π·ΠΎΠ²ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ, Π½ΠΎ Π±Π΅Π· Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠ±ΠΎΡΠΎΠΊ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ±ΠΎΡΠΊΠΈ ΠΊΠΎΠ΄Π°.
Source: opennet.ru