рд░реБрдмреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ 3.1 рд╕реЛрдбрдгреЗ

рд░реБрдмреА 3.1.0 рд░рд┐рд▓реАрдЬ рдХрд░рдгреНрдпрд╛рдд рдЖрд▓реА, рдПрдХ рдбрд╛рдпрдиреЕрдорд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдЬреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдбреЗрд╡реНрд╣рд▓рдкрдореЗрдВрдЯрдордзреНрдпреЗ рдЕрддреНрдпрдВрдд рдХрд╛рд░реНрдпрдХреНрд╖рдо рдЖрд╣реЗ рдЖрдгрд┐ рдкрд░реНрд▓, рдЬрд╛рд╡рд╛, рдкрд╛рдпрдерди, рд╕реНрдореЙрд▓рдЯреЙрдХ, рдЖрдпрдлреЗрд▓, рдЕрдбрд╛ рдЖрдгрд┐ рд▓рд┐рд╕реНрдкрдЪреА рдЙрддреНрдХреГрд╖реНрдЯ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рддреЗ. рдкреНрд░рдХрд▓реНрдк рдХреЛрдб BSD (тАЬ2-рдХреНрд▓реЙрдЬ BSDLтАЭ) рдЖрдгрд┐ тАЬрд░реБрдмреАтАЭ рдкрд░рд╡рд╛рдиреНрдпрд╛рдВрддрд░реНрдЧрдд рд╡рд┐рддрд░реАрдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ, рдЬреЛ GPL рдкрд░рд╡рд╛рдиреНрдпрд╛рдЪреНрдпрд╛ рдирд╡реАрдирддрдо рдЖрд╡реГрддреНрддреАрдЪрд╛ рд╕рдВрджрд░реНрдн рджреЗрддреЛ рдЖрдгрд┐ GPLv3 рд╢реА рдкреВрд░реНрдгрдкрдгреЗ рд╕реБрд╕рдВрдЧрдд рдЖрд╣реЗ.

