ИздаванС Π½Π° Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Rust 1.58

ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π° Π΅ вСрсията Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ с ΠΎΠ±Ρ‰ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Rust 1.58, основан ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Mozilla, Π½ΠΎ сСга Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΏΠΎΠ΄ Π΅Π³ΠΈΠ΄Π°Ρ‚Π° Π½Π° нСзависимата организация с нСстопанска Ρ†Π΅Π» Rust Foundation. Π•Π·ΠΈΠΊΡŠΡ‚ сС фокусира Π²ΡŠΡ€Ρ…Ρƒ бСзопасността Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, осигурява Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΈ прСдоставя срСдства Π·Π° постиганС Π½Π° висок ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌ Π½Π° Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅ Π±Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΡŠΠ±ΠΈΡ€Π°Ρ‡ Π½Π° Π±ΠΎΠΊΠ»ΡƒΠΊ ΠΈΠ»ΠΈ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° изпълнСниС (Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° изпълнСниС Π΅ Π½Π°ΠΌΠ°Π»Π΅Π½ΠΎ Π΄ΠΎ основна инициализация ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° стандартната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°).

Автоматичното ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π½Π° Rust Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π° Π³Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅ ΠΏΡ€ΠΈ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠ°Π·Π²Π° ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΏΡ€ΠΎΠΈΠ·Ρ‚ΠΈΡ‡Π°Ρ‰ΠΈ ΠΎΡ‚ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π½Π° ниско Π½ΠΈΠ²ΠΎ, ΠΊΠ°Ρ‚ΠΎ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ област Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, слСд ΠΊΠ°Ρ‚ΠΎ тя Π΅ Π±ΠΈΠ»Π° освободСна, Π΄Π΅Ρ€Π΅Ρ„Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° Π½ΡƒΠ»Π΅Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π», ΠΏΡ€Π΅ΠΏΡŠΠ»Π²Π°Π½Π΅ Π½Π° Π±ΡƒΡ„Π΅Ρ€ ΠΈ Ρ‚.Π½. Π—Π° разпространСниС Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, осигуряванС Π½Π° сглобяванС ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° зависимости, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Cargo. Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ crates.io сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Π·Π° хостванС Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

