рд╡рд┐рдХрд╛рд╕ рдХрд╛рд░реНрдпрд╕рдВрдШ рд░рд╕реНрдЯ 1.36 рд╕рд╛рджрд░ рдХрд░рдгреНрдпрд╛рд╕ рдЙрддреНрд╕реБрдХ рдЖрд╣реЗ!

Rust 1.36 рдордзреНрдпреЗ рдирд╡реАрди рдХрд╛рдп рдЖрд╣реЗ?
рднрд╡рд┐рд╖реНрдпрд╛рддреАрд▓ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рд╕реНрдерд┐рд░, рдирд╡реАрди рдкрд╛рд╕реВрди: alloc crate, MaybeUninit , рд░рд╕реНрдЯ 2015 рд╕рд╛рдареА NLL, рд╣реЕрд╢рдореЕрдкрдЪреА рдирд╡реАрди рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЖрдгрд┐ рдирд╡реАрди рдзреНрд╡рдЬ - рдХрд╛рд░реНрдЧреЛрд╕рд╛рдареА рдСрдлрд▓рд╛рдЗрди.


рдЖрдгрд┐ рдЖрддрд╛ рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓рд╡рд╛рд░:

  • рд╢реЗрд╡рдЯреА рдЧрдВрдЬ 1.36 рдордзреНрдпреЗ рд╕реНрдерд┐рд░ рдХреЗрд▓реЗ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рднрд╡рд┐рд╖реНрдп.
  • рдХреНрд░реЗрдЯ рд╡рд╛рдЯрдк.
    Rust 1.36 рдиреБрд╕рд╛рд░, std рдЪреЗ рднрд╛рдЧ рдЬреЗ рдЬрд╛рдЧрддрд┐рдХ рд╡рд╛рдЯрдкрдХрд░реНрддреНрдпрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЕрд╕рддрд╛рдд (рдЬрд╕реЗ рдХреА Vec ), рд╡рд╛рдЯрдк рдХреНрд░реЗрдЯрдордзреНрдпреЗ рдЖрд╣реЗрдд. рдЖрддрд╛ std рд╣реЗ рднрд╛рдЧ рдкреБрдиреНрд╣рд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрд▓. рдпрд╛рдмрджреНрджрд▓ рдЕрдзрд┐рдХ.
  • рдХрджрд╛рдЪрд┐рдд рдпреБрдирд┐рдЯ mem::uninitialized рдРрд╡рдЬреА.
    рдорд╛рдЧреАрд▓ рдкреНрд░рдХрд╛рд╢рдирд╛рдВрдордзреНрдпреЗ, mem::uninitialized рдиреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдпрдЭреЗрд╢рди рдЪреЗрдХ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджрд┐рд▓реА рд╣реЛрддреА, рддреЗ рдЖрд│рд╢реА рдЕреЕрд░реЗ рд╡рд╛рдЯрдкрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЧреЗрд▓реЗ рд╣реЛрддреЗ, рдкрд░рдВрддреБ рд╣реЗ рдХрд╛рд░реНрдп рдЦреВрдкрдЪ рдзреЛрдХрд╛рджрд╛рдпрдХ рдЖрд╣реЗ (рдЕрдзрд┐рдХ), рддреНрдпрд╛рдореБрд│реЗ MaybeUninit рдкреНрд░рдХрд╛рд░ рд╕реНрдерд┐рд░ рдЭрд╛рд▓рд╛ , рдЬреЗ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдЖрд╣реЗ.
    рдмрд░рдВ, MaybeUninit рдкрд╛рд╕реВрди рд╣рд╛ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдкрд░реНрдпрд╛рдп рдЖрд╣реЗ, рддрд░ Rust 1.38 рдиреБрд╕рд╛рд░, mem::uninitialized рд╣реЗ рдирд╛рдкрд╕рдВрдд рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдЕрд╕реЗрд▓.
    рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдирдирд┐рд╢рд┐рдЕрд▓ рдореЗрдорд░реАрдмрджреНрджрд▓ рдЕрдзрд┐рдХ рдЬрд╛рдгреВрди рдШреНрдпрд╛рдпрдЪреЗ рдЕрд╕рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣реА Alexis Beingessner рдЪреА рд╣реА рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рд╡рд╛рдЪреВ рд╢рдХрддрд╛.
  • рд░рд╕реНрдЯ 2015 рд╕рд╛рдареА NLL.
    рдШреЛрд╖рдгрд╛ рдордзреНрдпреЗ рдЧрдВрдЬ 1.31.0 рдбреЗрд╡реНрд╣рд▓рдкрд░реНрд╕рдиреА рдЖрдореНрд╣рд╛рд▓рд╛ NLL (рдиреЙрди-рд▓реЗрдХреНрд╕рд┐рдХрд▓ рд▓рд╛рдЗрдлрдЯрд╛рдЗрдо) рдмрджреНрджрд▓ рд╕рд╛рдВрдЧрд┐рддрд▓реЗ, рднрд╛рд╖реЗрд╕рд╛рдареА рдПрдХ рд╕реБрдзрд╛рд░рдгрд╛ рдЬреА рдХрд░реНрдЬ рддрдкрд╛рд╕рдХрд╛рдВрдирд╛ рдЕрдзрд┐рдХ рд╣реБрд╢рд╛рд░ рдЖрдгрд┐ рдЕрдзрд┐рдХ рд╡рд╛рдкрд░рдХрд░реНрддрд╛-рдЕрдиреБрдХреВрд▓ рдмрдирд╡рддреЗ. рдЙрджрд╛рд╣рд░рдг:
    fn main() {
    mut x = 5 рджреНрдпрд╛;
    y = &x;
    z = &mut x; // рдпрд╛рдЪреА 1.31.0 рдкреВрд░реНрд╡реА рдкрд░рд╡рд╛рдирдЧреА рдирд╡реНрд╣рддреА.
    }

    1.31.0 рдордзреНрдпреЗ, рд╡рд┐рдХрд╛рд╕рдХ рд░рд╕реНрдЯ 2018 рдордзреНрдпреЗ рд╕рдорд░реНрдерди рдЬреЛрдбрддреАрд▓ рдпрд╛ рд╡рдЪрдирд╛рд╕рд╣, NLL рдлрдХреНрдд рд░рд╕реНрдЯ 2015 рдордзреНрдпреЗ рдХрд╛рдо рдХреЗрд▓реЗ.
    рддреБрдореНрд╣рд╛рд▓рд╛ NLL рдмрджреНрджрд▓ рдЕрдзрд┐рдХ рдЬрд╛рдгреВрди рдШреНрдпрд╛рдпрдЪреЗ рдЕрд╕рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣реА рдпрд╛рдордзреНрдпреЗ рдЕрдзрд┐рдХ рд╡рд╛рдЪреВ рд╢рдХрддрд╛ рдмреНрд▓реЙрдЧ рдиреЛрдВрджреА (рдлреЗрд▓рд┐рдХреНрд╕ рдХреНрд▓реЛрдХреНрд╕).

  • рдХрд╛рд░реНрдЧреЛрд╕рд╛рдареА рдирд╡реАрди рдзреНрд╡рдЬ тАФрдСрдлрд▓рд╛рдЗрди рдЖрд╣реЗ.
    рд░рд╕реНрдЯ 1.36 рдиреЗ рдХрд╛рд░реНрдЧреЛрд╕рд╛рдареА рдирд╡реАрди рдзреНрд╡рдЬ рд╕реНрдерд┐рд░ рдХреЗрд▓рд╛ рдЖрд╣реЗ. --offline рдзреНрд╡рдЬ рдХрд╛рд░реНрдЧреЛрд▓рд╛ рд╕реНрдерд╛рдирд┐рдХрд░рд┐рддреНрдпрд╛ рдХреЕрд╢реЗ рдХреЗрд▓реЗрд▓реЗ рдЕрд╡рд▓рдВрдмрди рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕ рд╕рд╛рдВрдЧрддреЗ рдЬреЗрдгреЗрдХрд░реВрди рддреЗ рдирдВрддрд░ рдСрдлрд▓рд╛рдЗрди рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд. рдЬреЗрд╡реНрд╣рд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рдСрдлрд▓рд╛рдЗрди рдЙрдкрд▓рдмреНрдз рдирд╕рддрд╛рдд рдЖрдгрд┐ рддрд░реАрд╣реА рдЗрдВрдЯрд░рдиреЗрдЯрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕рд▓реНрдпрд╛рд╕, рдХрд╛рд░реНрдЧреЛ рдПрдХ рддреНрд░реБрдЯреА рджреЗрдИрд▓. рдЕрд╡рд▓рдВрдмрди рдкреВрд░реНрд╡-рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА cargo fetch рдХрдорд╛рдВрдб рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛, рдЬреЗ рд╕рд░реНрд╡ рдЕрд╡рд▓рдВрдмрди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрд▓.
  • рддреЛ рдЖрд╣реЗ рддреБрдореНрд╣реА рдмрджрд▓рд╛рдВрдЪреЗ рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓рд╡рд╛рд░ рд╡рд┐рд╣рдВрдЧрд╛рд╡рд▓реЛрдХрди рд╡рд╛рдЪреВ рд╢рдХрддрд╛.

рдорд╛рдирдХ рд▓рд╛рдпрдмреНрд░рд░реАрдордзреНрдпреЗ рджреЗрдЦреАрд▓ рдмрджрд▓ рдЖрд╣реЗрдд:

рдЗрддрд░ рдмрджрд▓ рдЧрдВрдЬ, рдорд╛рд▓рд╡рд╛рд╣реВ ╨╕ рдХреНрд▓рд┐рдкреНрдкреА.

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

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