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

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

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

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

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

  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืกื•ื’ื™ื ืžืฉื•ื™ื›ื™ื ื’ื ืจื™ื™ื (GAT, Generic Associated Types), ื”ืžืืคืฉืจื™ื ืœื™ืฆื•ืจ ื›ื™ื ื•ื™ื™ ื˜ื™ืคื•ืก ื”ืžืฉื•ื™ื›ื™ื ืœืกื•ื’ ืื—ืจ ื•ืžืืคืฉืจื™ื ืœืฉื™ื™ืš ื‘ื•ื ื™ ื˜ื™ืคื•ืกื™ื ืœืชื›ื•ื ื•ืช. ืชื›ื•ื ื” Foo { ืกื•ื’ Bar; }
  • ื”ื‘ื™ื˜ื•ื™ "ืชืŸ ... else" ื™ื•ืฉื, ื•ืžืืคืฉืจ ืœืš ืœื‘ื“ื•ืง ืืช ืชื ืื™ ื”ืชืืžืช ื”ื“ืคื•ืก ื™ืฉื™ืจื•ืช ื‘ืชื•ืš ื”ื‘ื™ื˜ื•ื™ "ืœืชืช" ื•ืœื”ืคืขื™ืœ ืงื•ื“ ืฉืจื™ืจื•ืชื™ ืื ื”ื“ืคื•ืก ืื™ื ื• ืชื•ืื. let Ok(count) = u64::from_str(count_str) else { panic!("ืœื ื ื™ืชืŸ ืœื ืชื— ืžืกืคืจ ืฉืœื: '{count_str}'"); };
  • ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ื”ืฆื”ืจืช break ื›ื“ื™ ืœืฆืืช ืžื‘ืœื•ืงื™ื ืขื ืฉื ื‘ื˜ืจื ืขืช, ืชื•ืš ืฉื™ืžื•ืฉ ื‘ืฉื ื”ื‘ืœื•ืง (ืชื•ื•ื™ืช) ื›ื“ื™ ืœื–ื”ื•ืช ืืช ื”ื‘ืœื•ืง ืฉื™ืฉ ืœืกื™ื™ื. let result = 'block: { do_thing(); if condition_not_met() { break 'block 1; } do_next_thing(); if condition_not_met() { break 'block 2; } do_last_thing(); 3};
  • ืขื‘ื•ืจ ืœื™ื ื•ืงืก, ื ื•ืกืคื” ื”ื™ื›ื•ืœืช ืœืฉืžื•ืจ ื‘ื ืคืจื“ ืžื™ื“ืข ืื™ืชื•ืจ ื‘ืื’ื™ื (split-debuginfo), ืฉื–ืžื™ื ื” ื‘ืขื‘ืจ ืจืง ืขื‘ื•ืจ ืคืœื˜ืคื•ืจืžืช macOS. ื‘ืขืช ืฆื™ื•ืŸ ื”ืืคืฉืจื•ืช "-Csplit-debuginfo=unpacked", ื ืชื•ื ื™ debuginfo ื‘ืคื•ืจืžื˜ DWARF ื™ื™ืฉืžืจื• ื‘ื›ืžื” ืงื‘ืฆื™ ืื•ื‘ื™ื™ืงื˜ ื ืคืจื“ื™ื ืขื ืกื™ื•ืžืช ".dwo". ืฆื™ื•ืŸ "-Csplit-debuginfo=packed" ืชื™ืฆื•ืจ ื—ื‘ื™ืœื” ื‘ื•ื“ื“ืช ื‘ืคื•ืจืžื˜ ".dwp" ื”ื›ื•ืœืœืช ืืช ื›ืœ ื ืชื•ื ื™ debuginfo ืขื‘ื•ืจ ื”ืคืจื•ื™ืงื˜. ื›ื“ื™ ืœืฉืœื‘ debuginfo ื™ืฉื™ืจื•ืช ื‘ืžืงื˜ืข .debug_* ืฉืœ ืื•ื‘ื™ื™ืงื˜ื™ ELF, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืืคืฉืจื•ืช "-Csplit-debuginfo=off".
  • ื—ืœืง ื—ื“ืฉ ืฉืœ ื”-API ื”ื•ืขื‘ืจ ืœืงื˜ื’ื•ืจื™ื” ืฉืœ ื™ืฆื™ื‘, ื›ื•ืœืœ ื”ืฉื™ื˜ื•ืช ื•ื”ื™ื™ืฉื•ื ืฉืœ ืชื›ื•ื ื•ืช ื”ืชื™ื™ืฆื‘ื•:
    • std::backtrace::Backtrace
    • ืงืฉื•ืจ::as_ref
    • std::io::read_to_string
    • ::cast_mut
    • ::cast_const
  • ื”ืชื›ื•ื ื” "const", ื”ืงื•ื‘ืขืช ืืช ื”ืืคืฉืจื•ืช ืœื”ืฉืชืžืฉ ื‘ื” ื‘ื›ืœ ื”ืงืฉืจ ื‘ืžืงื•ื ื‘ืงื‘ื•ืขื™ื, ืžืฉืžืฉืช ื‘ืคื•ื ืงืฆื™ื•ืช ::offset_from ื•-::offset_from
  • ื›ื—ืœืง ืžื”ืฉืœื‘ ื”ืกื•ืคื™ ืฉืœ ื”ืขื‘ืจืช ื”ื™ื™ืฉื•ื ืฉืœ ืคืจื•ื˜ื•ืงื•ืœ LSP (Language Server Protocol) ืœ-rust-analyzer, ื”ื™ื™ืฉื•ื ื”ืžื™ื•ืฉืŸ ืฉืœ Rust Language Server (RLS) ื”ื•ื—ืœืฃ ื‘ืฉืจืช ืกื˜ืื‘ ืฉืžื•ืฆื™ื ืื–ื”ืจื” ืขื ื”ืฆืขื” ืœืขื‘ื•ืจ ืืœ. ื‘ืืžืฆืขื•ืช ืžื ืชื— ื—ืœื•ื“ื”.
  • ื‘ืžื”ืœืš ื”ืงื•ืžืคื™ืœืฆื™ื”, ืžื•ืคืขืœืช ืชืžื™ื›ื” ื‘ืคืจื™ืกื” ืžื•ื˜ื‘ืขืช ืฉืœ ืงื•ื“ ื‘ื™ื ื™ื™ื MIR, ืžื” ืฉืžืื™ืฅ ืืช ื”ืงื•ืžืคื™ืœืฆื™ื” ืฉืœ ื—ื‘ื™ืœื•ืช ืืจื’ื– ื˜ื™ืคื•ืกื™ื•ืช ื‘-3-10%.
  • ื›ื“ื™ ืœื”ืื™ืฅ ืืช ื”ื‘ื ื™ื™ื” ื”ืžืชื•ื–ืžื ืช, ืžื ื”ืœ ื—ื‘ื™ืœื•ืช Cargo ืžืกืคืง ืžื™ื•ืŸ ืฉืœ ืขื‘ื•ื“ื•ืช ื”ืžืžืชื™ื ื•ืช ืœื‘ื™ืฆื•ืข ื‘ืชื•ืจ.

ื‘ื ื•ืกืฃ, ืืชื” ื™ื›ื•ืœ ืœืฆื™ื™ืŸ ืืช ื”ืจืื™ื•ืŸ ืขืœ ื”ืฉื™ืžื•ืฉ ื‘ืฉืคืช Rust ื‘ื•ื•ืœื•ื• ืœืคื™ืชื•ื— ืจื›ื™ื‘ื™ื ืฉืœ ืžืขืจื›ื•ืช ืžื™ื“ืข ืœืจื›ื‘. ืื™ืŸ ืชื•ื›ื ื™ื•ืช ืœืฉื›ืชื‘ ืงื•ื“ ืงื™ื™ื ื•ื ื‘ื“ืง ื‘-Rust, ืืš ืขื‘ื•ืจ ืงื•ื“ ื—ื“ืฉ, Rust ื”ื™ื ืื—ืช ื”ืืคืฉืจื•ื™ื•ืช ื”ืžื•ืขื“ืคื•ืช ืœืฉื™ืคื•ืจ ื”ืื™ื›ื•ืช ื‘ืขืœื•ื™ื•ืช ื ืžื•ื›ื•ืช ื™ื•ืชืจ. ืงื‘ื•ืฆื•ืช ืขื‘ื•ื“ื” ื”ืงืฉื•ืจื•ืช ืœืฉื™ืžื•ืฉ ื‘ืฉืคืช Rust ื ื•ืฆืจื• ื’ื ื‘ืขืžื•ืชื•ืช ื”ืจื›ื‘ AUTOSAR (AUTomotive Open System ARchitecture) ื•-SAE (Society of Automotive Engineers).

ื‘ื ื•ืกืฃ, ื“ื™ื•ื•ื™ื“ ืงืœื™ื™ื“ืจืžืื›ืจ, ืกื’ืŸ ื ืฉื™ื ืœื”ื ื“ืกื” ืฉืœ ื’ื•ื’ืœ, ื“ื™ื‘ืจ ืขืœ ืชืจื’ื•ื ื”ืงื•ื“ ื”ืžืฉืžืฉ ื‘ืคืœื˜ืคื•ืจืžืช ืื ื“ืจื•ืื™ื“ ืœื ื™ื”ื•ืœ ืžืคืชื—ื•ืช ื”ืฆืคื ื” ืœ-Rust, ื•ื›ืŸ ืขืœ ื”ืฉื™ืžื•ืฉ ื‘-Rust ื‘ื”ื˜ืžืขืช ืคืจื•ื˜ื•ืงื•ืœ DNS over HTTPS ื‘ืžื—ืกื ื™ืช. ืขื‘ื•ืจ ืฉื‘ื‘ื™ UWB- (Ultra-Wideband) ื•ื‘ืžืกื’ืจืช ื”ื•ื™ืจื˜ื•ืืœื™ื–ืฆื™ื” (Android Virtualization Framework) ื”ืงืฉื•ืจื” ืœืฉื‘ื‘ Tensor G2. ืขืจื™ืžื•ืช ื—ื“ืฉื•ืช ืœ-Bluetooth ื•-Wi-Fi, ืฉื ื›ืชื‘ื• ืžื—ื“ืฉ ื‘-Rust, ืžืคื•ืชื—ื•ืช ื’ื ืœืื ื“ืจื•ืื™ื“. ื”ืืกื˜ืจื˜ื’ื™ื” ื”ื›ืœืœื™ืช ื”ื™ื ืœื—ื–ืง ื‘ื”ื“ืจื’ื” ืืช ื”ืื‘ื˜ื—ื”, ืชื—ื™ืœื” ืขืœ ื™ื“ื™ ื”ืžืจืช ืจื›ื™ื‘ื™ ื”ืชื•ื›ื ื” ื”ืคื’ื™ืขื™ื ื•ื”ื—ื™ื•ื ื™ื™ื ื‘ื™ื•ืชืจ ืœ-Rust, ื•ืœืื—ืจ ืžื›ืŸ ื”ืจื—ื‘ื” ืœืชืชื™ ืžืขืจื›ื•ืช ืงืฉื•ืจื•ืช ืื—ืจื•ืช. ื‘ืฉื ื” ืฉืขื‘ืจื”, ืฉืคืช Rust ื ื›ืœืœื” ื‘ืจืฉื™ืžืช ื”ืฉืคื•ืช ื”ืžื•ืชืจื•ืช ืœืคื™ืชื•ื— ืคืœื˜ืคื•ืจืžืช ืื ื“ืจื•ืื™ื“.

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

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