A liberazione di a lingua di prugrammazione di u sistema Rust 1.54, 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:
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²Π½ΡΡΡΠΈ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ (ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ ΠΈ ΠΌΠ°ΠΊΡΠΎΡΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠ°ΠΊΡΠΎΡΠ° Β«macro_rules!Β»). ΠΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΌΠ°ΠΊΡΠΎΡΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ Β«!Β» ΠΏΠΎΡΠ»Π΅ ΠΈΠΌΠ΅Π½ΠΈ (macro!(β¦)) ΠΈ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° ΠΌΠ°ΠΊΡΠΎΡΠ° Π²ΠΌΠ΅ΡΡΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠ·ΠΎΠ² ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² Π²Π½ΡΡΡΠΈ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Π²ΡΡΠ°Π²ΠΊΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° README ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ: #![doc = include_str!(Β«README.mdΒ»)] #[path = concat!(env!(Β«OUT_DIRΒ»), Β«/generated.rsΒ»)] mod generated;
- Π‘ΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈ (Intrinsics) Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ wasm32, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ SIMD Π² WebAssembly. ΠΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ v128_bitselect, Π΄ΠΎΡΡΡΠΏΠ½Ρ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Β«safeΒ», Π½ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅ Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, v128_load) ΠΎΡΡΠ°ΡΡΡΡ Β«unsafeΒ».
- ΠΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅ΠΉ ΠΏΠ΅ΡΠ΅ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ²ΡΠΈΠ΅ΡΡ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π°, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΡΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΠΎΡΠ»Π΅ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅Π»ΠΊΠΈΡ ΠΏΡΠ°Π²ΠΎΠΊ. ΠΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π±ΡΠ»Π° ΠΎΡΠΊΠ»ΡΡΠ΅Π½Π° Π² Π²ΡΠΏΡΡΠΊΠ΅ 1.52.1 ΠΈΠ·-Π·Π° Π²ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠΊΡΡΡΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ, Π²ΡΠΏΠ»ΡΠ²ΡΠΈΡ ΠΏΠΎΡΠ»Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄Π°Π½Π½ΡΡ ΠΈΠ· Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΊΡΡΠ°.
- Π ΡΠ°Π·ΡΡΠ΄ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ
ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½Π° Π½ΠΎΠ²Π°Ρ ΠΏΠΎΡΡΠΈΡ API, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ:
- BTreeMap::into_keys
- BTreeMap::into_values
- HashMap::into_keys
- HashMap::into_values
- arch::wasm32
- VecDeque::binary_search
- VecDeque::binary_search_by
- VecDeque::binary_search_by_key
- VecDeque::partition_point
- Π cargo-tree Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΠΎΠΏΡΠΈΠΈ: Β«βprune <spec>Β» Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈΠ· Π³ΡΠ°ΡΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Β«βdepthΒ» Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΎΠ»ΡΠΊΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡΠΈ Π² Π΄Π΅ΡΠ΅Π²Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Β«βedges no-proc-macroΒ» Π΄Π»Ρ ΡΠΊΡΡΡΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΡΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ².
Source: opennet.ru