Rust 1.47 рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдкреНрд░рдХрд╛рд╢рди

рдкреНрд░рдХрд╛рд╢рд┐рдд рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ 1.47 рд░рд┐рд▓реАрдЬ рдХрд░рд╛ рдЧрдВрдЬ, Mozilla рдкреНрд░рдХрд▓реНрдкрд╛рджреНрд╡рд╛рд░реЗ рд╕реНрдерд╛рдкрд┐рдд. рднрд╛рд╖рд╛ рдореЗрдорд░реА рд╕реБрд░рдХреНрд╖рд┐рддрддреЗрд╡рд░ рд▓рдХреНрд╖ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ, рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдореЗрдорд░реА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рдЖрдгрд┐ рди рд╡рд╛рдкрд░рддрд╛ рдЙрдЪреНрдЪ рдХрд╛рд░реНрдп рд╕рдорд╛рдВрддрд░рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рдЪреЗ рд╕рд╛рдзрди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рдХрдЪрд░рд╛ рдЧреЛрд│рд╛ рдХрд░рдгрд╛рд░рд╛ ╨╕ рд░рдирдЯрд╛рдЗрдо (рд╕реНрдЯрдБрдбрд░реНрдб рд▓рд╛рдпрдмреНрд░рд░реАрдЪреНрдпрд╛ рдореВрд▓рднреВрдд рдЖрд░рдВрдн рдЖрдгрд┐ рджреЗрдЦрднрд╛рд▓ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд░рдирдЯрд╛рдЗрдо рдЙрдХрд│рддреЛ).

рд░рд╕реНрдЯрдЪреЗ рдСрдЯреЛрдореЕрдЯрд┐рдХ рдореЗрдорд░реА рдореЕрдиреЗрдЬрдореЗрдВрдЯ рдкреЙрдЗрдВрдЯрд░рдордзреНрдпреЗ рдлреЗрд░рдлрд╛рд░ рдХрд░рддрд╛рдирд╛ рддреНрд░реБрдЯреА рджреВрд░ рдХрд░рддреЗ рдЖрдгрд┐ рд▓реЛ-рд▓реЗрд╡реНрд╣рд▓ рдореЗрдорд░реА рдореЕрдирд┐рдкреНрдпреБрд▓реЗрд╢рдирдореБрд│реЗ рдЙрджреНрднрд╡рдгрд╛рд▒реНрдпрд╛ рд╕рдорд╕реНрдпрд╛рдВрдкрд╛рд╕реВрди рд╕рдВрд░рдХреНрд╖рдг рдХрд░рддреЗ, рдЬрд╕реЗ рдХреА рдореЗрдорд░реА рд░рд┐рдЬрди рдореЛрдХрд│реЗ рдЭрд╛рд▓реНрдпрд╛рдирдВрддрд░ рддреНрдпрд╛рдд рдкреНрд░рд╡реЗрд╢ рдХрд░рдгреЗ, рдирд▓ рдкреЙрдЗрдВрдЯрд░ рдбрд┐рд░реЗрдлрд░рдиреНрд╕, рдмрдлрд░ рдУрд╡реНрд╣рд░рд░рдиреНрд╕ рдЗ. рдЧреНрд░рдВрдерд╛рд▓рдпрд╛рдВрдЪреЗ рд╡рд┐рддрд░рдг, рдЕрд╕реЗрдВрдмрд▓реА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдкреНрд░рдХрд▓реНрдкрд╛рджреНрд╡рд╛рд░реЗ рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреЕрдХреЗрдЬ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рдд рдЖрд╣реЗ. рдорд╛рд▓рд╡рд╛рд╣реВ. рд▓рд╛рдпрдмреНрд░рд░реА рд╣реЛрд╕реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рд╕рдорд░реНрдерд┐рдд рдЖрд╣реЗ crates.io.

