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

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

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

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

  • ื”ื˜ืžืขื” ืชืžื™ื›ื” ืขื‘ื•ืจ ืกื•ื’ื™ื ืžืขืจื›ื™ื ื›ืœ ืžื™ื“ื”. ื‘ืขื‘ืจ, ื‘ืฉืœ ื—ื•ืกืจ ื”ื™ื›ื•ืœืช ืœื”ื’ื“ื™ืจ ืคื•ื ืงืฆื™ื•ืช ื’ื ืจื™ื•ืช ืขื‘ื•ืจ ื›ืœ ื”ืขืจื›ื™ื ื”ืฉืœืžื™ื, ื”ืกืคืจื™ื™ื” ื”ืกื˜ื ื“ืจื˜ื™ืช ืกื™ืคืงื” ืชืžื™ื›ื” ืžื•ื‘ื ื™ืช ื‘ืชื›ื•ื ื•ืช ืจืง ืขื‘ื•ืจ ืžืขืจื›ื™ื ื‘ื’ื•ื“ืœ ืฉืœ ืขื“ 32 ืืœืžื ื˜ื™ื (ื”ืชื›ื•ื ื•ืช ืœื›ืœ ื’ื•ื“ืœ ื”ื•ื’ื“ืจื• ืกื˜ื˜ื™ืช). ื”ื•ื“ื•ืช ืœื™ืฆื™ืจืช ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืฉืœ ื’ื ืจื™ื•ืช ืงื‘ื•ืขื•ืช ("const generics"), ื ื™ืชืŸ ื”ื™ื” ืœื”ื’ื“ื™ืจ ืคื•ื ืงืฆื™ื•ืช ื’ื ืจื™ื•ืช ืœื›ืœ ื’ื•ื“ืœ ืžืขืจืš, ืืš ื”ืŸ ืขื“ื™ื™ืŸ ืื™ื ืŸ ื ื›ืœืœื•ืช ื‘ืชื›ื•ื ื•ืช ื”ืฉืคื” ื”ื™ืฆื™ื‘ื•ืช, ืœืžืจื•ืช ืฉื”ืŸ ืžื™ื•ืฉืžื•ืช ื‘ืžื”ื“ืจ ื•ื”ืŸ. ืขึทื›ืฉืึธื™ื• ืžึฐืขื•ึผืจึธื‘ ื‘ืกืคืจื™ื™ื” ื”ืกื˜ื ื“ืจื˜ื™ืช ืขื‘ื•ืจ ืชื›ื•ื ื•ืช ืžืขืจืš ื‘ื›ืœ ื’ื•ื“ืœ.

    ืœื“ื•ื’ืžื”, ื”ืžื‘ื ื” ื”ื‘ื ื‘-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 (ื—ึฒืœื•ึผื“ึธื” ะธัะฟะพะปัŒะทัƒะตั‚ LLVM ื›-backend ืขื‘ื•ืจ ื™ืฆื™ืจืช ืงื•ื“). ื™ื—ื“ ืขื ื–ืืช, ื”ื™ื›ื•ืœืช ืœื‘ื ื•ืช ืขื LLVMs ื™ืฉื ื™ื ื™ื•ืชืจ, ืขื“ ื’ืจืกื” 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,
    ืชื•ืฆืื”::as_deref,
    ืชื•ืฆืื”::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

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