рд░рд╕реНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛ 1.66 рд░рд┐рд▓реАрдЬ

Rust 1.66 рд╕рд╛рдорд╛рдиреНрдп-рдЙрджреНрджреЗрд╢реНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛рдХреЛ рд░рд┐рд▓реАрдЬ, Mozilla рдкрд░рд┐рдпреЛрдЬрдирд╛ рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдкрд┐рдд, рддрд░ рдЕрдм рд╕реНрд╡рддрдиреНрддреНрд░ рдЧреИрд░-рд▓рд╛рднрдХрд╛рд░реА рд╕рдВрд╕реНрдерд╛ рд░рд╕реНрдЯ рдлрд╛рдЙрдиреНрдбреЗрд╕рдирдХреЛ рд╕рдВрд░рдХреНрд╖рдгрдорд╛ рд╡рд┐рдХрд╕рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ, рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫред рднрд╛рд╖рд╛рд▓реЗ рдореЗрдореЛрд░реА рд╕реБрд░рдХреНрд╖рд╛рдорд╛ рдлреЛрдХрд╕ рдЧрд░реНрдЫ рд░ рдлреЛрд╣реЛрд░ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрдиреЗ рд░ рд░рдирдЯрд╛рдЗрдордХреЛ рдкреНрд░рдпреЛрдЧрд▓рд╛рдИ рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрджреИ рдЙрдЪреНрдЪ рдХрд╛рдордХреЛ рд╕рдорд╛рдирд╛рдиреНрддрд░рддрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗ рдорд╛рдзреНрдпрдо рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ (рд░рдирдЯрд╛рдЗрдорд▓рд╛рдИ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпрдХреЛ рдЖрдзрд╛рд░рднреВрдд рдкреНрд░рд╛рд░рдореНрдн рд░ рдорд░реНрдорддрдорд╛ рдШрдЯрд╛рдЗрдиреНрдЫ)ред

рд░рд╕реНрдЯрдХреЛ рдореЗрдореЛрд░реА рд╣реНрдпрд╛рдиреНрдбрд▓рд┐рдВрдЧ рд╡рд┐рдзрд┐рд╣рд░реВрд▓реЗ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд▓рд╛рдИ рдкреЛрдЗрдиреНрдЯрд░реНрд╕ рд╣реЗрд░рдлреЗрд░ рдЧрд░реНрджрд╛ рддреНрд░реБрдЯрд┐рд╣рд░реВрдмрд╛рдЯ рдмрдЪрд╛рдЙрдБрдЫ рд░ рдирд┐рдореНрди-рд╕реНрддрд░рдХреЛ рдореЗрдореЛрд░реА рд╣реНрдпрд╛рдиреНрдбрд▓рд┐рдЩрдХрд╛ рдХрд╛рд░рдг рдЙрддреНрдкрдиреНрди рд╣реБрдиреЗ рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдмрд╛рдЯ рдЬреЛрдЧрд╛рдЙрдБрдЫ, рдЬрд╕реНрддреИ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░рд▓рд╛рдИ рдЦрд╛рд▓реА рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐ рдкрд╣реБрдБрдЪ рдЧрд░реНрдиреЗ, рдирд▓ рдкреЛрдЗрдиреНрдЯрд╣рд░реВ, рдмрдлрд░ рдУрднрд░рд░рдиреНрд╕, рдЗрддреНрдпрд╛рджрд┐ред рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ рд╡рд┐рддрд░рдг рдЧрд░реНрди, рдирд┐рд░реНрдорд╛рдгрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрди рд░ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди, рдкрд░рд┐рдпреЛрдЬрдирд╛рд▓реЗ рдХрд╛рд░реНрдЧреЛ рдкреНрдпрд╛рдХреЗрдЬ рдкреНрд░рдмрдиреНрдзрдХ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрджрдЫред crates.io рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерд┐рдд рдЫред

