ืฉื—ืจื•ืจ ืฉืคืช ืชื›ื ื•ืช Rust 1.58

ืคื•ืจืกื ืฉื—ืจื•ืจ ืฉืคืช ื”ืชื›ื ื•ืช ืœืžื˜ืจื•ืช ื›ืœืœื™ื•ืช Rust 1.58, ืฉื ื•ืกื“ื” ืขืœ ื™ื“ื™ ืคืจื•ื™ืงื˜ ืžื•ื–ื™ืœื”, ืืš ื›ืขืช ืคื•ืชื—ื” ื‘ื—ืกื•ืช ื”ืขืžื•ืชื” ื”ืขืฆืžืื™ืช Rust Foundation. ื”ืฉืคื” ืžืชืžืงื“ืช ื‘ื‘ื˜ื™ื—ื•ืช ื–ื™ื›ืจื•ืŸ, ืžืกืคืงืช ื ื™ื”ื•ืœ ื–ื™ื›ืจื•ืŸ ืื•ื˜ื•ืžื˜ื™, ื•ืžืกืคืงืช ืืช ื”ืืžืฆืขื™ื ืœื”ืฉื’ืช ืžืงื‘ื™ืœื™ื•ืช ืžืฉื™ืžื•ืช ื’ื‘ื•ื”ื” ืœืœื ืฉื™ืžื•ืฉ ื‘ืืกืคืŸ ืืฉืคื” ืื• ื–ืžืŸ ืจื™ืฆื” (ื–ืžืŸ ื”ืจื™ืฆื” ืžืฆื˜ืžืฆื ืœืืชื—ื•ืœ ื•ืชื—ื–ื•ืงื” ื‘ืกื™ืกื™ื™ื ืฉืœ ื”ืกืคืจื™ื™ื” ื”ืกื˜ื ื“ืจื˜ื™ืช).

ื ื™ื”ื•ืœ ื”ื–ื™ื›ืจื•ืŸ ื”ืื•ื˜ื•ืžื˜ื™ ืฉืœ Rust ืžื‘ื˜ืœ ืฉื’ื™ืื•ืช ื‘ืขืช ืžื ื™ืคื•ืœืฆื™ื” ืฉืœ ืžืฆื‘ื™ืขื™ื ื•ืžื’ืŸ ืžืคื ื™ ื‘ืขื™ื•ืช ื”ื ื•ื‘ืขื•ืช ืžืžื ื™ืคื•ืœืฆื™ื” ืฉืœ ื–ื™ื›ืจื•ืŸ ื‘ืจืžื” ื ืžื•ื›ื”, ื›ื’ื•ืŸ ื’ื™ืฉื” ืœืื–ื•ืจ ื–ื™ื›ืจื•ืŸ ืœืื—ืจ ืฉื—ืจื•ืจื•, ื”ืคื ื™ื™ืช ืžืฆื‘ื™ืข ืืคืกื™ืช, ื—ืจื™ื’ื•ืช ืžืื’ืจ ื•ื›ื•'. ื›ื“ื™ ืœื”ืคื™ืฅ ืกืคืจื™ื•ืช, ืœื”ื‘ื˜ื™ื— ื”ืจื›ื‘ื” ื•ืœื ื”ืœ ืชืœื•ืช, ื”ืคืจื•ื™ืงื˜ ืžืคืชื— ืืช ืžื ื”ืœ ื”ื—ื‘ื™ืœื•ืช Cargo. ืžืื’ืจ crates.io ื ืชืžืš ืœืื™ืจื•ื— ืกืคืจื™ื•ืช.

