ืžืขืœื“ื•ื ื’ ืคื•ืŸ ื“ื™ ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืฉืคึผืจืึทืš Rust 2021 (1.56)

ื“ื™ ืžืขืœื“ื•ื ื’ ืคื•ืŸ ื“ื™ ืกื™ืกื˜ืขื ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืฉืคึผืจืึทืš Rust 1.56, ื’ืขื’ืจื™ื ื“ืขื˜ ื“ื•ืจืš ื“ื™ ืžืึธื–ื™ืœืœืึท ืคึผืจื•ื™ืขืงื˜, ืึธื‘ืขืจ ืื™ืฆื˜ ื“ืขื•ื•ืขืœืึธืคึผืขื“ ืื•ื ื˜ืขืจ ื“ื™ ืึธื•ืกืคึผื™ืกื™ื– ืคื•ืŸ ื“ื™ ืคืจื™ื™ึท ื ืึทืŸ-ื ื•ืฅ ืึธืจื’ืึทื ื™ื–ืึทืฆื™ืข Rust Foundation, ืื™ื– ืืจื•ื™ืก. ืื™ืŸ ืึทื“ื™ืฉืึทืŸ ืฆื• ื“ื™ ืจืขื’ื•ืœืขืจ ื•ื•ืขืจืกื™ืข ื ื•ืžืขืจ, ื“ื™ ืžืขืœื“ื•ื ื’ ืื™ื– ืื•ื™ืš ื“ืขื–ื™ื’ื ื™ื™ื˜ื™ื“ ืจื•ืกื˜ 2021 ืื•ืŸ ืื™ื– ืึท ืกื˜ื™ื™ื‘ืึทืœืึทื–ื™ื™ืฉืึทืŸ ืคื•ืŸ ืขื ื“ืขืจื•ื ื’ืขืŸ ืคืืจื’ืขืœื™ื™ื’ื˜ ืื™ืŸ ื“ื™ ืœืขืฆื˜ืข ื“ืจื™ื™ ื™ืึธืจ. Rust 2021 ื•ื•ืขื˜ ืื•ื™ืš ื“ื™ื ืขืŸ ื•ื•ื™ ื“ื™ ื™ืงืขืจ ืคึฟืึทืจ ื™ื ืงืจื™ืกื™ื ื’ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ืื™ืŸ ื“ื™ ื•ื•ื™ื™ึทื˜ืขืจ ื“ืจื™ื™ ื™ืึธืจ, ืขื ืœืขืš ืฆื• ื•ื•ื™ ื“ื™ ืžืขืœื“ื•ื ื’ ืคื•ืŸ Rust 2018 ืื™ื– ื’ืขื•ื•ืืจืŸ ื“ื™ ื™ืงืขืจ ืคึฟืึทืจ ื“ืขืจ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืคื•ืŸ ื“ืขืจ ืฉืคึผืจืึทืš ืื™ืŸ ื“ื™ ืœืขืฆื˜ืข ื“ืจื™ื™ ื™ืึธืจ.

ืฆื• ื”ืึทืœื˜ืŸ ืงืึทืžืคึผืึทื˜ืึทื‘ื™ืœืึทื˜ื™, ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืงืขื ืขืŸ ื ื•ืฆืŸ "2015", "2018" ืื•ืŸ "2021" ืœืึทื‘ืขืœืก ืื™ืŸ ื–ื™ื™ืขืจ ืžื’ื™ืœื”, ืึทืœืึทื•ื™ื ื’ ืžื’ื™ืœื” ืฆื• ื–ื™ื™ืŸ ืœื™ื ื’ืงื˜ ืฆื• ืฉืคึผืจืึทืš ืฉื˜ืึทื˜ ืกืœื™ื™ืกื™ื– ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืฆื• ื“ื™ ืื•ื™ืกื’ืขืงืœื™ื‘ืŸ ืื•ื™ืกื’ืื‘ืขืก ืคื•ืŸ ืจื•ืกื˜. ืึทื“ื™ืฉืึทื ื– ื–ืขื ืขืŸ ื‘ืึทืงืขื ืขื  ืฆื• ื‘ืึทื–ื•ื ื“ืขืจ ื™ื ืงืึทืžืคึผืึทื˜ืึทื‘ืึทืœ ืขื ื“ืขืจื•ื ื’ืขืŸ ืื•ืŸ ื–ืขื ืขืŸ ืงืึทื ืคื™ื’ื™ืขืจื“ ืื™ืŸ ื“ื™ ืžืขื˜ืึทื“ืึทื˜ืึท ืคื•ืŸ ืœืึทืกื˜ ืคึผืึทืงืึทื“ื–ืฉืึทื– ื“ื•ืจืš ื“ื™ "ืึทื“ื™ืฉืึทืŸ" ืคืขืœื“ ืื™ืŸ ื“ื™ "[ืคึผืขืงืœ]" ืึธืคึผื˜ื™ื™ืœื•ื ื’. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื“ื™ "2018" ืึทื“ื™ืฉืึทืŸ ื›ื•ืœืœ ื“ื™ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ืกื˜ื™ื™ื‘ืึทืœื™ื™ื–ื“ ื–ื™ื ื˜ ื“ื™ ืกื•ืฃ ืคื•ืŸ 2018 ืื•ืŸ ืื•ื™ืš ืงืึธื•ื•ืขืจืก ืึทืœืข ื•ื•ื™ื™ึทื˜ืขืจ ืขื ื“ืขืจื•ื ื’ืขืŸ ื•ื•ืึธืก ื˜ืึธืŸ ื ื™ื˜ ื‘ืจืขื›ืŸ ืงืึทืžืคึผืึทื˜ืึทื‘ื™ืœืึทื˜ื™. ื“ื™ 2021 ืึทื“ื™ืฉืึทืŸ ืึทื“ื™ืฉื ืึทืœื™ ื™ื ืงืœื•ื“ื– ื™ื ื˜ืขืจืึธืคึผืขืจืึทื‘ื™ืœื™ื˜ื™-ื‘ืจื™ื™ืงื™ื ื’ ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ืคืืจื’ืขืœื™ื™ื’ื˜ ืื™ืŸ ื“ื™ ืงืจืึทื ื˜ 1.56 ืžืขืœื“ื•ื ื’ ืื•ืŸ ื‘ืื•ื•ื™ืœื™ืงื˜ ืคึฟืึทืจ ืฆื•ืงื•ื ืคึฟื˜ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ. ืื•ื™ืกืขืจ ื“ืขืจ ืฉืคืจืืš ื’ื•ืคื, ื ืขืžืขืŸ ื“ื™ ืจืขื“ืืงืฆื™ืข ืื•ื™ืš ืื™ืŸ ื‘ืื˜ืจืื›ื˜ ื“ืขื ืžืฆื‘ ืคื•ืŸ ื“ื™ ืžื›ืฉื™ืจื™ื ืื•ืŸ ื“ืืงื•ืžืขื ื˜ืืฆื™ืข.

