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

рднрдпреЛ рдкреНрд░рдгрд╛рд▓реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛ рд░рд┐рд▓реАрдЬ рд░рд╕реНрдЯ рез, рдореЛрдЬрд┐рд▓рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рддред рднрд╛рд╖рд╛ рдореЗрдореЛрд░реА рд╕реБрд░рдХреНрд╖рд╛рдорд╛ рдХреЗрдиреНрджреНрд░рд┐рдд рдЫ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореЗрдореЛрд░реА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рд░ рдлреЛрд╣реЛрд░ рд╕рдЩреНрдХрд▓рди рд╡рд╛ рд░рдирдЯрд╛рдЗрдо рдкреНрд░рдпреЛрдЧ рдирдЧрд░реА рдЙрдЪреНрдЪ рдХрд╛рд░реНрдп рд╕рдорд╛рдирд╛рдиреНрддрд░ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗ рдорд╛рдзреНрдпрдо рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред

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

рдореБрдЦреНрдп рдирд╡рд╛рдЪрд╛рд░рд╣рд░реВ:

  • рдХрд╛рд░реНрдЧреЛ рдкреНрдпрд╛рдХреЗрдЬ рдкреНрд░рдмрдиреНрдзрдХрд▓реЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреНрдпрд╛рдХреЗрдЬ рд░рдЬрд┐рд╕реНрдЯреНрд░реАрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрди рдЙрдкрдХрд░рдгрд╣рд░реВ рдердкреЗрдХреЛ рдЫ рдЬреБрди crates.io рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░рдЬрд┐рд╕реНрдЯреНрд░реАрд╕рдБрдЧ рд╕рдБрдЧреИ рд░рд╣рди рд╕рдХреНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдЕрдм рдЖрдлреНрдиреИ рдирд┐рдЬреА рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫрдиреН, рдЬреБрди Cargo.toml рдорд╛ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╕реВрдЪреАрдмрджреНрдз рдЧрд░реНрджрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рд░ рддрд┐рдиреАрд╣рд░реВрдХрд╛ рдЙрддреНрдкрд╛рджрдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ crates.io рдЬрд╕реНрддреИ рд╕рдВрд╕реНрдХрд░рдг рдореЛрдбреЗрд▓ рд▓рд╛рдЧреВ рдЧрд░реНрди, рд╕рд╛рдереИ рджреБрд╡реИ рдХреНрд░реЗрдЯрд╣рд░реВрдорд╛ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╕рдиреНрджрд░реНрдн рдЧрд░реНрдиреБрд╣реЛрд╕реНред io рд░ рддрдкрд╛рдИрдВрдХреЛ рдЖрдлреНрдиреИ рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдорд╛ред

    .cargo/config рдорд╛ рдмрд╛рд╣реНрдп рд░рдЬрд┐рд╕реНрдЯреНрд░реАрд╣рд░реВ рдердкреНрди ($HOME рд╡рд╛ рдкреНрдпрд╛рдХреЗрдЬ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдорд╛ рдЕрд╡рд╕реНрдерд┐рдд)
    рдкреНрд░рджрд╛рди рдЧрд░рд┐рдпреЛ рдЦрдгреНрдб "[рд░рдЬрд┐рд╕реНрдЯреНрд░реАрд╣рд░реВ]", рд░ рдмрд╛рд╣реНрдп рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди, "рд░рдЬрд┐рд╕реНрдЯреНрд░реА" рд╡рд┐рдХрд▓реНрдк Cargo.toml рдорд╛ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрднрд░рддрд╛рдХреЛ рд╡рд┐рд╡рд░рдгрдорд╛ рджреЗрдЦрд╛ рдкрд░реЗрдХреЛ рдЫред рдЕрддрд┐рд░рд┐рдХреНрдд рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдорд╛ рдЬрдбрд╛рди рдЧрд░реНрди, рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЯреЛрдХрдирд▓рд╛рдИ ~/.cargo/credentials рдлрд╛рдЗрд▓рдорд╛ рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реН рд░ рдЖрджреЗрд╢ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реНред
    "рдХрд╛рд░реНрдЧреЛ рд▓рдЧрдЗрди --registry=my-registry" рд░ рдкреНрдпрд╛рдХреЗрдЬ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрди -
    "рдХрд╛рд░реНрдЧреЛ рдкреНрд░рдХрд╛рд╢рди -registry=my-registry";

  • "?" рдЕрдкрд░реЗрдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдкреВрд░реНрдг рд╕рдорд░реНрдерди рдердкрд┐рдпреЛред рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрдорд╛ doctests, рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдкрд░реАрдХреНрд╖рдгрдХреЛ рд░реВрдкрдорд╛ рдХрд╛рдЧрдЬрд╛рддрдмрд╛рдЯ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдБрджреИред рдкрд╣рд┐рд▓реЗ рдЕрдкрд░реЗрдЯрд░
    "?" рдХреЗрд╡рд▓ "fn main()" рдкреНрд░рдХрд╛рд░реНрдпрдХреЛ рдЙрдкрд╕реНрдерд┐рддрд┐рдорд╛ рд╡рд╛ "#[test]" рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рдХреНрд░рдордорд╛ рддреНрд░реБрдЯрд┐рд╣рд░реВ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ;

  • рдЕрдиреБрдХреВрд▓рди рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реВрдорд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдореНрдпрд╛рдХреНрд░реЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕реБрд░рдХреНрд╖рд┐рдд рдЯреЛрдХрдирд╣рд░реВрдХреЛ рдордирдорд╛рдиреА рд╕реЗрдЯрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ ("#[attr($tokens)]", "#[attr[$tokens]] рд░ #[attr{$tokens}]")ред рдкрд╣рд┐рд▓реЗ, рддрддреНрд╡рд╣рд░реВ рдХреЗрд╡рд▓ рд╕реНрдЯреНрд░рд┐рдЩ рд▓рд┐рдЯрд░рд▓рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд░реВрдЦ/рдкреБрдирд░рд╛рд╡рд░реНрддреА рдлрд╛рд░рдордорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдереНрдпреЛ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ "#[foo(bar, baz(quux, foo = "bar"))]", рддрд░ рдЕрдм рдЧрдгрдирд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдореНрднрд╡ рдЫ (' #[рджрд╛рдпрд░рд╛(0. .10)]') рд░ рдирд┐рд░реНрдорд╛рдгрд╣рд░реВ рдЬрд╕реНрддреИ "#[рдмрд╛рдЙрдиреНрдб(T: MyTrait)]";
  • рд╕реНрдерд┐рд░ рдкреНрд░рдХрд╛рд░ (рд╡рд┐рд╢реЗрд╖рддрд╛) рдмрд╛рдЯ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реН ╨╕ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рддреНрд░реБрдЯрд┐ рд╣реНрдпрд╛рдиреНрдбрд▓рд┐рдВрдЧрдХреЛ рд╕рд╛рде рдкреНрд░рдХрд╛рд░ рд░реВрдкрд╛рдиреНрддрд░рдгрд╣рд░реВрд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдБрджреИред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, integer рдкреНрд░рдХрд╛рд░рд╣рд░реБ рд╕рдВрдЧ from_be_bytes рдЬрд╕реНрддрд╛ рд╡рд┐рдзрд┐рд╣рд░реБ рдЗрдирдкреБрдЯ рдХреЛ рд░реВрдк рдорд╛ arrays рдХреЛ рдЙрдкрдпреЛрдЧ рдЧрд░реНрджрдЫ, рддрд░ рдбрд╛рдЯрд╛ рдЕрдХреНрд╕рд░ рд╕реНрд▓рд╛рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдорд╛ рдЖрдЙрдБрдЫ, рд░ arrays рд░ рд╕реНрд▓рд╛рдЗрд╕рд╣рд░реБ рдмреАрдЪ рд░реВрдкрд╛рдиреНрддрд░рдг рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдЫред рдирдпрд╛рдБ рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реВрдХреЛ рдорджреНрджрддрд▓реЗ, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдкрд░реЗрд╢рдирд▓рд╛рдИ .try_into() рдорд╛ рдХрд▓ рдорд╛рд░реНрдлрдд рдЙрдбрд╛рдирдорд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, "let num = u32::from_be_bytes(slice.try_into()?)"ред рд╕рдБрдзреИ рд╕рдлрд▓ рд╣реБрдиреЗ рд░реВрдкрд╛рдиреНрддрд░рдгрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, u8 рджреЗрдЦрд┐ u32 рдкреНрд░рдХрд╛рд░рд╕рдореНрдо), рддреНрд░реБрдЯрд┐рдХреЛ рдкреНрд░рдХрд╛рд░ рдердкрд┐рдПрдХреЛ рдЫ рдЕрдЪреВрдХ, рдкрд╛рд░рджрд░реНрд╢реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдБрджреИ
    "рдмрд╛рдЯ" рдХреЛ рд╕рдмреИ рдЕрд╡рд╕реНрдерд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реН;

  • рдХрд╛рд░реНрдп рдмрд╣рд┐рд╖реНрдХрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫ CommandExt::before_exec, рдЬрд╕рд▓реЗ exec рдЪрд▓рд╛рдЙрдиреБ рдЕрдШрд┐ рд╣реНрдпрд╛рдиреНрдбрд▓рд░рд▓рд╛рдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдпреЛ, рдЬреБрди рдлреЛрд░реНрдХ() рдХрд▓ рдкрдЫрд┐ рдлреЛрд░реНрдХ рдЧрд░рд┐рдПрдХреЛ рдмрдЪреНрдЪрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рд╕рдиреНрджрд░реНрднрдорд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рддреНрдпрд╕реНрддрд╛ рдЕрд╡рд╕реНрдерд╛рд╣рд░реВрдорд╛, рдЕрднрд┐рднрд╛рд╡рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХрд╛ рдХреЗрд╣реА рд╕реНрд░реЛрддрд╣рд░реВ, рдЬрд╕реНрддреИ рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛рд╣рд░реВ рд░ рдореНрдпрд╛рдк рдЧрд░рд┐рдПрдХреЛ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░рд╣рд░реВ, рдирдХреНрдХрд▓ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рдЬрд╕рд▓реЗ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВрдХреЛ рдЧрд▓рдд рд╕рдЮреНрдЪрд╛рд▓рди рдирд┐рдореНрддреНрдпрд╛рдЙрди рд╕рдХреНрдЫред
    before_exec рдХреЛ рд╕рдЯреНрдЯрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдкреНрд░рдХрд╛рд░реНрдп рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░рд┐рдиреНрдЫ CommandExt::pre_exec.

  • 8 рджреЗрдЦрд┐ 64 рдмрд┐рдЯ рд╕рдореНрдордХреЛ рдЖрдХрд╛рд░рдорд╛ рд╕реНрдерд┐рд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд░ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкрд░рдорд╛рдгреБ рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░рд╣рд░реВ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, AtomicU8), рд╕рд╛рдереИ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдХрд╛рд░рд╣рд░реВ NonZeroI[8|16|32|64|128].
  • API рдХреЛ рдирдпрд╛рдБ рднрд╛рдЧ рдХреБрдиреИ рдкрдирд┐::type_id, Error::type_id, slice::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant::checked_[add|sub тАЛтАЛрд╕рд╣рд┐рдд рд╕реНрдерд┐рд░ рдХреЛрдЯреАрдорд╛ рд╕рд╛рд░рд┐рдПрдХреЛ рдЫред ] рд░ SystemTime рд╡рд┐рдзрд┐рд╣рд░реВ рд╕реНрдерд┐рд░ рдЧрд░рд┐рдПрдХреЛ рдЫ ::checked_[add|sub]ред iter::from_fn рд░ iter::successors рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рд╕реНрдерд┐рд░ рдЧрд░рд┐рдПрдХреЛ рдЫ;
  • рд╕рдмреИ рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░рдХрд╛ рд▓рд╛рдЧрд┐, checked_pow, saturating_pow, wrapping_pow рд░ overflowing_pow рд╡рд┐рдзрд┐рд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░рд┐рдиреНрдЫрдиреН;
  • "-C linker-plugin-lto" рдмрд┐рд▓реНрдб рд╡рд┐рдХрд▓реНрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реЗрд░ рд▓рд┐рдЩреНрдХрд┐рдЩ рдЪрд░рдгрдорд╛ рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╕рдирд╣рд░реВ рд╕рдХреНрд╖рдо рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рдердкрд┐рдпреЛред

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

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