рдкреНрд░рдореБрдЦ рд╕реБрдзрд╛рд░рдгрд╛:

  • рдПрдХ рдирд╡реАрди рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдЗрди-рдкреНрд░реЛрд╕реЗрд╕ JIT рдХрдВрдкрд╛рдЗрд▓рд░, YJIT, рдЬреЛрдбрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ, рдЬреЛ Rails рдлреНрд░реЗрдорд╡рд░реНрдХ рд╡рд╛рдкрд░рдгрд╛рд░реНтАНрдпрд╛ рдЖрдгрд┐ рдЕрдиреЗрдХ рдкрджреНрдзрддреА рд╡рд╛рдкрд░рдгрд╛рд░реНтАНрдпрд╛ рд░реБрдмреА рдкреНрд░реЛрдЧреНрд░рд╛рдореНрд╕рдЪреЗ рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд╛рд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдЙрдкрдХреНрд░рдорд╛рдЪрд╛ рдПрдХ рднрд╛рдЧ рдореНрд╣рдгреВрди Shopify рдИ-рдХреЙрдорд░реНрд╕ рдкреНрд▓реЕрдЯрдлреЙрд░реНрдордЪреНрдпрд╛ рд╡рд┐рдХрд╕рдХрд╛рдВрдиреА рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЖрд╣реЗ. рдкреВрд░реНрд╡реА рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ MJIT JIT рдХрдВрдкрд╛рдпрд▓рд░рдордзреАрд▓ рдорд╣рддреНрддреНрд╡рд╛рдЪрд╛ рдлрд░рдХ, рдЬреЛ рд╕рдВрдкреВрд░реНрдг рдкрджреНрдзрддреАрдВрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреНрдпрд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдЖрд╣реЗ рдЖрдгрд┐ C рднрд╛рд╖реЗрдд рдмрд╛рд╣реНрдп рдХрдВрдкрд╛рдЗрд▓рд░ рд╡рд╛рдкрд░рддреЛ, рддреЛ рдореНрд╣рдгрдЬреЗ YJIT рд▓реЗрдЭреА рдмреЗрд╕рд┐рдХ рдмреНрд▓реЙрдХ рд╡реНрд╣рд░реНрдЬрдирд┐рдВрдЧ (LBBV) рд╡рд╛рдкрд░рддреЗ рдЖрдгрд┐ рддреНрдпрд╛рдд рдПрдХрд╛рддреНрдорд┐рдХ JIT рдХрдВрдкрд╛рдЗрд▓рд░ рдЖрд╣реЗ. LBBV рд╕рд╣, JIT рдкреНрд░рдердо рдкрджреНрдзрддреАрдЪреА рдлрдХреНрдд рд╕реБрд░реБрд╡рд╛рдд рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рдЖрдгрд┐ рдХрд╛рд╣реА рдХрд╛рд│рд╛рдирдВрддрд░, рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдЪреЗ рдкреНрд░рдХрд╛рд░ рдЖрдгрд┐ рд╡рд┐рддрд░реНрдХ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рджрд░рдореНрдпрд╛рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рдЙрд░реНрд╡рд░рд┐рдд рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ. YJIT рд╡рд╛рдкрд░рддрд╛рдирд╛, рд░реЗрд▓рдмреЗрдВрдЪ рдЪрд╛рдЪрдгреА рдЪрд╛рд▓рд╡рддрд╛рдирд╛ рдХрд╛рдордЧрд┐рд░реАрдордзреНрдпреЗ 22% рд╡рд╛рдв рдиреЛрдВрджрд╡рд▓реА рдЧреЗрд▓реА рдЖрдгрд┐ рд▓рд┐рдХреНрд╡рд┐рдб-рд░реЗрдВрдбрд░ рдЪрд╛рдЪрдгреАрдордзреНрдпреЗ 39% рд╡рд╛рдв рдиреЛрдВрджрд╡рд▓реА рдЧреЗрд▓реА. YJIT рд╕рдзреНрдпрд╛ x86-64 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рд┐рд╕реНрдЯреАрдорд╡рд░ рдпреБрдирд┐рдХреНрд╕-рд╕рдорд╛рди OS рд╕рд╛рдареА рд╕рдорд░реНрдерди рдкреБрд░рддреЗ рдорд░реНрдпрд╛рджрд┐рдд рдЖрд╣реЗ рдЖрдгрд┐ рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рдЕрдХреНрд╖рдо рдХреЗрд▓реЗ рдЖрд╣реЗ (рд╕рдХреНрд░рд┐рдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдХрдорд╛рдВрдб рд▓рд╛рдЗрдирдордзреНрдпреЗ тАЬ--yjitтАЭ рдзреНрд╡рдЬ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рд╛).
  • рдЬреБрдиреНрдпрд╛ MJIT JIT рдХрдВрдкрд╛рдЗрд▓рд░рдЪреА рд╕реБрдзрд╛рд░рд┐рдд рдХрд╛рдордЧрд┐рд░реА. Rails рд╡рд╛рдкрд░рдгрд╛рд░реНтАНрдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдВрд╕рд╛рдареА, рдбрд┐рдлреЙрд▓реНрдЯ рдХрдорд╛рд▓ рдХреЕрд╢реЗ рдЖрдХрд╛рд░ (-jit-max-cache) 100 рд╡рд░реВрди 10000 рд╕реВрдЪрдирд╛ рд╡рд╛рдврд╡рд▓рд╛ рдЖрд╣реЗ. 1000 рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рд╕реВрдЪрдирд╛ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдкрджреНрдзрддреАрдВрд╕рд╛рдареА JIT рд╡рд╛рдкрд░рдгреЗ рдерд╛рдВрдмрд╡рд▓реЗ. Zeitwerk of Rails рд▓рд╛ рд╕рдкреЛрд░реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдХреНрд▓рд╛рд╕ рдЗрд╡реНрд╣реЗрдВрдЯрд╕рд╛рдареА TracePoint рд╕рдХреНрд╖рдо рдЕрд╕рддрд╛рдирд╛ JIT рдХреЛрдб рдпрд╛рдкреБрдвреЗ рдЯрд╛рдХреВрди рджрд┐рд▓рд╛ рдЬрд╛рдгрд╛рд░ рдирд╛рд╣реА.
  • рдпрд╛рдд рдкреВрд░реНрдгрдкрдгреЗ рдкреБрдирд░реНрд▓рд┐рдЦрд┐рдд debug.gem рдбреАрдмрдЧрд░рдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЖрд╣реЗ, рдЬреЛ рд░рд┐рдореЛрдЯ рдбреАрдмрдЧрд┐рдВрдЧрд▓рд╛ рд╕рдорд░реНрдерди рджреЗрддреЛ, рдбреАрдмрдЧ рдХреЗрд▓реЗрд▓рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдзреАрдорд╛ рдХрд░рдд рдирд╛рд╣реА, рдкреНрд░рдЧрдд рдбреАрдмрдЧрд┐рдВрдЧ рдЗрдВрдЯрд░рдлреЗрд╕ (VSCode рдЖрдгрд┐ Chrome) рд╕рд╣ рдПрдХрддреНрд░реАрдХрд░рдгрд╛рд╕ рд╕рдорд░реНрдерди рджреЗрддреЛ, рдорд▓реНрдЯреА-рдереНрд░реЗрдбреЗрдб рдЖрдгрд┐ рдорд▓реНрдЯреА-рдкреНрд░реЛрд╕реЗрд╕ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕ рдбреАрдмрдЧ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ, рдкреНрд░рджрд╛рди рдХрд░рддреЛ. REPL рдХреЛрдб рдПрдХреНрдЭрд┐рдХреНрдпреВрд╢рди рдЗрдВрдЯрд░рдлреЗрд╕, рдкреНрд░рдЧрдд рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЛ, рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рд░реЗрдХреЙрд░реНрдб рдЖрдгрд┐ рд░реАрдкреНрд▓реЗ рдХрд░реВ рд╢рдХрддреЛ. рдкреВрд░реНрд╡реА рдСрдлрд░ рдХреЗрд▓реЗрд▓реЗ рдбреАрдмрдЧрд░ lib/debug.rb рдмреЗрд╕ рд╡рд┐рддрд░рдгрд╛рддреВрди рдХрд╛рдвреВрди рдЯрд╛рдХрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ.
    рд░реБрдмреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ 3.1 рд╕реЛрдбрдгреЗ
  • рдХреЙрд▓ рдмреЕрдХ рдЯреНрд░реЗрд╕ рд░рд┐рдкреЛрд░реНрдЯрдордзреАрд▓ рддреНрд░реБрдЯреАрдВрдЪреЗ рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓ рд╣рд╛рдпрд▓рд╛рдЗрдЯрд┐рдВрдЧ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ. рдмрд┐рд▓реНрдЯ-рдЗрди рдЖрдгрд┐ рдбреАрдлреЙрд▓реНрдЯ-рд╕рдХреНрд╖рдо рдЬреЗрдо рдкреЕрдХреЗрдЬ error_highlight рд╡рд╛рдкрд░реВрди рдПрд░рд░ рдлреНрд▓реЕрдЧрд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗ рдЖрд╣реЗ. рддреНрд░реБрдЯреА рдлреНрд▓реЕрдЧрд┐рдВрдЧ рдЕрдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА тАЬ--disable-error_highlightтАЭ рд╕реЗрдЯрд┐рдВрдЧ рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛. $ ruby тАЛтАЛtest.rb test.rb:1:in " ": рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдкрджреНрдзрдд 1 рд╕рд╛рдареА "рд╡реЗрд│": рдкреВрд░реНрдгрд╛рдВрдХ (NoMethodError) 1.time {} ^^^^^ рддреБрдореНрд╣рд╛рд▓рд╛ рдореНрд╣рдгрд╛рдпрдЪреЗ рдЖрд╣реЗ рдХрд╛? рд╡реЗрд│рд╛
  • IRB (REPL, Read-Eval-Print-Loop) рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡реНрд╣ рдХреЕрд▓рдХреНрдпреБрд▓реЗрд╢рдирдЪреЗ рд╢реЗрд▓ рдПрдВрдЯрд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХреЛрдбрдЪреА рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдкреВрд░реНрдгрддрд╛ рд▓рд╛рдЧреВ рдХрд░рддреЗ (рдЬрд╕реЗ рддреБрдореНрд╣реА рдЯрд╛рдЗрдк рдХрд░рддрд╛, рдЗрдирдкреБрдЯ рдЪрд╛рд▓реВ рдареЗрд╡рдгреНрдпрд╛рд╕рд╛рдареА рдкрд░реНрдпрд╛рдпрд╛рдВрд╕рд╣ рдПрдХ рдЗрд╢рд╛рд░рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ, рдЬреНрдпрд╛ рджрд░рдореНрдпрд╛рди рддреБрдореНрд╣реА рдЯреЕрдм рдХрд┐рдВрд╡рд╛ рд╢рд┐рдлреНрдЯ+ рд╕рд╣ рд╣рд▓рд╡реВ рд╢рдХрддрд╛. рдЯреЕрдм рдХреА). рд╕рд╛рддрддреНрдп рдкрд░реНрдпрд╛рдп рдирд┐рд╡рдбрд▓реНрдпрд╛рдирдВрддрд░, рдЬрд╡рд│рдкрд╛рд╕ рдПрдХ рдбрд╛рдпрд▓реЙрдЧ рдмреЙрдХреНрд╕ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ рдЬреЛ рдирд┐рд╡рдбрд▓реЗрд▓реНрдпрд╛ рдЖрдпрдЯрдорд╢реА рд╕рдВрдмрдВрдзрд┐рдд рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЛ. рд╕рдВрдкреВрд░реНрдг рджрд╕реНрддрдРрд╡рдЬрд╛рдд рдкреНрд░рд╡реЗрд╢ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреАрдмреЛрд░реНрдб рд╢реЙрд░реНрдЯрдХрдЯ Alt+d рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ.
    рд░реБрдмреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ 3.1 рд╕реЛрдбрдгреЗ
  • рдлрдВрдХреНрд╢рдиреНрд╕ рдХреЙрд▓ рдХрд░рддрд╛рдирд╛ рднрд╛рд╖рд╛ рд╡рд╛рдХреНрдпрд░рдЪрдирд╛ рдЖрддрд╛ рд╣реЕрд╢ рд▓рд┐рдЯрд░рд▓реНрд╕ рдЖрдгрд┐ рдХреАрд╡рд░реНрдб рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕рдордзреАрд▓ рдореВрд▓реНрдпрд╛рдВрдирд╛ рд╡рдЧрд│рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, "{x: x, y: y}" рдпрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддреАрдРрд╡рдЬреА рддреБрдореНрд╣реА рдЖрддрд╛ "{x:, y:}" рдЖрдгрд┐ "foo(x: x, y: y)" - foo( рдРрд╡рдЬреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛. x:, y:)"
  • рд╕рд┐рдВрдЧрд▓-рд▓рд╛рдЗрди рдкреЕрдЯрд░реНрди рдЬреБрд│рдгреНрдпрд╛рдВрд╕рд╛рдареА рд╕реНрдерд┐рд░ рд╕рдорд░реНрдерди (ary => [x, y, z]), рдЬреЗ рдпрд╛рдкреБрдвреЗ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдореНрд╣рдгреВрди рдзреНрд╡рдЬрд╛рдВрдХрд┐рдд рдХреЗрд▓реЗрд▓реЗ рдирд╛рд╣реАрдд.
  • рдирдореБрдирд╛ рдЬреБрд│рдгреНрдпрд╛рдВрдордзреАрд▓ "^" рдСрдкрд░реЗрдЯрд░рдордзреНрдпреЗ рдЖрддрд╛ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддреА рдЕрд╕реВ рд╢рдХрддрд╛рдд, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде: Prime.each_cons(2).lazy.find_all{_1 in [n, ^(n + 2)]}.take(3).to_a #= >? [[рей, рел], [рел, рен], [резрез, резрей]]
  • рд╕рд┐рдВрдЧрд▓-рд▓рд╛рдЗрди рдкреЕрдЯрд░реНрди рдЬреБрд│рдгреНрдпрд╛рдВрдордзреНрдпреЗ, рддреБрдореНрд╣реА рдХрдВрд╕ рд╡рдЧрд│реВ рд╢рдХрддрд╛: [0, 1] => _, x {y: 2} => y: x #=> 1 y #=> 2
  • RBS рдкреНрд░рдХрд╛рд░ рднрд╛рд╖реНрдп рднрд╛рд╖рд╛, рдЬреА рддреБрдореНрд╣рд╛рд▓рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдордЪреА рд░рдЪрдирд╛ рдЖрдгрд┐ рд╡рд╛рдкрд░рд▓реЗрд▓реЗ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ, "<" рдЪрд┐рдиреНрд╣ рд╡рд╛рдкрд░реВрди рдкреНрд░рдХрд╛рд░ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рдЪреА рд╡рд░рдЪреА рдорд░реНрдпрд╛рджрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ рдЖрд╣реЗ, рдЬреЗрдиреЗрд░рд┐рдХ рдкреНрд░рдХрд╛рд░рд╛рдВрдЪреНрдпрд╛ рдЙрдкрдирд╛рдорд╛рдВрд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ рдЖрд╣реЗ, рдпрд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЖрд╣реЗ. рд░рддреНрдиреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдВрдЧреНрд░рд╣, рд╕реБрдзрд╛рд░рд┐рдд рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рдЖрдгрд┐ рдЕрдВрдЧрднреВрдд рдЖрдгрд┐ рдорд╛рдирдХ рд▓рд╛рдпрдмреНрд░рд░реАрдВрд╕рд╛рдареА рдЕрдиреЗрдХ рдирд╡реАрди рд╕реНрд╡рд╛рдХреНрд╖рд░реА рд▓рд╛рдЧреВ рдХреЗрд▓реНрдпрд╛.
  • рдПрдХрд╛рддреНрдорд┐рдХ рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рд╕рд╛рдареА рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╕рдорд░реНрдерди TypePro рд╕реНрдерд┐рд░ рдкреНрд░рдХрд╛рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХрд╛рдордзреНрдпреЗ рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЬреЗ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдорд╛рд╣рд┐рддреАрд╢рд┐рд╡рд╛рдп рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд RBS рднрд╛рд╖реНрдпреЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рддреЗ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, VSCode рд╕рдВрдкрд╛рджрдХрд╛рд╕рд╣ TypePro рд╕рдорд╛рдХрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕреЕрдб-рдСрди рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ).
  • рдПрдХрд╛рдзрд┐рдХ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдХреНрд░рдо рдмрджрд▓рд▓рд╛ рдЖрд╣реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдкреВрд░реНрд╡реА тАЬfoo[0], bar[0] = baz, quxтАЭ рдпрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддреАрдЪреЗ рдШрдЯрдХ baz, qux, foo, bar рдпрд╛ рдХреНрд░рдорд╛рдиреЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдд рд╣реЛрддреЗ, рдкрд░рдВрддреБ рдЖрддрд╛ foo, bar, baz, qux.
  • VWA (рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рд╡рд┐рдбреНрде рдНрд▓реЛрдХреЗрд╢рди) рдпрдВрддреНрд░рдгрд╛ рд╡рд╛рдкрд░реВрди рд╕реНрдЯреНрд░рд┐рдВрдЧрд╕рд╛рдареА рдореЗрдорд░реА рд╡рд╛рдЯрдкрд╛рд╕рд╛рдареА рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ.
  • рдЕрдВрдЧрднреВрдд рд░рддреНрди рдореЙрдбреНрдпреВрд▓реНрд╕ рдЖрдгрд┐ рдорд╛рдирдХ рд▓рд╛рдпрдмреНрд░рд░реАрдордзреНрдпреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдЕрджреНрдпрддрдирд┐рдд рдЖрд╡реГрддреНрддреНрдпрд╛. рдиреЗрдЯ-рдПрдлрдЯреАрдкреА, рдиреЗрдЯ-рдЗрдореЕрдк, рдиреЗрдЯ-рдкреЙрдк, рдиреЗрдЯ-рдПрд╕рдПрдордЯреАрдкреА, рдореЕрдЯреНрд░рд┐рдХреНрд╕, рдкреНрд░рд╛рдЗрдо рдЖрдгрд┐ рдбреАрдмрдЧ рдкреЕрдХреЗрдЬреЗрд╕ рдЕрдВрдЧрднреВрдд рдЖрд╣реЗрдд.

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

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