rilascio del linguaggio di programmazione di sistema , sviluppato da Mozilla. Il linguaggio Γ¨ focalizzato sulla gestione sicura della memoria, offre gestione automatica della memoria e fornisce strumenti per raggiungere un elevato parallelismo nell'esecuzione dei compiti, evitando l'uso del garbage collector e .
La gestione automatica della memoria in Rust libera gli sviluppatori dalla manipolazione dei puntatori e protegge da problemi derivanti da operazioni a basso livello con la memoria, come l'accesso a memoria giΓ liberata, dereferenziazione di puntatori nulli, overflow del buffer e simili. Per la distribuzione delle librerie, la gestione della compilazione e delle dipendenze, Γ¨ in fase di sviluppo un gestore di pacchetti , che consente di ottenere le librerie necessarie per il programma con un clic. Per l'hosting delle librerie Γ¨ supportato il repository .
Principali :
- Π ΠΌΠ°ΠΊΡΠΎΡΠ°Ρ
ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΠΈΡ
ΠΏΡΠ΅Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄ ΡΠΈΠΏΠ°ΠΆΠ΅ΠΉ (trait), ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ (impl) ΠΈΠ»ΠΈ Π²Π½Π΅ΡΠ½ΠΈΡ
Π±Π»ΠΎΠΊΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
macro_rules! mac_trait {
($i:item) => {
trait T { $i }
}
}
mac_trait! {
fn foo() {}
}ΠΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ:
trait T {
fn foo() {}
} - Π£Π»ΡΡΡΠ΅Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ², ΡΡΡΠ»ΠΎΠΊ ΠΈ Π΄Π²ΠΎΠΈΡΠ½ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½ΠΈΠΆΠ΅ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄, ΡΠ°Π½Π΅Π΅ Π²ΡΠ·ΡΠ²Π°Π²ΡΠΈΠΉ ΠΎΡΠΈΠ±ΠΊΡ, ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ (Rust ΡΠ΅ΠΏΠ΅ΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΡΡΠΎ 0.0 ΠΈ &0.0 Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΈΠΏΠ° f32):let n: f32 = 0.0 + &0.0;
- Π Cargo Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π½ΠΎΠ²Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ CARGO_BIN_EXE_{ΠΈΠΌΡ}, Π²ΡΡΡΠ°Π²Π»ΡΠ΅ΠΌΠ°Ρ ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ΅ΡΡΠΎΠ² ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΡΡΡ Π΄ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ³ΠΎ Π² ΡΠ΅ΠΊΡΠΈΠΈ Β«[[bin]]Β» ΠΏΠ°ΠΊΠ΅ΡΠ°.
- Π Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ Β«ifΒ» ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΠΎΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Β«#[cfg()]Β».
- Π Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π°ΡΡΠΎΡΠΈΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ Π½Π°ΠΏΡΡΠΌΡΡ Π΄Π»Ρ ΡΠ΅Π»ΡΡ ΠΈ Π΄ΡΠΎΠ±Π½ΡΡ ΡΠΈΠΏΠΎΠ², Π±Π΅Π· ΠΈΠΌΠΏΠΎΡΡΠ° ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π·Ρ ΠΏΠΈΡΠ°ΡΡ u32::MAX ΠΈΠ»ΠΈ f32::NAN Π±Π΅Π· ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΡ Β«use std::u32Β» ΠΈ Β«use std::f32Β».
- Aggiunto un nuovo modulo , ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠ΅ ΡΠΈΠΏΡ Rust, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΌΠ°ΠΊΡΠΎΡ ΠΈ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΡΠΈΠΏΡ Π½Π΅ ΡΠΊΡΡΡΡ.
- Γ stata tradotta una nuova serie di API in una versione stabile, tra cui sono state stabilizzate
Once::is_completed,
f32::LOG10_2,
f32::LOG2_10,
f64::LOG10_2,
f64::LOG2_10 ΠΈ
iter::once_with.
Fonte: opennet.ru
