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

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

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

  • LLVM 11 рд╡рд╛рдкрд░реВрди рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА rustc рдХрдВрдкрд╛рдЗрд▓рд░ рдЕрджреНрдпрдпрд╛рд╡рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ (рдХреЛрдб рдирд┐рд░реНрдорд┐рддреАрд╕рд╛рдареА рд░рд╕реНрдЯ LLVM рдмреЕрдХрдПрдВрдб рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рддреЗ). рддреНрдпрд╛рдЪ рд╡реЗрд│реА, рдЬреБрдиреНрдпрд╛ LLVM рд╕рд╣ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛, рдЖрд╡реГрддреНрддреА 8 рдкрд░реНрдпрдВрдд, рдХрд╛рдпрдо рдареЗрд╡рд▓реА рдЬрд╛рддреЗ, рдкрд░рдВрддреБ рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ (rust-lang/llvm-project рдордзреНрдпреЗ) LLVM 11 рдЖрддрд╛ рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ. LLVM 11 рдЪреЗ рдкреНрд░рдХрд╛рд╢рди рдпреЗрддреНрдпрд╛ рдХрд╛рд│рд╛рдд рдЕрдкреЗрдХреНрд╖рд┐рдд рдЖрд╣реЗ. рджрд┐рд╡рд╕
  • Windows рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╡рд░, rustc рдХрдВрдкрд╛рдЗрд▓рд░ рдХрдВрдЯреНрд░реЛрд▓ рдлреНрд▓реЛ рдЗрдВрдЯрд┐рдЧреНрд░рд┐рдЯреА рдЪреЗрдХ (рдХрдВрдЯреНрд░реЛрд▓ рдлреНрд▓реЛ рдЧрд╛рд░реНрдб) рд╕рдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдкреБрд░рд╡рддреЛ, рдЬреЛ тАЬ-C рдХрдВрдЯреНрд░реЛрд▓-рдлреНрд▓реЛ-рдЧрд╛рд░реНрдбтАЭ рдлреНрд▓реЕрдЧ рд╡рд╛рдкрд░реВрди рд╕рдХреНрд░рд┐рдп рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рдЗрддрд░ рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╡рд░ рд╣рд╛ рдзреНрд╡рдЬ рд╕рдзреНрдпрд╛ рджреБрд░реНрд▓рдХреНрд╖рд┐рдд рдЖрд╣реЗ.
  • API рдЪрд╛ рдПрдХ рдирд╡реАрди рднрд╛рдЧ рд╕реНрдерд┐рд░ рд╢реНрд░реЗрдгреАрдордзреНрдпреЗ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ, рдЬреНрдпрд╛рдордзреНрдпреЗ рд╕реНрдерд┐рд░ рдУрд│рдЦ::new_raw, рд╢реНрд░реЗрдгреА::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_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

рд╕реНрддреНрд░реЛрдд: linux.org.ru

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