Основни ΠΈΠ½ΠΎΠ²Π°Ρ†ΠΈΠΈ:

  • Π’ Π±Π»ΠΎΠΊΠΎΠ²Π΅Ρ‚Π΅ Π·Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ€Π΅Π΄, Π² допълнСниС към ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° Π½Π°Π»ΠΈΡ‡Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° замСстванС Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ ΠΈΠ·Π±Ρ€ΠΎΠ΅Π½ΠΈ слСд Ρ€Π΅Π΄ с Π½ΠΎΠΌΠ΅Ρ€ ΠΈ ΠΈΠΌΠ΅, Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° замСстванС Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈ Ρ‡Ρ€Π΅Π· добавянС Π½Π° ΠΈΠ·Ρ€Π°Π·Π° β€ž{identifier}β€œ към Ρ€Π΅Π΄Π°. НапримСр: // ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½ΠΈ ΠΏΡ€Π΅Π΄ΠΈ конструкции: println!("Π—Π΄Ρ€Π°Π²Π΅ΠΉ, {}!", get_person()); println!("Π—Π΄Ρ€Π°Π²Π΅ΠΉ, {0}!", get_person()); println!("Π—Π΄Ρ€Π°Π²Π΅ΠΉ, {person}!", person = get_person()); // сСга ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° посочитС let person = get_person(); println!("Π—Π΄Ρ€Π°Π²Π΅ΠΉ, {person}!");

    Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ ΡΡŠΡ‰ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ посочСни Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π² ΠΎΠΏΡ†ΠΈΠΈΡ‚Π΅ Π·Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°Π½Π΅. Π½Π΅ΠΊΠ° (ΡˆΠΈΡ€ΠΈΠ½Π°, точност) = get_format(); for (ΠΈΠΌΠ΅, Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚) Π² get_scores() { println!("{name}: {score:width$.precision$}"); }

    Новото замСстванС Ρ€Π°Π±ΠΎΡ‚ΠΈ във всички макроси, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ дСфиниция Π½Π° Π½ΠΈΠ·ΠΎΠ² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, с ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° макроса β€žΠΏΠ°Π½ΠΈΠΊΠ°!β€œ. във вСрсиитС 2015 ΠΈ 2018 Π½Π° Π΅Π·ΠΈΠΊΠ° Rust, Π² ΠΊΠΎΠΈΡ‚ΠΎ panic!("{ident}") сС Ρ‚Ρ€Π΅Ρ‚ΠΈΡ€Π° ΠΊΠ°Ρ‚ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ Π½ΠΈΠ· (Π² Rust 2021 замСстванСто Ρ€Π°Π±ΠΎΡ‚ΠΈ).

  • ΠŸΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° структурата Π½Π° std::process::Command Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Windows Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ΠΎ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΏΡ€ΠΈ изпълнСниС Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, ΠΎΡ‚ ΡΡŠΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ Π·Π° сигурност, Π²Π΅Ρ‡Π΅ Π½Π΅ Ρ‚ΡŠΡ€ΡΠΈ изпълними Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° дирСктория. Π’Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° дирСктория Π΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½Π°, Π·Π°Ρ‰ΠΎΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° изпълнСниС Π½Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅Ρ€Π΅Π½ ΠΊΠΎΠ΄, Π°ΠΊΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π² Π½Π΅Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ (CVE-2021-3013). Новата Π»ΠΎΠ³ΠΈΠΊΠ° Π·Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° изпълним Ρ„Π°ΠΉΠ» Π²ΠΊΠ»ΡŽΡ‡Π²Π° Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈΡ‚Π΅ Π½Π° Rust, дирСкторията Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, систСмната дирСктория Π½Π° Windows ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈΡ‚Π΅, посочСни Π² ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° Π½Π° срСдата PATH.
  • Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Π°Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Ρ€Π°Π·ΡˆΠΈΡ€ΠΈ броя Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅, ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½ΠΈ с β€ž#[must_use]β€œ, Π·Π° Π΄Π° ΠΈΠ·Π΄Π°Π΄Π΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π°ΠΊΠΎ Π²ΡŠΡ€Π½Π°Ρ‚Π°Ρ‚Π° стойност бъдС ΠΏΡ€Π΅Π½Π΅Π±Ρ€Π΅Π³Π½Π°Ρ‚Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° сС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Ρ‚ Π³Ρ€Π΅ΡˆΠΊΠΈ, ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½ΠΈ ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Ρ‡Π΅ Π΄Π°Π΄Π΅Π½Π° функция Ρ‰Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ стойноститС, вмСсто Π΄Π° Π²ΡŠΡ€Π½Π΅ Π½ΠΎΠ²Π° стойност.
  • Нова част ΠΎΡ‚ API Π΅ прСмСстСна Π² катСгорията Π½Π° стабилни, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° характСристикитС са стабилизирани:
    • ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈ::is_symlink
    • ΠŸΡŠΡ‚ :: Π΅_симлинк
    • {integer}::saturating_div
    • Option::unwrap_unchecked
    • Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ :: unwrap_unchecked
    • Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ :: unwrap_err_unchecked
  • ΠΡ‚Ρ€ΠΈΠ±ΡƒΡ‚ΡŠΡ‚ "const", ΠΊΠΎΠΉΡ‚ΠΎ опрСдСля Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ във всСки контСкст вмСсто константи, сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° във Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:
    • ΠŸΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚::Π½ΠΎΠ²ΠΎ
    • Duration::checked_add
    • Duration::saturating_add
    • Duration::checked_sub
    • Duration::saturating_sub
    • Duration::checked_mul
    • Duration::saturating_mul
    • Duration::checked_div
  • ПозволСно Π΄Π΅Ρ€Π΅Ρ„Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ "*const T" Π² контСксти "const".
  • Π’ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Cargo ΠΏΠΎΠ»Π΅Ρ‚ΠΎ rust_version Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΎ към ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈ опцията β€ž--message-formatβ€œ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° към ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° β€žcargo installβ€œ.
  • ΠšΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° защитния ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ CFI (ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ‚Π΅Ρ‚ Π½Π° контролния ΠΏΠΎΡ‚ΠΎΠΊ), ΠΊΠΎΠΉΡ‚ΠΎ добавя ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΡ€Π΅Π΄ΠΈ всяко ΠΈΠ½Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅, Π·Π° Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ΅ някои Ρ„ΠΎΡ€ΠΌΠΈ Π½Π° Π½Π΅Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π½Π°Ρ€ΡƒΡˆΠ°Π²Π°Π½Π΅ Π½Π° нормалния Ρ€Π΅Π΄ Π½Π° изпълнСниС (ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Π½ ΠΏΠΎΡ‚ΠΎΠΊ) Π² Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Сксплойти, ΠΊΠΎΠΈΡ‚ΠΎ промСнят ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈΡ‚Π΅, ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈ Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, Π²ΡŠΡ€Ρ…Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
  • ΠšΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° вСрсии 5 ΠΈ 6 Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π·Π° сравнСниС Π½Π° ΠΏΠΎΠΊΡ€ΠΈΡ‚ΠΈΠ΅ LLVM, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π·Π° ΠΎΡ†Π΅Π½ΠΊΠ° Π½Π° ΠΏΠΎΠΊΡ€ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ΄Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° тСстванС.
  • Π’ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° изискванията Π·Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π°Ρ‚Π° вСрсия Π½Π° LLVM са повишСни Π΄ΠΎ LLVM 12.
  • Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ Π΅ Ρ‚Ρ€Π΅Ρ‚ΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° x86_64-unknown-none. Π’Ρ€Π΅Ρ‚ΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π° основна ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°, Π½ΠΎ Π±Π΅Π· Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ тСстванС, ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π΄Π°Π»ΠΈ ΠΊΠΎΠ΄ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½.

ОсвСн Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈΠΌ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π΅Ρ‚ΠΎ ΠΎΡ‚ Microsoft Π½Π° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Rust Π·Π° Windows 0.30, ΠΊΠΎΠΈΡ‚ΠΎ Π²ΠΈ позволяват Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π΅Π·ΠΈΠΊΠ° Rust Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅ Π½Π° прилоТСния Π·Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма Windows. ΠšΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ΡŠΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π²Π° Π΄Π²Π° crate ΠΏΠ°ΠΊΠ΅Ρ‚Π° (windows ΠΈ windows-sys), Ρ‡Ρ€Π΅Π· ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Win API Π² Rust ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅. ΠšΠΎΠ΄ΡŠΡ‚ Π·Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° API сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ ΠΎΡ‚ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈ, описващи API, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π΅ само Π·Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ Win API извиквания, Π½ΠΎ ΠΈ Π·Π° извиквания, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ сС появят Π² Π±ΡŠΠ΄Π΅Ρ‰Π΅. Новата вСрсия добавя ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Ρ†Π΅Π»Π΅Π²Π°Ρ‚Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° UWP (Universal Windows Platform) ΠΈ ΠΏΡ€ΠΈΠ»Π°Π³Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Handle ΠΈ Debug.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€