ื—ื™ื“ื•ืฉื™ื ืขื™ืงืจื™ื™ื:

  • ื‘ื‘ืœื•ืงื™ื ืฉืœ ืขื™ืฆื•ื‘ ืฉื•ืจื”, ื‘ื ื•ืกืฃ ืœื™ื›ื•ืœืช ื”ื–ืžื™ื ื” ื‘ืขื‘ืจ ืœื”ื—ืœื™ืฃ ืžืฉืชื ื™ื ื”ืจืฉื•ืžื™ื ื‘ืžืคื•ืจืฉ ืื—ืจื™ ืฉื•ืจื” ืœืคื™ ืžืกืคืจ ื•ืฉื, ืžื™ื•ืฉืžืช ื”ื™ื›ื•ืœืช ืœื”ื—ืœื™ืฃ ืžื–ื”ื™ื ืฉืจื™ืจื•ืชื™ื™ื ืขืœ ื™ื“ื™ ื”ื•ืกืคืช ื”ื‘ื™ื˜ื•ื™ "{ืžื–ื”ื”}" ืœืฉื•ืจื”. ืœื“ื•ื’ืžื”: // ืงื•ื ืกื˜ืจื•ืงืฆื™ื•ืช ืฉื ืชืžื›ื• ื‘ืขื‘ืจ: println!("ืฉืœื•ื, {}!", get_person()); println!("ืฉืœื•ื, {0}!", get_person()); println!("ืฉืœื•ื, {person}!", person = get_person()); // ืขื›ืฉื™ื• ืืชื” ื™ื›ื•ืœ ืœืฆื™ื™ืŸ let person = get_person(); println!("ืฉืœื•ื, {ืื“ื}!");

    ื ื™ืชืŸ ื’ื ืœืฆื™ื™ืŸ ืžื–ื”ื™ื ื™ืฉื™ืจื•ืช ื‘ืืคืฉืจื•ื™ื•ืช ื”ืขื™ืฆื•ื‘. let (ืจื•ื—ื‘, ื“ื™ื•ืง) = get_format(); ืขื‘ื•ืจ (ืฉื, ื ื™ืงื•ื“) ื‘-get_scores() { println!("{name}: {score:width$.precision$}"); }

    ื”ื”ื—ืœืคื” ื”ื—ื“ืฉื” ืคื•ืขืœืช ื‘ื›ืœ ืคืงื•ื“ื•ืช ื”ืžืืงืจื• ื”ืชื•ืžื›ื•ืช ื‘ื”ื’ื“ืจืช ืคื•ืจืžื˜ ืžื—ืจื•ื–ืช, ืœืžืขื˜ ื”ืžืืงืจื• "ืคืื ื™ืงื”!". ื‘ื’ืจืกืื•ืช 2015 ื•-2018 ืฉืœ ืฉืคืช Rust, ืฉื‘ื” ืžืชื™ื™ื—ืกื™ื ืœืคืื ื™ืงื”!("{ident}") ื›ืžื—ืจื•ื–ืช ืจื’ื™ืœื” (ื‘-Rust 2021 ื”ื”ื—ืœืคื” ืขื•ื‘ื“ืช).

  • ื”ื”ืชื ื”ื’ื•ืช ืฉืœ ืžื‘ื ื” ื”ืคืงื•ื“ื” std::process:: ื‘ืคืœื˜ืคื•ืจืžืช Windows ืฉื•ื ืชื” ื›ืš ืฉื‘ืขืช ื‘ื™ืฆื•ืข ืคืงื•ื“ื•ืช, ืžืกื™ื‘ื•ืช ืื‘ื˜ื—ื”, ื”ื•ื ืœื ืžื—ืคืฉ ืขื•ื“ ืงื‘ืฆื™ ื”ืคืขืœื” ื‘ืกืคืจื™ื™ื” ื”ื ื•ื›ื—ื™ืช. ื”ืกืคืจื™ื™ื” ื”ื ื•ื›ื—ื™ืช ืื™ื ื” ื ื›ืœืœืช ืžื›ื™ื•ื•ืŸ ืฉื”ื™ื ืขืฉื•ื™ื” ืœืฉืžืฉ ืœื‘ื™ืฆื•ืข ืงื•ื“ ื–ื“ื•ื ื™ ืื ืชื•ื›ื ื™ื•ืช ืžื•ืคืขืœื•ืช ื‘ืกืคืจื™ื•ืช ืœื ืžื”ื™ืžื ื•ืช (CVE-2021-3013). ื”ื”ื™ื’ื™ื•ืŸ ื”ื—ื“ืฉ ืฉืœ ื–ื™ื”ื•ื™ ื”ื”ืคืขืœื” ื›ื•ืœืœ ื—ื™ืคื•ืฉ ื‘ืกืคืจื™ื•ืช Rust, ืกืคืจื™ื™ืช ื”ื™ื™ืฉื•ืžื™ื, ืกืคืจื™ื™ืช ืžืขืจื›ืช Windows ื•ื”ืกืคืจื™ื•ืช ื”ืžืฆื•ื™ื ื•ืช ื‘ืžืฉืชื ื” ื”ืกื‘ื™ื‘ื” PATH.
  • ื”ืกืคืจื™ื™ื” ื”ืกื˜ื ื“ืจื˜ื™ืช ื”ืจื—ื™ื‘ื” ืืช ืžืกืคืจ ื”ืคื•ื ืงืฆื™ื•ืช ื”ืžืกื•ืžื ื•ืช "#[must_use]" ื›ื“ื™ ืœื”ื ืคื™ืง ืื–ื”ืจื” ืื ืžืชืขืœืžื™ื ืžืขืจืš ื”ื”ื—ื–ืจื”, ืžื” ืฉืขื•ื–ืจ ืœื–ื”ื•ืช ืฉื’ื™ืื•ืช ื”ื ื’ืจืžื•ืช ืžื”ื ื—ื” ืฉืคื•ื ืงืฆื™ื” ืชืฉื ื” ืขืจื›ื™ื ื‘ืžืงื•ื ืœื”ื—ื–ื™ืจ ืขืจืš ื—ื“ืฉ.
  • ื—ืœืง ื—ื“ืฉ ืฉืœ ื”-API ื”ื•ืขื‘ืจ ืœืงื˜ื’ื•ืจื™ื” ืฉืœ ื™ืฆื™ื‘, ื›ื•ืœืœ ื”ืฉื™ื˜ื•ืช ื•ื”ื™ื™ืฉื•ื ืฉืœ ืชื›ื•ื ื•ืช ื”ืชื™ื™ืฆื‘ื•:
    • Metadata::is_symlink
    • ื ืชื™ื‘::is_symlink
    • {integer}::saturating_div
    • Option::unwrap_unchecked
    • ืชื•ืฆืื”::unwrap_unchecked
    • ืชื•ืฆืื”::unwrap_err_unchecked
  • ื”ืชื›ื•ื ื” "const", ื”ืงื•ื‘ืขืช ืืช ื”ืืคืฉืจื•ืช ืœื”ืฉืชืžืฉ ื‘ื” ื‘ื›ืœ ื”ืงืฉืจ ื‘ืžืงื•ื ื‘ืงื‘ื•ืขื™ื, ืžืฉืžืฉืช ื‘ืคื•ื ืงืฆื™ื•ืช:
    • Duration::new
    • 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 (Control Flow Integrity), ื”ืžื•ืกื™ืฃ ื‘ื“ื™ืงื•ืช ืœืคื ื™ ื›ืœ ืงืจื™ืื” ืขืงื™ืคื” ื›ื“ื™ ืœื–ื”ื•ืช ื›ืžื” ืฆื•ืจื•ืช ืฉืœ ื”ืชื ื”ื’ื•ืช ืœื ืžื•ื’ื“ืจืช ืฉืขืœื•ืœื” ืœื”ื•ื‘ื™ืœ ืœื”ืคืจื” ืฉืœ ื”ื•ืจืืช ื”ื‘ื™ืฆื•ืข ื”ืจื’ื™ืœื” (ื–ืจื™ืžืช ื‘ืงืจื”) ื›ืชื•ืฆืื” ืžื”- ืฉื™ืžื•ืฉ ื‘ื ื™ืฆื•ืœื™ื ืฉืžืฉื ื™ื ืžืฆื‘ื™ืขื™ื ื”ืžืื•ื—ืกื ื™ื ื‘ื–ื™ื›ืจื•ืŸ ืขืœ ืคื•ื ืงืฆื™ื•ืช.
  • ื”ืžื”ื“ืจ ื”ื•ืกื™ืฃ ืชืžื™ื›ื” ื‘ื’ืจืกืื•ืช 5 ื•-6 ืฉืœ ืคื•ืจืžื˜ ื”ืฉื•ื•ืืช ื”ื›ื™ืกื•ื™ LLVM, ื”ืžืฉืžืฉ ืœื”ืขืจื›ืช ื›ื™ืกื•ื™ ื”ืงื•ื“ ื‘ืžื”ืœืš ื”ื‘ื“ื™ืงื”.
  • ื‘ืžื”ื“ืจ, ื”ื“ืจื™ืฉื•ืช ืœื’ืจืกื” ื”ืžื™ื ื™ืžืœื™ืช ืฉืœ LLVM ืžื•ืขืœื•ืช ืœ-LLVM 12.
  • ื”ืจืžื” ื”ืฉืœื™ืฉื™ืช ืฉืœ ืชืžื™ื›ื” ื‘ืคืœื˜ืคื•ืจืžืช x86_64-unknown-none ื”ื•ื˜ืžืขื”. ื”ืจืžื” ื”ืฉืœื™ืฉื™ืช ื›ื•ืœืœืช ืชืžื™ื›ื” ื‘ืกื™ืกื™ืช, ืืš ืœืœื ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช, ืคืจืกื•ื ื‘ื•ื ื™ื ืจืฉืžื™ื™ื ืื• ื‘ื“ื™ืงื” ืื ื ื™ืชืŸ ืœื‘ื ื•ืช ืืช ื”ืงื•ื“.

