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

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

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

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

  • ื”ืฉื™ืžื•ืฉ ื‘ืžืืงืจื• "ืคืื ื™ืงื”!" ื™ื•ืฆื‘. ื‘ื”ืงืฉืจื™ื ืฉื ื•ืฆืจื• ื‘ืžื”ืœืš ื”ืงื•ืžืคื™ืœืฆื™ื”, ื›ื’ื•ืŸ ื”ืฆื”ืจื•ืช "const fn". ื‘ื ื•ืกืฃ, ื‘ื ื•ืกืฃ ืœืฉื™ืžื•ืฉ ื‘"ืคืื ื™ืงื”!" ื”ืฆื”ืจื•ืช const ืžืืคืฉืจื•ืช ืฉื™ืžื•ืฉ ื‘ืžืืงืจื• "assert!". ื•ืขื•ื“ ื›ืžื” ืžืžืฉืงื™ API ืกื˜ื ื“ืจื˜ื™ื™ื ืฉืœ ืกืคืจื™ื™ื”. ื”ืชื™ื™ืฆื‘ื•ืช ืขื“ื™ื™ืŸ ืœื ืžื›ืกื” ืืช ื›ืœ ืชืฉืชื™ืช ื”ืขื™ืฆื•ื‘, ื›ืš ืฉื‘ืฆื•ืจืชื• ื”ื ื•ื›ื—ื™ืช ื”ืžืืงืจื• "ืคืื ื™ืงื”!" ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ืจืง ืขื ืžื—ืจื•ื–ื•ืช ืกื˜ื˜ื™ื•ืช (ืคืื ื™ืง!("...")) ืื• ืขื ืขืจืš ืื™ื ื˜ืจืคื•ืœืฆื™ื” ื™ื—ื™ื“ "&str" ื‘ืขืช ื”ื—ืœืคื” (ืคืื ื™ืง!("{}", a)), ืฉืืžื•ืจ ืœื”ื™ื•ืช ืžื•ื’ื‘ืœ ืœื”ื—ืœืคืช "{ }" ืœืœื ืžืคืจื˜ื™ ืขื™ืฆื•ื‘ ื•ืกื•ื’ื™ื ืื—ืจื™ื. ื‘ืขืชื™ื“ ืชืชืจื—ื‘ ื”ื™ืฉื™ืžื•ืช ืฉืœ ืคืงื•ื“ื•ืช ืžืืงืจื• ื‘ื”ืงืฉืจื™ื ืงื‘ื•ืขื™ื, ืืš ื”ื™ื›ื•ืœื•ืช ื”ืžื™ื•ืฆื‘ื•ืช ื›ื‘ืจ ืžืกืคื™ืงื•ืช ืœื‘ื™ืฆื•ืข ื‘ื“ื™ืงื•ืช ื˜ืขื ื” ื‘ืฉืœื‘ ื”ืงื•ืžืคื™ืœืฆื™ื”: const _: () = assert!(std::mem::size_of:: () == 64); const _: () = assert!(std::mem::size_of:: () == 8);
  • ืžื ื”ืœ ื”ื—ื‘ื™ืœื•ืช ืฉืœ Cargo ืžืืคืฉืจ ืฉื™ืžื•ืฉ ื‘ืคืจื•ืคื™ืœื™ื ื‘ืขืœื™ ืฉืžื•ืช ืฉืจื™ืจื•ืชื™ื™ื, ืœื ืžื•ื’ื‘ืœ ืœ-"dev", "release", "test" ื•-"bench". ืœื“ื•ื’ืžื”, ื›ื“ื™ ืœืืคืฉืจ ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ื‘ืฉืœื‘ ื”ืงื™ืฉื•ืจ (LTO) ืจืง ื›ืืฉืจ ืžื›ืœื•ืœ ื”ืžื•ืฆืจ ื”ืกื•ืคื™ ื ื•ืฆืจ, ื ื™ืชืŸ ืœื™ืฆื•ืจ ืคืจื•ืคื™ืœ "ื™ื™ืฆื•ืจ" ื‘-Cargo.toml ื•ืœื”ื•ืกื™ืฃ ืœื• ืืช ื”ื“ื’ืœ "lto = true". ืขื ื–ืืช, ื‘ืขืช ื”ื’ื“ืจืช ืคืจื•ืคื™ืœื™ื ืžืฉืœืš, ืขืœื™ืš ืœืฆื™ื™ืŸ ืคืจื•ืคื™ืœ ืงื™ื™ื ื›ื“ื™ ืœืจืฉืช ืืช ื”ื’ื“ืจื•ืช ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืžืžื ื•. ื”ื“ื•ื’ืžื” ืœื”ืœืŸ ื™ื•ืฆืจืช ืคืจื•ืคื™ืœ "ื”ืคืงื”" ื”ืžืฉืœื™ื ืืช ืคืจื•ืคื™ืœ ื”"ื”ืคืฆื”" ืขืœ ื™ื“ื™ ื”ื›ืœืœืช ื”ื“ื’ืœ "lto = true". ื”ืคืจื•ืคื™ืœ ืขืฆืžื• ืžื•ืคืขืœ ืขืœ ื™ื“ื™ ืงืจื™ืื” ืœืžื˜ืขืŸ ืขื ืืคืฉืจื•ืช "--profile production", ื•ื—ืคืฆื™ ื”ื”ืจื›ื‘ื” ื™ืžื•ืงืžื• ื‘ืกืคืจื™ื™ืช "ื™ืขื“/ื™ื™ืฆื•ืจ". [profile.production] inherits = "release" lto = true
  • ื™ื•ืฆื‘ ื”ืฉื™ืžื•ืฉ ื‘-try_reserve ืœืกื•ื’ื™ื Vec, String, HashMap, HashSet ื•-VecDeque, ืžื” ืฉืžืืคืฉืจ ืœืฉืžื•ืจ ืžืงื•ื ืžืจืืฉ ืœืžืกืคืจ ืžืกื•ื™ื ืฉืœ ืืœืžื ื˜ื™ื ืžืกื•ื’ ื ืชื•ืŸ ืขืœ ืžื ืช ืœื”ืคื—ื™ืช ืืช ืชื“ื™ืจื•ืช ืคืขื•ืœื•ืช ื”ืงืฆืืช ื”ื–ื™ื›ืจื•ืŸ ื•ืœื”ื™ืžื ืข ืงื•ืจืก ื‘ืžื”ืœืš ื”ืคืขื•ืœื” ืขืงื‘ ื—ื•ืกืจ ื–ื™ื›ืจื•ืŸ.
  • ืžื•ืชืจ ืœืฆื™ื™ืŸ ืคืงื•ื“ื•ืช ืžืืงืจื• ืขื ืกื•ื’ืจื™ื ืžืกื•ืœืกืœื™ื ื‘ื‘ื™ื˜ื•ื™ื™ื ื›ืžื• "m!{ .. }.method()" ื•-"m!{ ..}?".
  • ื”ื‘ื™ืฆื•ืข ืฉืœ ื”ืคื•ื ืงืฆื™ื•ืช File::read_to_end ื•-read_to_string ืขื‘ืจ ืื•ืคื˜ื™ืžื™ื–ืฆื™ื”.
  • ื”ืชืžื™ื›ื” ื‘ืžืคืจื˜ Unicode ืขื•ื“ื›ื ื” ืœื’ืจืกื” 14.0.
  • ื”ืจื—ื™ื‘ ืืช ืžืกืคืจ ื”ืคื•ื ืงืฆื™ื•ืช ื”ืžืกื•ืžื ื•ืช "#[must_use]" ื›ื“ื™ ืœื”ื ืคื™ืง ืื–ื”ืจื” ืื ืžืชืขืœืžื™ื ืžืขืจืš ื”ื”ื—ื–ืจื”, ืžื” ืฉืขื•ื–ืจ ืœื–ื”ื•ืช ืฉื’ื™ืื•ืช ื”ื ื’ืจืžื•ืช ืžื”ื ื—ื” ืฉืคื•ื ืงืฆื™ื” ืชืฉื ื” ืขืจื›ื™ื ื‘ืžืงื•ื ืœื”ื—ื–ื™ืจ ืขืจืš ื—ื“ืฉ.
  • ื ื•ืกืฃ backend ื ื™ืกื™ื•ื ื™ ืœื™ืฆื™ืจืช ืงื•ื“ ื‘ืืžืฆืขื•ืช libgccjit.
  • ื—ืœืง ื—ื“ืฉ ืฉืœ ื”-API ื”ื•ืขื‘ืจ ืœืงื˜ื’ื•ืจื™ื” ืฉืœ ื™ืฆื™ื‘, ื›ื•ืœืœ ื”ืฉื™ื˜ื•ืช ื•ื”ื™ื™ืฉื•ื ืฉืœ ืชื›ื•ื ื•ืช ื”ืชื™ื™ืฆื‘ื•:
    • [ืช; N]::as_mut_slice
    • [ืช; N]::as_slice
    • collections::TryReserveError
    • HashMap::try_reserve
    • HashSet::try_reserve
    • ืžื—ืจื•ื–ืช::try_reserve
    • ืžื—ืจื•ื–ืช::try_reserve_exact
    • Vec::try_reserve
    • Vec::try_reserve_exact
    • VecDeque::try_reserve
    • VecDeque::try_reserve_exact
    • Iterator::map_while
    • iter::MapWhile
    • proc_macro::is_available
    • Command::get_program
    • Command::get_args
    • Command::get_envs
    • Command::get_current_dir
    • CommandArgs
    • CommandEnvs
  • ื”ืชื›ื•ื ื” "const", ืฉืงื•ื‘ืขืช ืื ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื” ื‘ื›ืœ ื”ืงืฉืจ ื‘ืžืงื•ื ื‘ืงื‘ื•ืขื™ื, ืžืฉืžืฉืช ื‘ืจืžื– ื”ืคื•ื ืงืฆื™ื”::unreachable_unchecked.
  • ืจืžืช ื”ืชืžื™ื›ื” ื”ืฉืœื™ืฉื™ืช ื™ื•ืฉืžื” ืขื‘ื•ืจ armv6k-nintendo-3ds, armv7-unknown-linux-uclibceabihf, m68k-unknown-linux-gnu, aarch64-kmc-solid_asp3, armv7a-kmc-solid_asp3-eabi ื•-armv7a-kmc- ืคืœื˜ืคื•ืจืžื•ืช solid_asp3-eabihf. ื”ืจืžื” ื”ืฉืœื™ืฉื™ืช ื›ื•ืœืœืช ืชืžื™ื›ื” ื‘ืกื™ืกื™ืช, ืืš ืœืœื ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช, ืคืจืกื•ื ื‘ื•ื ื™ื ืจืฉืžื™ื™ื ืื• ื‘ื“ื™ืงื” ืื ื ื™ืชืŸ ืœื‘ื ื•ืช ืืช ื”ืงื•ื“.

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

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