ื”ื•ื™ืคึผื˜ ื™ื ืงืึทืžืคึผืึทื˜ืึทื‘ื™ืœืึทื˜ื™ื– ืจืขืงืึธืจื“ืขื“ ืื™ืŸ Rust 2021:

  • ื‘ืึทื–ื•ื ื“ืขืจ ืงืึทืคึผื˜ื•ืจืข ืื™ืŸ ืงืœืึธื•ื–ืฉืขืจื– - ืงืœืึธื•ื–ืฉืขืจื– ืงืขื ืขืŸ ืื™ืฆื˜ ื›ืึทืคึผืŸ ื™ื—ื™ื“ ืคืขืœื“ ื ืขืžืขืŸ ืึทื ืฉื˜ืึธื˜ ืคื•ืŸ ื“ื™ ื’ืื ืฆืข ืื™ื“ืขื ื˜ื™ื˜ืขื˜. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, "|| ื”ืึทืง + 1" ื•ื•ืขื˜ ื ืึธืจ ื›ืึทืคึผืŸ "ื”ืึทืง" ืึทื ืฉื˜ืึธื˜ ืคื•ืŸ "ืึท".
  • ื“ื™ IntoIterator ื˜ืจื™ื™ื˜ ืคึฟืึทืจ arrays: array.into_iter () ืึทืœืึทื•ื– ืื™ืจ ืฆื• ื™ื˜ืขืจื™ื™ื˜ ืื™ื‘ืขืจ ืžืขื ื’ืข ืขืœืขืžืขื ื˜ืŸ ื“ื•ืจืš ื•ื•ืึทืœื•ืขืก, ืืœื ื•ื•ื™ ื“ื•ืจืš ื‘ืึทื•ื•ื™ื™ึทื–ืŸ.
  • ืคึผืจืึทืกืขืกื™ื ื’ ืคื•ืŸ "|" ืื•ื™ืกื“ืจื•ืงืŸ ืื™ื– ืคืืจืขื ื“ืขืจื˜ ืื™ืŸ ืžืึทืงืจืึธื•_ืจื•ืœืขืก (Boolean OR) ืื™ืŸ ืคึผืึทื˜ืขืจื ื– - ื“ื™ ":pat" ืกืคึผืขืกื™ืคื™ืขืจ ืื™ืŸ ืฉื•ื•ืขื‘ืขืœืขืš ืื™ืฆื˜ ืจืขืกืคึผืขืงื˜ "ื | ื‘".
  • ื“ืขืจ ืœืึทืกื˜ ืคึผืขืงืœ ืคืึทืจื•ื•ืึทืœื˜ืขืจ ื™ื ืงืœื•ื“ื– ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜ ื“ื™ ืจื’ืข ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื“ื™ ืฉื˜ืจื™ืš ืจืขืกืึธืœื•ื•ืขืจ, ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื•ื•ืึธืก ืื™ื– ืืจื•ื™ืก ืื™ืŸ Rust 1.51.
  • ื“ื™ ื˜ืจื™ื™ืฅ ืคื•ืŸ TryFrom, TryInto ืื•ืŸ FromIterator ื–ืขื ืขืŸ ืฆื•ื’ืขื’ืขื‘ืŸ ืฆื• ื“ื™ ืคึผืจื™ืœื•ื“ ื ืึธืจืžืึทืœ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืžืึธื“ื•ืœืข.
  • ื“ื™ ืคึผืึทื ื™ืง!(..) ืื•ืŸ ืึทืกืขืจื˜!(ืขืงืกืคึผืจ, ..) ืžืึทืงืจืึธืก ื ื•ืฆืŸ ืื™ืฆื˜ ืฉื˜ืขื ื“ื™ืง ืคืึธืจืžืึทื˜_ืึทืจื’ืก!(..) ืฆื• ืคึฟืึธืจืžืึทื˜ ืกื˜ืจื™ื ื’ืก, ืขื ืœืขืš ืฆื• ืคึผืจื™ื ื˜ืœืŸ!().
  • ื“ื™ ืื•ื™ืกื“ืจื•ืงืŸ ident#, ident..." ืื•ืŸ ident'...' ื–ืขื ืขืŸ ืจืขื–ืขืจื•ื•ื™ืจื˜ ืื™ืŸ ื“ืขืจ ืฉืคึผืจืึทืš ืกื™ื ื˜ืึทืงืก.
  • ืืจื™ื‘ืขืจื’ืขืคืืจืŸ bare_trait_objects ืื•ืŸ ellipsis_inclusive_range_patterns ื•ื•ืึธืจื ื™ื ื’ื– ืฆื• ืขืจืจืึธืจืก.

