ΠΠ±ΡΠ°Π²Π΅Π½ΠΎ Π΅ ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈΠΎΡ ΡΠ°Π·ΠΈΠΊ Π·Π° ΠΎΠΏΡΡΠ° Π½Π°ΠΌΠ΅Π½Π° Rust 1.58, ΠΎΡΠ½ΠΎΠ²Π°Π½ ΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Mozilla, Π½ΠΎ ΡΠ΅Π³Π° ΡΠ°Π·Π²ΠΈΠ΅Π½ ΠΏΠΎΠ΄ ΠΏΠΎΠΊΡΠΎΠ²ΠΈΡΠ΅Π»ΡΡΠ²ΠΎ Π½Π° Π½Π΅Π·Π°Π²ΠΈΡΠ½Π°ΡΠ° Π½Π΅ΠΏΡΠΎΡΠΈΡΠ½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠ° Rust Foundation. ΠΠ°Π·ΠΈΠΊΠΎΡ ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ° Π½Π° Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡΠ° Π½Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ°, ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΎ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° ΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° ΠΏΠΎΡΡΠΈΠ³Π½ΡΠ²Π°ΡΠ΅ Π²ΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·Π°ΠΌ Π½Π° Π·Π°Π΄Π°ΡΠΈΡΠ΅ Π±Π΅Π· ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΡΠΎΠ±ΠΈΡΠ°Ρ Π½Π° ΡΡΠ±ΡΠ΅ ΠΈΠ»ΠΈ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° (Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΡΡΠ°Π΅ΡΠ΅ Π΅ ΡΠ²Π΅Π΄Π΅Π½ΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½Π° ΠΈΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΠ° ΠΈ ΠΎΠ΄ΡΠΆΡΠ²Π°ΡΠ΅ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°).
ΠΠ²ΡΠΎΠΌΠ°ΡΡΠΊΠΎΡΠΎ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π½Π° Rust Π³ΠΈ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ° Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ ΠΏΡΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°ΡΠ΅ ΡΠΎ ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°ΡΠΈΡΠ΅ ΠΈ Π·Π°ΡΡΠΈΡΡΠ²Π° ΠΎΠ΄ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΡΠΎ ΠΏΡΠΎΠΈΠ·Π»Π΅Π³ΡΠ²Π°Π°Ρ ΠΎΠ΄ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΡΠ° ΡΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠΊΠΈ ΡΠ΅Π³ΠΈΠΎΠ½ ΠΎΡΠΊΠ°ΠΊΠΎ ΡΠ΅ ΡΠ΅ ΠΎΡΠ»ΠΎΠ±ΠΎΠ΄ΠΈ, Π΄Π΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ Π½Π° Π½ΡΠ»Π° ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°Ρ, ΠΏΡΠ΅ΡΠ΅ΠΊΠΎΡΡΠ²Π°ΡΠ° Π½Π° Π±Π°ΡΠ΅ΡΠΎΡ ΠΈΡΠ½. ΠΠ° Π΄Π° ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π΄Π° ΡΠ΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈ ΡΠΊΠ»ΠΎΠΏΡΠ²Π°ΡΠ΅ ΠΈ Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²ΡΠ²Π° ΡΠΎ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ, ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ Π³ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π° ΠΌΠ΅Π½Π°ΡΠ΅ΡΠΎΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Cargo. Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌΠΎΡ crates.io Π΅ ΠΏΠΎΠ΄Π΄ΡΠΆΠ°Π½ Π·Π° Ρ ΠΎΡΡΠΈΡΠ°ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
ΠΠ»Π°Π²Π½ΠΈΡΠ΅ ΠΈΠ½ΠΎΠ²Π°ΡΠΈΠΈ:
- ΠΠΎ Π±Π»ΠΎΠΊΠΎΠ²ΠΈΡΠ΅ Π·Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°ΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ, ΠΏΠΎΠΊΡΠ°Ρ ΠΏΡΠ΅ΡΡ
ΠΎΠ΄Π½ΠΎ Π΄ΠΎΡΡΠ°ΠΏΠ½Π°ΡΠ° ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π·Π°ΠΌΠ΅Π½Π° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈ ΠΏΠΎ Π»ΠΈΠ½ΠΈΡΠ° ΠΏΠΎ Π±ΡΠΎΡ ΠΈ ΠΈΠΌΠ΅, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½Π° Π΅ ΠΌΠΎΠΆΠ½ΠΎΡΡΠ° Π·Π° Π·Π°ΠΌΠ΅Π½Π° Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ ΡΠΎ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ Π½Π° ΠΈΠ·ΡΠ°Π·ΠΎΡ β{identifier}β Π²ΠΎ Π»ΠΈΠ½ΠΈΡΠ°ΡΠ°. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ: // ΠΡΠ΅ΡΡ
ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ΄Π΄ΡΠΆΠ°Π½ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ: println!("ΠΠ΄ΡΠ°Π²ΠΎ, {}!", get_person()); println!("ΠΠ΄ΡΠ°Π²ΠΎ, {0}!", get_person()); println!("ΠΠ΄ΡΠ°Π²ΠΎ, {Π»ΠΈΡΠ΅}!", Π»ΠΈΡΠ΅ = get_person()); // ΡΠ΅Π³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°Π²Π΅Π΄Π΅ΡΠ΅ let person = get_person(); println! ("ΠΠ΄ΡΠ°Π²ΠΎ, {Π»ΠΈΡΠ΅}!");
ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°Π²Π΅Π΄Π°Ρ ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π²ΠΎ ΠΎΠΏΡΠΈΠΈΡΠ΅ Π·Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°ΡΠ΅. Π½Π΅ΠΊΠ° (ΡΠΈΡΠΈΠ½Π°, ΠΏΡΠ΅ΡΠΈΠ·Π½ΠΎΡΡ) = get_format(); Π·Π° (ΠΈΠΌΠ΅, ΡΠ΅Π·ΡΠ»ΡΠ°Ρ) Π²ΠΎ get_scores() { println!("{ΠΈΠΌΠ΅}: {score:width$.precision$}"); }
ΠΠΎΠ²Π°ΡΠ° Π·Π°ΠΌΠ΅Π½Π° ΡΠ°Π±ΠΎΡΠΈ Π²ΠΎ ΡΠΈΡΠ΅ ΠΌΠ°ΠΊΡΠΎΠ° ΠΊΠΎΠΈ ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π°Π°Ρ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΠ° Π½Π° ΡΠΎΡΠΌΠ°Ρ Π½Π° Π½ΠΈΠ·Π°, ΡΠΎ ΠΈΡΠΊΠ»ΡΡΠΎΠΊ Π½Π° ΠΌΠ°ΠΊΡΠΎΡΠΎ βΠΏΠ°Π½ΠΈΠΊΠ°!β. Π²ΠΎ Π²Π΅ΡΠ·ΠΈΠΈΡΠ΅ Π½Π° Rust ΠΎΠ΄ 2015 ΠΈ 2018 Π³ΠΎΠ΄ΠΈΠ½Π°, Π²ΠΎ ΠΊΠΎΡ ΠΏΠ°Π½ΠΈΠΊΠ°ΡΠ°!(β{ident}β) ΡΠ΅ ΡΡΠ΅ΡΠΈΡΠ° ΠΊΠ°ΠΊΠΎ ΠΎΠ±ΠΈΡΠ½Π° Π½ΠΈΠ·Π° (Π²ΠΎ Rust 2021, Π·Π°ΠΌΠ΅Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°).
- ΠΠ΄Π½Π΅ΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° std::process::Command Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Windows Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅ΡΠΎ ΡΠ°ΠΊΠ° ΡΡΠΎ ΠΏΡΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, ΠΎΠ΄ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΠ½ΠΈ ΠΏΡΠΈΡΠΈΠ½ΠΈ, ΠΏΠΎΠ²Π΅ΡΠ΅ Π½Π΅ Π±Π°ΡΠ° ΠΈΠ·Π²ΡΡΠ½ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ Π²ΠΎ ΡΠ΅ΠΊΠΎΠ²Π½ΠΈΠΎΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ. Π’Π΅ΠΊΠΎΠ²Π½ΠΈΠΎΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ Π΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ ΠΊΠΎΠ΄ Π°ΠΊΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Π°Ρ Π²ΠΎ Π½Π΅Π΄ΠΎΠ²Π΅ΡΠ»ΠΈΠ²ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΈ (CVE-2021-3013). ΠΠΎΠ²Π°ΡΠ° Π»ΠΎΠ³ΠΈΠΊΠ° Π·Π° ΠΎΡΠΊΡΠΈΠ²Π°ΡΠ΅ Π½Π° ΠΈΠ·Π²ΡΡΠ½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π²ΠΊΠ»ΡΡΡΠ²Π° ΠΏΡΠ΅Π±Π°ΡΡΠ²Π°ΡΠ΅ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΈΡΠ΅ Rust, Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ, ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈΠΎΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ Π½Π° Windows ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΈΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈ Π²ΠΎ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° Π½Π° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°ΡΠ° PATH.
- Π‘ΡΠ°Π½Π΄Π°ΡΠ΄Π½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π³ΠΎ ΠΏΡΠΎΡΠΈΡΠΈ Π±ΡΠΎΡΠΎΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈ ΡΠΎ β#[must_use]β Π·Π° Π΄Π° ΠΈΠ·Π΄Π°Π΄Π΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π΄ΠΎΠΊΠΎΠ»ΠΊΡ ΠΏΠΎΠ²ΡΠ°ΡΠ½Π°ΡΠ° Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΡΠ΅ ΠΈΠ³Π½ΠΎΡΠΈΡΠ°, ΡΡΠΎ ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠ²Π°Π°Ρ Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°Π½ΠΈ ΡΠΎ ΠΏΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΠΊΠ°ΡΠ° Π΄Π΅ΠΊΠ° ΡΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° ΡΠ΅ Π³ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈΡΠ΅ Π½Π°ΠΌΠ΅ΡΡΠΎ Π΄Π° Π²ΡΠ°ΡΠ° Π½ΠΎΠ²Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡ.
- ΠΠΎΠ² Π΄Π΅Π» ΠΎΠ΄ API Π΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ΅Π½ Π²ΠΎ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠ°ΡΠ° ΡΡΠ°Π±ΠΈΠ»Π½ΠΈ, Π²ΠΊΠ»ΡΡΡΠ²Π°ΡΡΠΈ Π³ΠΈ ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅ ΡΠ΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ:
- ΠΠ΅ΡΠ°ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ::is_symlink
- ΠΠ°ΡΠ΅ΠΊΠ°::is_symlink
- {integer}::saturating_div
- ΠΠΏΡΠΈΡΠ°::unwrap_unchecked
- Π Π΅Π·ΡΠ»ΡΠ°Ρ::unwrap_unchecked
- Π Π΅Π·ΡΠ»ΡΠ°Ρ::unwrap_err_unchecked
- ΠΡΡΠΈΠ±ΡΡΠΎΡ βconstβ, ΠΊΠΎΡ ΡΠ° ΠΎΠ΄ΡΠ΅Π΄ΡΠ²Π° ΠΌΠΎΠΆΠ½ΠΎΡΡΠ° Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΠΎ ΠΊΠΎΡ Π±ΠΈΠ»ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π°ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈ, ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ:
- ΠΡΠ΅ΠΌΠ΅ΡΡΠ°Π΅ΡΠ΅::Π½ΠΎΠ²
- ΠΡΠ΅ΠΌΠ΅ΡΡΠ°Π΅ΡΠ΅::ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ_Π΄ΠΎΠ΄Π°Π΄Π΅ΡΠ΅
- ΠΡΠ΅ΠΌΠ΅ΡΡΠ°Π΅ΡΠ΅::saturating_add
- ΠΡΠ΅ΠΌΠ΅ΡΡΠ°Π΅ΡΠ΅::ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ_ΠΏΠΎΠ΄
- ΠΡΠ΅ΠΌΠ΅ΡΡΠ°Π΅ΡΠ΅::Π·Π°ΡΠΈΡΠ΅Π½Π°_ΠΏΠΎΠ΄
- ΠΡΠ΅ΠΌΠ΅ΡΡΠ°Π΅ΡΠ΅::ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ_ΠΌΡΠ»
- ΠΡΠ΅ΠΌΠ΅ΡΡΠ°Π΅ΡΠ΅::saturating_mul
- ΠΡΠ΅ΠΌΠ΅ΡΡΠ°Π΅ΡΠ΅::ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ_Π΄ΠΈΠ²
- ΠΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ Π΄Π΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°ΡΠΈΡΠ΅ β*const Tβ Π²ΠΎ βconstβ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΈ.
- ΠΠΎ ΠΌΠ΅Π½Π°ΡΠ΅ΡΠΎΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Cargo, ΠΏΠΎΠ»Π΅ΡΠΎ rust_version Π΅ Π΄ΠΎΠ΄Π°Π΄Π΅Π½ΠΎ Π½Π° ΠΌΠ΅ΡΠ°ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΎΡ, Π° ΠΎΠΏΡΠΈΡΠ°ΡΠ° β--ΠΏΠΎΡΠ°ΠΊΠ°-ΡΠΎΡΠΌΠ°Ρβ Π΅ Π΄ΠΎΠ΄Π°Π΄Π΅Π½Π° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° βcargo installβ.
- ΠΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΡ Π·Π° Π·Π°ΡΡΠΈΡΠ° Π½Π° CFI (Control Flow Integrity), ΠΊΠΎΡ Π΄ΠΎΠ΄Π°Π²Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΡΠ΅Π΄ ΡΠ΅ΠΊΠΎΡ ΠΈΠ½Π΄ΠΈΡΠ΅ΠΊΡΠ΅Π½ ΠΏΠΎΠ²ΠΈΠΊ Π·Π° ΠΎΡΠΊΡΠΈΠ²Π°ΡΠ΅ Π½Π° Π½Π΅ΠΊΠΎΠΈ ΡΠΎΡΠΌΠΈ Π½Π° Π½Π΅Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΎ ΠΎΠ΄Π½Π΅ΡΡΠ²Π°ΡΠ΅ ΡΡΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΡΠ°Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π½Π°ΡΡΡΡΠ²Π°ΡΠ΅ Π½Π° Π½ΠΎΡΠΌΠ°Π»Π½ΠΈΠΎΡ Π½Π°Π»ΠΎΠ³ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ (ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Π½ ΡΠ΅ΠΊ) ΠΊΠ°ΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π° Π½Π° Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠΈΡΠ°ΡΠ° ΠΊΠΎΠΈ Π³ΠΈ ΠΌΠ΅Π½ΡΠ²Π°Π°Ρ ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°ΡΠΈΡΠ΅ Π·Π°ΡΡΠ²Π°Π½ΠΈ Π²ΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅.
- ΠΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ Π΄ΠΎΠ΄Π°Π΄Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Π²Π΅ΡΠ·ΠΈΠΈ 5 ΠΈ 6 ΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠΎΡ Π·Π° ΡΠΏΠΎΡΠ΅Π΄Π±Π° Π½Π° ΠΏΠΎΠΊΡΠΈΠ΅Π½ΠΎΡΡ LLVM, ΡΡΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΠΎΡΠ΅Π½ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠΎΠΊΡΠΈΠ΅Π½ΠΎΡΡΠ° Π½Π° ΠΊΠΎΠ΄ΠΎΡ Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ΡΠΎ.
- ΠΠΎ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ, Π±Π°ΡΠ°ΡΠ°ΡΠ° Π·Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° LLVM ΡΠ΅ ΠΏΠΎΠ΄ΠΈΠ³Π½Π°ΡΠΈ Π½Π° LLVM 12.
- Π’ΡΠ΅ΡΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° x86_64-unknown-none Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½ΠΎ. Π’ΡΠ΅ΡΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π²ΠΊΠ»ΡΡΡΠ²Π° ΠΎΡΠ½ΠΎΠ²Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ°, Π½ΠΎ Π±Π΅Π· Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΎ ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅, ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΠΎΡΠΈΡΠΈΡΠ°Π»Π½ΠΈ ΠΈΠ·Π΄Π°Π½ΠΈΡΠ° ΠΈΠ»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π΄Π°Π»ΠΈ ΠΊΠΎΠ΄ΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄ΠΈ.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΎ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌΠ΅ ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ ΠΎΠ΄ ΠΠ°ΡΠΊΡΠΎΡΠΎΡΡ Π·Π° ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅ Rust Π·Π° Windows 0.30, ΠΊΠΎΠΈ Π²ΠΈ Π΄ΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Π°Ρ Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΠ°Π·ΠΈΠΊΠΎΡ Rust Π·Π° Π΄Π° ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈΠΎΡ ΡΠΈΡΡΠ΅ΠΌ Windows. Π‘Π΅ΡΠΎΡ Π²ΠΊΠ»ΡΡΡΠ²Π° Π΄Π²Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Π³Π°ΡΠ±Π° (windows ΠΈ windows-sys), ΠΏΡΠ΅ΠΊΡ ΠΊΠΎΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΈΡΡΠ°ΠΏΠΈΡΠ΅ Π΄ΠΎ Win API Π²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ Rust. ΠΠΎΠ΄ΠΎΡ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π½Π° API ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΠΎΠ΄ ΠΌΠ΅ΡΠ°ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΡΠΎ Π³ΠΎ ΠΎΠΏΠΈΡΡΠ²Π°Π°Ρ API, ΡΡΠΎ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π½Π΅ ΡΠ°ΠΌΠΎ Π·Π° ΠΏΠΎΡΡΠΎΡΠ½ΠΈΡΠ΅ ΠΏΠΎΠ²ΠΈΡΠΈ Π½Π° Win API, ΡΡΠΊΡ ΠΈ Π·Π° ΠΏΠΎΠ²ΠΈΡΠΈΡΠ΅ ΡΡΠΎ ΡΠ΅ ΡΠ΅ ΠΏΠΎΡΠ°Π²ΡΠ²Π°Π°Ρ Π²ΠΎ ΠΈΠ΄Π½ΠΈΠ½Π°. ΠΠΎΠ²Π°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° Π΄ΠΎΠ΄Π°Π²Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΡΠ΅Π»Π½Π°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° UWP (Universal Windows Platform) ΠΈ Π³ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° ΡΠΈΠΏΠΎΠ²ΠΈΡΠ΅ Handle ΠΈ Debug.
ΠΠ·Π²ΠΎΡ: opennet.ru