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

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

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

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

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

fn main() {
ืชืŸ xs = [0; 34];
println!("{:?}", xs);
}

  • ืžืกื•ืคืง ืคืœื˜ ืฉืœ ืขืงื‘ื•ืช ืงืฆืจื•ืช ื™ื•ืชืจ (backtrace), ืคืœื˜ ื‘ืžืฆื‘ื™ ื—ื™ืจื•ื. ืืœืžื ื˜ื™ื ืฉืื™ื ื ืžืขื ื™ื™ื ื™ื ื‘ืจื•ื‘ ื”ืžืฆื‘ื™ื, ืืš ืžื‘ืœื‘ืœื™ื ืืช ื”ืคืœื˜ ื•ืžืกื™ื—ื™ื ืืช ืชืฉื•ืžืช ื”ืœื‘ ืžื”ื’ื•ืจืžื™ื ื”ืขื™ืงืจื™ื™ื ืœื‘ืขื™ื”, ืื™ื ื ื ื›ืœืœื™ื ื‘ืžืขืงื‘. ื›ื“ื™ ืœื”ื—ื–ื™ืจ ืžืขืงื‘ ืžืœื, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืžืฉืชื ื” ื”ืกื‘ื™ื‘ื” "RUST_BACKTRACE=full". ืœื“ื•ื’ืžื”, ืขื‘ื•ืจ ื”ืงื•ื“

fn main() {
ื‘ื”ืœื”!();
}

ื‘ืขื‘ืจ, ื”ืžืขืงื‘ ื”ื•ืคืง ื‘-23 ืฉืœื‘ื™ื, ืืš ื›ืขืช ื”ื•ื ื™ืฆื˜ืžืฆื ืœ-3 ืฉืœื‘ื™ื, ืžื” ืฉื™ืืคืฉืจ ืœื›ื ืœืชืคื•ืก ืžื™ื“ ืืช ื”ืžื”ื•ืช:

ื”ืฉืจืฉื•ืจ 'ืจืืฉื™' ื ื›ื ืก ืœืคืื ื™ืงื” ืž'ืคืื ื™ืงื” ืžืคื•ืจืฉืช', src/main.rs:2:5
ืžื—ืกื ื™ืช ืื—ื•ืจื”:
0: std::panicking::begin_panic
ื‘ื›ืชื•ื‘ืช /rustc/dโ€ฆd75a/library/std/src/panicking.rs:497
1: ืžื’ืจืฉ ืžืฉื—ืงื™ื::ืจืืฉื™
ื‘ื›ืชื•ื‘ืช ./src/main.rs:2
2: core::ops::function::FnOnce::call_once
ื‘ื›ืชื•ื‘ืช /rustc/dโ€ฆd75a/library/core/src/ops/function.rs:227

  • ืžื”ื“ืจ rustc ืขื•ื“ื›ืŸ ืœื‘ื ื™ื™ื” ื‘ืืžืฆืขื•ืช LLVM 11 (Rust ืžืฉืชืžืฉ ื‘-LLVM ื›-backend ืœื™ืฆื™ืจืช ืงื•ื“). ื™ื—ื“ ืขื ื–ืืช, ื”ื™ื›ื•ืœืช ืœื‘ื ื•ืช ืขื LLVM ื™ืฉืŸ, ืขื“ ื’ืจืกื” 8, ื ืฉืžืจืช, ืืš ื›ื‘ืจื™ืจืช ืžื—ื“ืœ (ื‘-rust-lang/llvm-project) ื ืขืฉื” ืฉื™ืžื•ืฉ ื›ืขืช ื‘-LLVM 11. ื”ืฉื—ืจื•ืจ ืฉืœ LLVM 11 ืฆืคื•ื™ ื‘ืงืจื•ื‘ ื™ืžื™ื.
  • ื‘ืคืœื˜ืคื•ืจืžืช Windows, ืžื”ื“ืจ rustc ืžืกืคืง ืชืžื™ื›ื” ืœื”ืคืขืœืช ื‘ื“ื™ืงื•ืช ืฉืœืžื•ืช ื–ืจื™ืžืช ื‘ืงืจื” (Control Flow Guard), ื”ืžื•ืคืขืœ ื‘ืืžืฆืขื•ืช ื“ื’ืœ "-C control-flow-guard". ื‘ืคืœื˜ืคื•ืจืžื•ืช ืื—ืจื•ืช ืžืชืขืœืžื™ื ืžื”ื“ื’ืœ ื”ื–ื” ืœืขืช ืขืชื”.
  • ื—ืœืง ื—ื“ืฉ ืฉืœ ื”-API ื”ื•ืขื‘ืจ ืœืงื˜ื’ื•ืจื™ื” ื”ื™ืฆื™ื‘ื”, ื›ื•ืœืœ ื™ื™ืฆื•ื‘ Ident::new_raw, Range::is_empty, RangeInclusive::is_empty, Result::as_deref, Result::as_deref_mut, Vec::leak, pointer::offset_from , f32:: TAU ื•- f64::TAU.
  • ื”ืชื›ื•ื ื” "const", ื”ืงื•ื‘ืขืช ืืช ื”ืืคืฉืจื•ืช ืœื”ืฉืชืžืฉ ื‘ื” ื‘ื›ืœ ื”ืงืฉืจ ื‘ืžืงื•ื ื‘ืงื‘ื•ืขื™ื, ืžืฉืžืฉืช ื‘ืฉื™ื˜ื•ืช:
    • ื—ื“ืฉ ืขื‘ื•ืจ ื›ืœ ื”ืžืกืคืจื™ื ื”ืฉืœืžื™ื ืžืœื‘ื“ ืืคืก;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub ื•-saturating_mul ืขื‘ื•ืจ ื›ืœ ื”ืžืกืคืจื™ื ื”ืฉืœืžื™ื;
    • is_ascii_alphabetic, is_ascii_perctuation, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_ืคื™ืกื•ืง, is_ascii_graphic, is_ascii_whitespace ื•-is_ascii_types for .
  • ืขื‘ื•ืจ FreeBSD, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ืขืจื›ืช ื”ื›ืœื™ื ืž-FreeBSD 11.4 (FreeBSD 10 ืื™ื ื• ืชื•ืžืš ื‘-LLVM 11).

ื ืœืงื— ืž OpenNet.ru

ืžืงื•ืจ: linux.org.ru

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