ื ื™ื™ึท ืื™ืŸ ืจื•ืกื˜ 1.56:

  • ืื™ืŸ Cargo.toml, ืื™ืŸ ื“ื™ "[ืคึผืขืงืœ]" ืึธืคึผื˜ื™ื™ืœื•ื ื’, ื“ื™ ื–ืฉืึทื•ื•ืขืจ ื•ื•ืขืจืกื™ืข ืคืขืœื“ ืื™ื– ืฆื•ื’ืขื’ืขื‘ืŸ, ื“ื•ืจืš ื•ื•ืึธืก ืื™ืจ ืงืขื ืขืŸ ื‘ืึทืฉื˜ื™ืžืขืŸ ื“ื™ ืžื™ื ื™ืžื•ื ื’ืขืฉื˜ื™ืฆื˜ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹ื–ืฉืึทื•ื•ืขืจ ืคึฟืึทืจ ื“ื™ ืงืขืกื˜ืœ ืคึผืขืงืœ. ืื•ื™ื‘ ื“ื™ ืงืจืึทื ื˜ ื•ื•ืขืจืกื™ืข ืฉื˜ื™ืžืขืŸ ื ื™ืฉื˜ ืžื™ื˜ ื“ื™ ืกืคึผืขืกื™ืคื™ืขื“ ืคึผืึทืจืึทืžืขื˜ืขืจ, ืงืึทืจื’ืึธ ื•ื•ืขื˜ ื”ืึทืœื˜ืŸ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ืึท ื˜ืขื•ืช ืึธื ื–ืึธื’.
  • ื•ื•ืขืŸ ืžื•ืกื˜ืขืจ ื•ื•ืึธืก ืจื™ื›ื˜ืŸ ื–ื™ืš ืžื™ื˜ "ื‘ื™ื™ื ื“ื™ื ื’ @ ืžื•ืกื˜ืขืจ" ืื•ื™ืกื“ืจื•ืงืŸ, ืฉื˜ื™ืฆืŸ ืื™ื– ืฆื•ื’ืขืฉื˜ืขืœื˜ ืคึฟืึทืจ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื ืึธืš ื‘ื™ื™ื ื“ื™ื ื’ื– (ืœืžืฉืœ, "ืœืึธื–ืŸ ืžืึทื˜ืจื™ืฅ @ ืžืึทื˜ืจื™ืฅ {row_len, ..} = get_matrix ();").
  • ื ื ื™ื™ึทืข ื˜ื™ื™ืœ ืคื•ืŸ ื“ื™ API ืื™ื– ืืจื™ื‘ืขืจื’ืขืคืืจืŸ ืฆื• ื“ืขืจ ืงืึทื˜ืขื’ืึธืจื™ืข ืคื•ืŸ โ€‹โ€‹ืกื˜ืึทื‘ื™ืœ, ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ื“ื™ ืžืขื˜ื”ืึธื“ืก ืื•ืŸ ื™ืžืคึผืœืึทืžืึทื ืฅ ืคื•ืŸ ื˜ืจื™ื™ืฅ ื–ืขื ืขืŸ ืกื˜ื™ื™ื‘ืึทืœื™ื™ื–ื“:
    • std::os::unix::fs::chroot
    • UnsafeCell::raw_get
    • BufWriter::into_parts
    • core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • Vec::shrink_to
    • ืฉื˜ืจื™ืงืœ::shrink_to
    • OsString::shink_to
    • PathBuf::shrink_to
    • BinaryHeap::shrink_to
    • VecDeque::shrink_to
    • HashMap::shrink_to
    • HashSet :: shrink_to
  • ื“ื™ "ืงืึธื ืกื˜" ืึทื˜ืจื™ื‘ื™ื•ื˜, ื•ื•ืึธืก ื“ื™ื˜ืขืจืžืึทื ื– ื“ื™ ืžืขื’ืœืขื›ืงื™ื™ื˜ ืคื•ืŸ ื ื™ืฆืŸ ืื™ืŸ ืงื™ื™ืŸ ืงืึธื ื˜ืขืงืกื˜ ืึทื ืฉื˜ืึธื˜ ืคื•ืŸ ืงืึทื ืกื˜ืึทื ืฅ, ืื™ื– ื’ืขื ื™ืฆื˜ ืื™ืŸ ืคืึทื ื’ืงืฉืึทื ื–
    • std::mem::transmute
    • [ื”] :: ืขืจืฉื˜ืขืจ
    • [ื”]::ืกืคึผืœื™ื˜_ืคื™ืจืกื˜
    • [ื”]:: ืœืขืฆื˜ืข
    • [ื”]::ืกืคึผืœื™ื˜_ืœืึทืกื˜
  • ื“ืขืจ ืงืึทืžืคึผื™ื™ืœืขืจ ืื™ื– ืกื•ื•ื™ื˜ืฉื˜ ืฆื• ื ื•ืฆืŸ LLVM ื•ื•ืขืจืกื™ืข 13.
  • ื ืฆื•ื•ื™ื™ื˜ืข ืžื“ืจื’ื” ืคื•ืŸ ืฉื˜ื™ืฆืŸ ืื™ื– ื™ืžืคึผืœืึทืžืขื ืึทื“ ืคึฟืึทืจ ื“ื™ aarch64-apple-ios-sim ืคึผืœืึทื˜ืคืึธืจืžืข ืื•ืŸ ืึท ื“ืจื™ื˜ ืžื“ืจื’ื” ืคึฟืึทืจ ื“ื™ powerpc-unknown-freebsd ืื•ืŸ riscv32imc-esp-espidf ืคึผืœืึทื˜ืคืึธืจืžืก. ื“ื™ ื“ืจื™ื˜ ืžื“ืจื’ื” ื™ื ื•ื•ืึทืœื•ื•ื– ื™ืงืขืจื“ื™ืง ืฉื˜ื™ืฆืŸ, ืึธื‘ืขืจ ืึธืŸ ืึธื˜ืึทืžื™ื™ื˜ื™ื“ ื˜ืขืกื˜ื™ื ื’, ืืจื•ื™ืกื’ืขื‘ืŸ ื‘ืึทืึทืžื˜ืขืจ ื‘ื•ื™ืขืŸ ืึธื“ืขืจ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืฆื™ ื“ื™ ืงืึธื“ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื‘ื•ื™ื˜.