ื‘ื ื•ืกืฃ, ืื ื• ื™ื›ื•ืœื™ื ืœืฆื™ื™ืŸ ืืช ื”ืคืจืกื•ื ืขืœ ื™ื“ื™ ืžื™ืงืจื•ืกื•ืคื˜ ืฉืœ ื”ื•ืฆืืช ืกืคืจื™ื•ืช Rust for Windows 0.30, ื”ืžืืคืฉืจื•ืช ืœืš ืœื”ืฉืชืžืฉ ื‘ืฉืคืช Rust ื›ื“ื™ ืœืคืชื— ื™ื™ืฉื•ืžื™ื ืขื‘ื•ืจ ืžืขืจื›ืช ื”ื”ืคืขืœื” Windows. ื”ืกื˜ ื›ื•ืœืœ ืฉืชื™ ื—ื‘ื™ืœื•ืช ืืจื’ื– (windows ื•- windows-sys), ื“ืจื›ืŸ ื ื™ืชืŸ ืœื’ืฉืช ืœ-Win API ื‘ืชื•ื›ื ื™ื•ืช Rust. ืงื•ื“ ืœืชืžื™ื›ื” ื‘-API ื ื•ืฆืจ ื‘ืื•ืคืŸ ื“ื™ื ืžื™ ืžืžื˜ื ื ืชื•ื ื™ื ื”ืžืชืืจื™ื ืืช ื”-API, ืžื” ืฉืžืืคืฉืจ ืœื™ื™ืฉื ืชืžื™ื›ื” ืœื ืจืง ืขื‘ื•ืจ ืงืจื™ืื•ืช ืงื™ื™ืžื•ืช ืฉืœ Win API, ืืœื ืขื‘ื•ืจ ืงืจื™ืื•ืช ืฉื™ื•ืคื™ืขื• ื‘ืขืชื™ื“. ื”ื’ืจืกื” ื”ื—ื“ืฉื” ืžื•ืกื™ืคื” ืชืžื™ื›ื” ื‘ืคืœื˜ืคื•ืจืžืช ื”ื™ืขื“ UWP (Universal Windows Platform) ื•ืžื™ื™ืฉืžืช ืืช ืกื•ื’ื™ ื”- Handle ื•-Debug.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”