рдореБрдЦреНрдп рдирд╡рдХрд▓реНрдкрдирд╛:

  • рдкреНрд░рдХрд╛рд░рд╛рдВрд╕рд╛рдареА рд▓рд╛рдЧреВ рдХреЗрд▓реЗрд▓реЗ рд╕рдорд░реНрдерди рдЕреЕрд░реЗ рдХреЛрдгрддрд╛рд╣реА рдЖрдХрд╛рд░. рдкреВрд░реНрд╡реА, рд╕рд░реНрд╡ рдкреВрд░реНрдгрд╛рдВрдХ рдореВрд▓реНрдпрд╛рдВрд╕рд╛рдареА рдЬреЗрдиреЗрд░рд┐рдХ рдлрдВрдХреНрд╢рдиреНрд╕ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгреНрдпрд╛рдд рдЕрдХреНрд╖рдорддреЗрдореБрд│реЗ, рдорд╛рдирдХ рд▓рд╛рдпрдмреНрд░рд░реАрдиреЗ рдХреЗрд╡рд│ рдЖрдХрд╛рд░рд╛рддреАрд▓ 32 рдШрдЯрдХрд╛рдВрдкрд░реНрдпрдВрддрдЪреНрдпрд╛ рдЕреЕрд░реЗрд╕рд╛рдареА рдЕрдВрдЧрднреВрдд рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХреЗрд▓реЗ рд╣реЛрддреЗ (рдкреНрд░рддреНрдпреЗрдХ рдЖрдХрд╛рд░рд╛рдЪреЗ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рд╕реНрдерд┐рд░рдкрдгреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реЗ рд╣реЛрддреЗ). рд╕реНрдерд┐рд░ рдЬреЗрдиреЗрд░рд┐рдХ ("рдХреЙрдиреНрд╕реНрдЯ рдЬреЗрдиреЗрд░рд┐рдХреНрд╕") рдЪреНрдпрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдЪреНрдпрд╛ рдирд┐рд░реНрдорд┐рддреАрдмрджреНрджрд▓ рдзрдиреНрдпрд╡рд╛рдж, рдХреЛрдгрддреНрдпрд╛рд╣реА рдЕреЕрд░реЗ рдЖрдХрд╛рд░рд╛рд╕рд╛рдареА рдЬреЗрдиреЗрд░рд┐рдХ рдлрдВрдХреНрд╢рдиреНрд╕ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгреЗ рд╢рдХреНрдп рдЭрд╛рд▓реЗ, рдкрд░рдВрддреБ рддреЗ рдЕрджреНрдпрд╛рдк рд╕реНрдерд┐рд░ рднрд╛рд╖рд╛ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдордзреНрдпреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реЗ рдирд╛рд╣реАрдд, рдЬрд░реА рддреЗ рдХрдВрдкрд╛рдЗрд▓рд░рдордзреНрдпреЗ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд рдЖрдгрд┐ рдЖрд╣реЗрдд. рдЖрддрд╛ рд╕рд╣рднрд╛рдЧреА рдХреЛрдгрддреНрдпрд╛рд╣реА рдЖрдХрд╛рд░рд╛рдЪреНрдпрд╛ рдЕреЕрд░реЗ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрд╕рд╛рдареА рдорд╛рдирдХ рд▓рд╛рдпрдмреНрд░рд░реАрдордзреНрдпреЗ.

    рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, Rust 1.47 рдордзреАрд▓ рдЦрд╛рд▓реАрд▓ рд░рдЪрдирд╛ рдЕреЕрд░реЗрдЪреА рд╕рд╛рдордЧреНрд░реА рдореБрджреНрд░рд┐рдд рдХрд░реЗрд▓, рдЬрд░реА рдкреВрд░реНрд╡реА рддреНрдпрд╛рдЪрд╛ рдкрд░рд┐рдгрд╛рдо рдЭрд╛рд▓рд╛ рдЕрд╕рддрд╛:

    fn main() {
    let xs = [0; 34];

    println!("{:?}", xs);
    }

  • рд▓рд╣рд╛рди рдЯреНрд░реЗрд╕ (рдмреЕрдХрдЯреНрд░реЗрд╕), рдЖрдгреАрдмрд╛рдгреАрдЪреНрдпрд╛ рдкрд░рд┐рд╕реНрдерд┐рддреАрдд рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗ. рдмрд╣реБрддреЗрдХ рдкрд░рд┐рд╕реНрдерд┐рддреАрдВрдордзреНрдпреЗ рд╕реНрд╡рд╛рд░рд╕реНрдп рдирд╕рд▓реЗрд▓реЗ рдШрдЯрдХ, рдкрд░рдВрддреБ рдЖрдЙрдЯрдкреБрдЯрдордзреНрдпреЗ рдЧреЛрдВрдзрд│ рдШрд╛рд▓рддрд╛рдд рдЖрдгрд┐ рд╕рдорд╕реНрдпреЗрдЪреНрдпрд╛ рдкреНрд░рд╛рдердорд┐рдХ рдХрд╛рд░рдгрд╛рдВрдкрд╛рд╕реВрди рд▓рдХреНрд╖ рд╡рд┐рдЪрд▓рд┐рдд рдХрд░рддрд╛рдд, рддреНрдпрд╛рдВрдирд╛ рдЯреНрд░реЗрд╕рдордзреВрди рд╡рдЧрд│рдгреНрдпрд╛рдд рдЖрд▓реЗ рдЖрд╣реЗ. рдкреВрд░реНрдг рдЯреНрд░реЗрд╕ рдкрд░рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ "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 рдХрдВрдкрд╛рдЗрд▓рд░ рд╡рд╛рдкрд░реВрди рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрджреНрдпрддрдирд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ рдПрд▓рдПрд▓рд╡реНрд╣реАрдПрдо 11 (рдЧрдВрдЬ рд╡рд╛рдкрд░рддреЗ рд╕рд╛рдареА рдмреЕрдХрдПрдВрдб рдореНрд╣рдгреВрди LLVM рдХреЛрдб рдирд┐рд░реНрдорд┐рддреА). рддреНрдпрд╛рдЪ рд╡реЗрд│реА, рдЬреБрдиреНрдпрд╛ LLVM рд╕рд╣ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛, рдЖрд╡реГрддреНрддреА 8 рдкрд░реНрдпрдВрдд, рдХрд╛рдпрдо рдареЗрд╡рд▓реА рдЬрд╛рддреЗ, рдкрд░рдВрддреБ рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ (рдордзреНрдпреЗ rust-lang/llvm-project) рдЖрддрд╛ LLVM 11 рд╡рд╛рдкрд░рдд рдЖрд╣реЗ. LLVM 11 рдпреЗрддреНрдпрд╛ рдХрд╛рд╣реА рджрд┐рд╡рд╕рд╛рдд рд░рд┐рд▓реАрдЬ рд╣реЛрдгреНрдпрд╛рдЪреА рдЕрдкреЗрдХреНрд╖рд╛ рдЖрд╣реЗ.
  • Windows рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╡рд░, rustc рдХрдВрдкрд╛рдЗрд▓рд░ рдХрдВрдЯреНрд░реЛрд▓ рдлреНрд▓реЛ рдЗрдВрдЯрд┐рдЧреНрд░рд┐рдЯреА рдЪреЗрдХ (рдХрдВрдЯреНрд░реЛрд▓ рдлреНрд▓реЛ рдЧрд╛рд░реНрдб) рд╕рдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдкреБрд░рд╡рддреЛ, рдЬреЛ тАЬ-C рдХрдВрдЯреНрд░реЛрд▓-рдлреНрд▓реЛ-рдЧрд╛рд░реНрдбтАЭ рдлреНрд▓реЕрдЧ рд╡рд╛рдкрд░реВрди рд╕рдХреНрд░рд┐рдп рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рдЗрддрд░ рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╡рд░ рд╣рд╛ рдзреНрд╡рдЬ рд╕рдзреНрдпрд╛ рджреБрд░реНрд▓рдХреНрд╖рд┐рдд рдЖрд╣реЗ.
  • рдПрдкреАрдЖрдпрдЪрд╛ рдПрдХ рдирд╡реАрди рднрд╛рдЧ рд╕реНрдерд┐рд░ рд╢реНрд░реЗрдгреАрдордзреНрдпреЗ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ, рдЬреНрдпрд╛рдордзреНрдпреЗ рд╕реНрдерд┐рд░реАрдХрд░рдг рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ
    рдУрд│рдЦ::new_raw,
    рд╢реНрд░реЗрдгреА::is_empty,
    рд░реЗрдВрдЬрд╕рдорд╛рд╡реЗрд╢рдХ::is_empty,
    рдкрд░рд┐рдгрд╛рдо::as_deref,
    рдкрд░рд┐рдгрд╛рдо::as_deref_mut,
    Vec::рдЧрд│рддреА,
    рд╕реВрдЪрдХ::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_uppercase, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace рдЖрдгрд┐ utascii_con_8 рдкреНрд░рдХрд╛рд░рд╛рдВрд╕рд╛рдареА рдЖрд╣реЗ.
  • FreeBSD рд╕рд╛рдареА рд╕рд╣рднрд╛рдЧреА FreeBSD 11.4 рд╡рд░реВрди рдЯреВрд▓рдХрд┐рдЯ (FreeBSD 10 LLVM 11 рд▓рд╛ рд╕рдорд░реНрдерди рджреЗрдд рдирд╛рд╣реА).

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