ืฆื•ืจื™ืงืจื•ืคืŸ ืึทื– ืจื•ืกื˜ ืคืึธื•ืงื™ืกื™ื– ืื•ื™ืฃ ื–ื›ึผืจื•ืŸ ื–ื™ื›ืขืจืงื™ื™ึทื˜, ื’ื™ื˜ ืึธื˜ืึทืžืึทื˜ื™ืง ื–ื›ึผืจื•ืŸ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ืื•ืŸ ื’ื™ื˜ ื“ื™ ืžื™ื˜ืœ ืฆื• ื“ืขืจื’ืจื™ื™ื›ืŸ ื”ื•ื™ืš ืคึผืึทืจืึทืœืขืœื™ื–ืึทื ืื™ืŸ ืึทืจื‘ืขื˜ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืึธืŸ ื ื™ืฆืŸ ืึท ืžื™ืกื˜ ืงืึทืœืขืงื˜ืขืจ ืึธื“ืขืจ ืจื•ื ื˜ื™ืžืข (ืจื•ื ื˜ื™ืžืข ืื™ื– ืจื™ื“ื•ืกื˜ ืฆื• ื™ืงืขืจื“ื™ืง ื™ื ื™ื˜ื™ืึทืœื™ื–ื™ื™ืฉืึทืŸ ืื•ืŸ ื•ื™ืฉืึทืœื˜ ืคื•ืŸ ื“ื™ ื ืึธืจืžืึทืœ ื‘ื™ื‘ืœื™ืึธื˜ืขืง).

ืจื•ืกื˜ ืก ืึธื˜ืึทืžืึทื˜ื™ืง ื–ื›ึผืจื•ืŸ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ืกืึทื•ื•ืขืก ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจ ืคื•ืŸ ืขืจืจืึธืจืก ื•ื•ืขืŸ ืžืึทื ื™ืคึผื™ืึทืœื™ื™ื˜ื™ื ื’ ืคึผื•ื™ื ื˜ืขืจื– ืื•ืŸ ืคึผืจืึทื˜ืขืงืฅ ืงืขื’ืŸ ืคืจืื‘ืœืขืžืขืŸ ื•ื•ืึธืก ืฉื˜ื™ื™ืขืŸ ืจืขื›ื˜ ืฆื• ื ื™ื“ืขืจื™ืง-ืžื“ืจื’ื” ื–ื›ึผืจื•ืŸ ืžืึทื ื™ืคึผื™ืึทืœื™ื™ืฉืึทืŸ, ืึทื–ืึท ื•ื•ื™ ืึทืงืกืขืก ืึท ื–ื›ึผืจื•ืŸ ื’ืขื’ื ื˜ ื ืึธืš ื‘ืืคืจื™ื™ื˜, ื“ืขืจืคื™ืจืึทื ืกื™ื ื’ ื ืึทืœ ืคึผื•ื™ื ื˜ืขืจื–, ื‘ืึทืคืขืจ ืึธื•ื•ื•ืขืจืจืึทื ื–, ืขื˜ืง. ืฆื• ืคืึทืจืฉืคึผืจื™ื™ื˜ืŸ ืœื™ื™ื‘ืจืขืจื™ื–, ืฆื•ืฉื˜ืขืœืŸ ื‘ื•ื™ืขืŸ ืื•ืŸ ืคื™ืจืŸ ื“ื™ืคึผืขื ื“ืึทื ืกื™ื–, ื“ื™ ืคึผืจื•ื™ืขืงื˜ ื“ืขื•ื•ืขืœืึธืคึผืก ื“ื™ ืงืึทืจื’ืึธ ืคึผืขืงืœ ืคืึทืจื•ื•ืึทืœื˜ืขืจ. ื“ื™ crates.io ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืื™ื– ื’ืขืฉื˜ื™ืฆื˜ ืคึฟืึทืจ ื”ืึธืกื˜ื™ื ื’ ืœื™ื™ื‘ืจืขืจื™ื–.

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

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’