рдореЗрдореЛрд░реА рд╕реБрд░рдХреНрд╖рд╛ рд╕рдиреНрджрд░реНрдн рдЬрд╛рдБрдЪ, рд╡рд╕реНрддреБ рд╕реНрд╡рд╛рдорд┐рддреНрд╡рдХреЛ рдЯреНрд░реНрдпрд╛рдХ рд░рд╛рдЦреНрдиреЗ, рд╡рд╕реНрддреБ рдЬреАрд╡рдирдХрд╛рд▓ (рд╕реНрдХреЛрдкрд╣рд░реВ) рдХреЛ рдЯреНрд░реНрдпрд╛рдХ рд░рд╛рдЦреНрдиреЗ, рд░ рдХреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рдХреНрд░рдордорд╛ рдореЗрдореЛрд░реА рдкрд╣реБрдБрдЪрдХреЛ рд╢реБрджреНрдзрддрд╛ рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реЗрд░ рдХрдореНрдкрд╛рдЗрд▓ рд╕рдордпрдорд╛ рд░рд╕реНрдЯрдорд╛ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдиреНрдЫред Rust рд▓реЗ рдкреВрд░реНрдгрд╛рдВрдХ рдУрднрд░рдлреНрд▓реЛрд╣рд░реВ рд╡рд┐рд░реБрджреНрдз рд╕реБрд░рдХреНрд╖рд╛ рдкрдирд┐ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рдЕрдШрд┐ рдЪрд░ рдорд╛рдирд╣рд░реВрдХреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рдкреНрд░рд╛рд░рдореНрднрд┐рдХрддрд╛ рдЖрд╡рд╢реНрдпрдХ рдЫ, рддреНрд░реБрдЯрд┐рд╣рд░реВрд▓рд╛рдИ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпрдорд╛ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрджрдЫ, рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕рдиреНрджрд░реНрднрд╣рд░реВ рд░ рдЪрд░рд╣рд░реВрдХреЛ рдЕрд╡рдзрд╛рд░рдгрд╛ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫ, рддрд╛рд░реНрдХрд┐рдХ рддреНрд░реБрдЯрд┐рд╣рд░реВрд▓рд╛рдИ рдХрдо рдЧрд░реНрди рдмрд▓рд┐рдпреЛ рд╕реНрдерд┐рд░ рдЯрд╛рдЗрдкрд┐рдЩ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред

рдореБрдЦреНрдп рдЖрд╡рд┐рд╖реНрдХрд╛рд░рд╣рд░реВ:

  • рдкреВрд░реНрдгрд╛рдЩреНрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ ("#[repr(Int)]" рд╡рд┐рд╢реЗрд╖рддрд╛ рднрдПрдХреЛ рдЧрдгрдорд╛, рдЧрдгрдирдорд╛ рдлрд┐рд▓реНрдбрд╣рд░реВ рднрдП рддрд╛рдкрдирд┐, рднреЗрджрднрд╛рд╡рдХреЛ рд╕реНрдкрд╖реНрдЯ рд╕рдЩреНрдХреЗрдд (рдЧрдгрдирд╛рдорд╛ рднрд┐рдиреНрди рд╕рдВрдЦреНрдпрд╛) рд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдЗрдиреНрдЫред #[repr(u8)] enum Foo { A(u8), # discriminant 0 B(i8), # discriminant 1 C(bool) = 42, # discriminant 42 }
  • рдердкрд┐рдПрдХреЛ рдкреНрд░рдХрд╛рд░реНрдп core::hint::black_box рдЬрд╕рд▓реЗ рдкреНрд░рд╛рдкреНрдд рдорд╛рди рдлрд┐рд░реНрддрд╛ рдЧрд░реНрдЫред рдХрдореНрдкрд╛рдЗрд▓рд░рд▓реЗ рдпреЛ рдкреНрд░рдХрд╛рд░реНрдпрд▓реЗ рдХреЗрд╣рд┐ рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫ рднрдиреНрдиреЗ рд╕реЛрдЪреЗрдХреЛрд▓реЗ, рдмреНрд▓реНрдпрд╛рдХ_рдмрдХреНрд╕ рдкреНрд░рдХрд╛рд░реНрдпрд▓реЗ рдХреЛрдб рдкреНрд░рджрд░реНрд╢рди рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрджрд╛ рд╡рд╛ рдЙрддреНрдкрдиреНрди рдореЗрд╕рд┐рди рдХреЛрдб рдЬрд╛рдБрдЪ рдЧрд░реНрджрд╛ рд▓реБрдкрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдХрдореНрдкрд╛рдЗрд▓рд░ рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╕рдирд╣рд░реВ рдЕрд╕рдХреНрд╖рдо рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ (рддрд╛рдХрд┐ рдХрдореНрдкрд╛рдЗрд▓рд░рд▓реЗ рдХреЛрдбрд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдирдЧрд░рд┐рдПрдХреЛ рдорд╛рдиреНрди рд░ рдпрд╕рд▓рд╛рдИ рд╣рдЯрд╛рдЙрдБрджреИрди)ред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддрд▓рдХреЛ рдЙрджрд╛рд╣рд░рдгрдорд╛, black_box(v.as_ptr()) рд▓реЗ рдХрдореНрдкрд╛рдЗрд▓рд░рд▓рд╛рдИ рднреЗрдХреНрдЯрд░ v рдкреНрд░рдпреЛрдЧ рднрдЗрд░рд╣реЗрдХреЛ рдЫреИрди рднрдиреНрдиреЗ рд╕реЛрдЪреНрдирдмрд╛рдЯ рд░реЛрдХреНрдЫред std::hint::black_box рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН; fn push_cap(v: &mut Vec) { i for 0..4 { v.push(i); рдХрд╛рд▓реЛ_рдмрдХреНрд╕(v.as_ptr()); } }
  • "рдХрд╛рд░реНрдЧреЛ" рдкреНрдпрд╛рдХреЗрдЬ рдкреНрд░рдмрдиреНрдзрдХрд▓реЗ "рд╣рдЯрд╛рдЙрдиреБрд╣реЛрд╕реН" рдЖрджреЗрд╢ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЖрджреЗрд╢ рд░реЗрдЦрд╛рдмрд╛рдЯ Cargo.toml manifest рдмрд╛рдЯ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╣рдЯрд╛рдЙрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред
  • рдПрдкреАрдЖрдИ рдХреЛ рдПрдХ рдирдпрд╛рдБ рднрд╛рдЧ рд╕реНрдерд┐рд░ рдХреЛ рд╢реНрд░реЗрдгреА рдорд╛ рд╕рд╛рд░рд┐рдпреЛ, рд╡рд┐рдзрд┐рд╣рд░реБ рд░ рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реБ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рд╣рд┐рдд рд╕реНрдерд┐рд░ рдЧрд░рд┐рдПрдХреЛ рдЫ:
    • proc_macro::Span::source_text
    • u*::{checked_add_signed, overflowing_add_signed, saturating_add_signed, wrapping_add_signed}
    • i*::{checked_add_unsigned, overflowing_add_unsigned, saturating_add_unsigned, wrapping_add_unsigned}
    • i*::{checked_sub_unsigned, overflowing_sub_unsigned, saturating_sub_unsigned, wrapping_sub_unsigned}
    • BTreeSet::{first, last, pop_first, pop_last}
    • BTreeMap::{first_key_value, last_key_value, first_entry, last_entry, pop_first, pop_last}
    • WASI рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ stdio рд▓рдХ рдкреНрд░рдХрд╛рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ AsFd рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирд╣рд░реВ рдердкреНрдиреБрд╣реЛрд╕реНред
    • impl TryFrom > рдмрдХреНрд╕рдХреЛ рд▓рд╛рдЧрд┐<[T; N]>
    • core::hint::black_box
    • рдЕрд╡рдзрд┐::try_from_secs_{f32,f64}
    • рд╡рд┐рдХрд▓реНрдк::рдЕрдирдЬрд┐рдк
    • std::os::fd
  • рджрд╛рдпрд░рд╛ "..X" рд░ "..=X" рдЯреЗрдореНрдкреНрд▓реЗрдЯрд╣рд░реВрдорд╛ рдЕрдиреБрдорддрд┐ рдЫред
  • rustc рдХрдореНрдкрд╛рдЗрд▓рд░ рд░ LLVM рдмреНрдпрд╛рдХрдЗрдиреНрдбрдХреЛ рдЕрдЧрд╛рдбрд┐рдХреЛ рдЫреЗрдЙ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрджрд╛, LTO (рд▓рд┐рдЩреНрдХ рдЯрд╛рдЗрдо рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╕рди) рд░ BOLT (рдмрд╛рдЗрдирд░реА рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╕рди рд░ рд▓реЗрдЖрдЙрдЯ рдЙрдкрдХрд░рдг) рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╕рди рдореЛрдбрд╣рд░реВ рдирддрд┐рдЬрд╛ рдХреЛрдбрдХреЛ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рдмрдврд╛рдЙрди рд░ рдореЗрдореЛрд░реА рдЦрдкрдд рдХрдо рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред
  • armv5te-none-eabi рд░ thumbv5te-none-eabi рдкреНрд▓реЗрдЯрдлрд░реНрдорд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрддрд░ XNUMX рд╕рдорд░реНрдерди рд▓рд╛рдЧреВ рдЧрд░рд┐рдпреЛред рддреЗрд╕реНрд░реЛ рддрд╣рд▓реЗ рдЖрдзрд╛рд░рднреВрдд рд╕рдорд░реНрдердирд▓рд╛рдИ рд╕рдВрдХреЗрдд рдЧрд░реНрджрдЫ, рддрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдмрд┐рдирд╛, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдирд┐рд░реНрдорд╛рдгрд╣рд░реВ рдкреНрд░рдХрд╛рд╢рди рдЧрд░реНрдиреЗ рд░ рдХреЛрдб рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреЗред
  • macOS рдЬреЗрдиреЗрд░рд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВрдорд╛ рд▓рд┐рдЩреНрдХ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдердкрд┐рдпреЛред

рдердк рд░реВрдкрдорд╛, рд╣рд╛рдореА рд░рд╕реНрдЯ рднрд╛рд╖рд╛ (gccrs) рдХреЛ рдлреНрд░рдиреНрдЯ-рдПрдиреНрдб рдХрдореНрдкрд╛рдЗрд▓рд░рдХреЛ GCC рдХреЛрдбрдмреЗрд╕рдорд╛ рд╕рдорд╛рд╡реЗрд╢рд▓рд╛рдИ рдиреЛрдЯ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рдлреНрд░рдиреНрдЯрдПрдиреНрдб GCC 13 рд╢рд╛рдЦрд╛рдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЫ, рдЬреБрди рдореЗ 2023 рдорд╛ рдЬрд╛рд░реА рд╣реБрдиреЗрдЫред GCC 13 рдмрд╛рдЯ рд╕реБрд░реБ рд╣реБрдБрджреИ, рдорд╛рдирдХ GCC рдЯреВрд▓рдХрд┐рдЯ LLVM рд╡рд┐рдХрд╛рд╕рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реА рдирд┐рд░реНрдорд┐рдд rustc рдХрдореНрдкрд╛рдЗрд▓рд░ рд╕реНрдерд╛рдкрдирд╛ рдирдЧрд░реА Rust рдХрд╛рд░реНрдпрдХреНрд░рдорд╣рд░реВ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫред GCC 13 рдорд╛ Rust рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрд┐рдЯрд╛ рд╕реНрдерд┐рддрд┐рдорд╛ рд╣реБрдиреЗрдЫ, рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рд╕рдХреНрд╖рдо рдЫреИрдиред

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди