рд░реВрдмреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ 3.2 рдХрд╛ рд╡рд┐рдореЛрдЪрди

рд░реВрдмреА 3.2.0 рдЬрд╛рд░реА рдХреА рдЧрдИ, рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдЕрддреНрдпрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдкрд░реНрд▓, рдЬрд╛рд╡рд╛, рдкрд╛рдпрдерди, рд╕реНрдореЙрд▓рдЯреЙрдХ, рдПрдлрд┐рд▓, рдПрдбрд╛ рдФрд░ рд▓рд┐рд╕реНрдк рдХреА рд╕рд░реНрд╡реЛрддреНрддрдо рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб рдмреАрдПрд╕рдбреА ("2-рдХреНрд▓реЙрдЬ рдмреАрдПрд╕рдбреАрдПрд▓") рдФрд░ "рд░реВрдмреА" рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЬреАрдкреАрдПрд▓ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬреАрдкреАрдПрд▓рд╡реА3 рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдЧрдд рд╣реИред

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

  • CRuby рджреБрднрд╛рд╖рд┐рдпрд╛ рдХрд╛ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреЛрд░реНрдЯ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛, рдЬреЛ рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛ wasmtime рдЬреИрд╕реЗ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рд░рдирдЯрд╛рдЗрдо рдХреЗ рддрд╣рдд WebAssembly рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдХреЛрдб рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЕрд▓рдЧ рд╕реЗ рдЪрд▓рдиреЗ рдкрд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рд╕рдВрдкрд░реНрдХ рдХреЗ рд▓рд┐рдП, WASI (WebAssembly System Interface) API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, WASI рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ VFS рд░реИрдкрд░ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рд╕рдВрдкреВрд░реНрдг рд░реВрдмреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХ рдПрдХрд▓ wasm рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдкреНрд░рд╕реНрддреБрддрд┐ рдореЗрдВ рдкреИрдХреЗрдЬ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд░рдирд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЯреНрд░рд╛рдИрд░реВрдмреА рдЬреИрд╕реА рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдФрд░ рдбреЗрдореЛ рд╡реЗрдм рд╕реЗрд╡рд╛рдПрдБ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд░реНрддрдорд╛рди рдЪрд░рдг рдореЗрдВ, рдкреЛрд░реНрдЯ рдмреЗрд╕рд┐рдХ рдФрд░ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдЯреЗрд╕реНрдЯ рд╕реВрдЯ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдереНрд░реЗрдб рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдкреЛрд░реНрдЯ рдлрд╝рд╛рдЗрдмрд░, рдЕрдкрд╡рд╛рдж рдпрд╛ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдг рдХрд╛ рднреА рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
  • YJIT рдЗрди-рдкреНрд░реЛрд╕реЗрд╕ JIT рдХрдВрдкрд╛рдЗрд▓рд░, Shopify рдИ-рдХреЙрдорд░реНрд╕ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рд░реВрдмреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреА рдкрд╣рд▓ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рд░реЗрд▓ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрдИ рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рд╕реНрдерд┐рд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдЙрддреНрдкрд╛рджрди рдЙрдкрдпреЛрдЧ. рдкрд╣рд▓реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЧрдП рдПрдордЬреЗрдЖрдИрдЯреА рдЬреЗрдЖрдИрдЯреА рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реЗ рдореБрдЦреНрдп рдЕрдВрддрд░, рдЬреЛ рд╕рдВрдкреВрд░реНрдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдФрд░ рд╕реА рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рдмрд╛рд╣рд░реА рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╣реИ рдХрд┐ рд╡рд╛рдИрдЬреЗрдЖрдИрдЯреА рд▓реЗрдЬрд╝реА рдмреЗрд╕рд┐рдХ рдмреНрд▓реЙрдХ рд╡рд░реНрдЬрдирд┐рдВрдЧ (рдПрд▓рдмреАрдмреАрд╡реА) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рдПрдХреАрдХреГрдд рдЬреЗрдЖрдИрдЯреА рдХрдВрдкрд╛рдЗрд▓рд░ рд╢рд╛рдорд┐рд▓ рд╣реИред рдПрд▓рдмреАрдмреАрд╡реА рдХреЗ рд╕рд╛рде, рдЬреЗрдЖрдИрдЯреА рдкрд╣рд▓реЗ рдХреЗрд╡рд▓ рд╡рд┐рдзрд┐ рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдмрд╛рдХреА рдХреЛ рдХреБрдЫ рд╕рдордп рдмрд╛рдж рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЪрд░ рдФрд░ рддрд░реНрдХреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рджред YJIT Linux, MacOS, BSD рдФрд░ рдЕрдиреНрдп UNIX рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ x86-64 рдФрд░ Arm64/aarch64 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред

    рд░реВрдмреА рдХреЗ рд╡рд┐рдкрд░реАрдд, YJIT рдХреЛрдб рд░рд╕реНрдЯ рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдПrustc 1.58.0+ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП YJIT рдмрд┐рд▓реНрдб рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рд╣реИ рдФрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИред YJIT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ ygit-рдмреЗрдВрдЪ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдкрд░ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ 41% рдХреА рд╡реГрджреНрдзрд┐ рджрд░реНрдЬ рдХреА рдЧрдИред

    рд░реВрдмреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ 3.2 рдХрд╛ рд╡рд┐рдореЛрдЪрди

  • рдЕрдХреБрд╢рд▓ рдФрд░ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓реА рд░реЗрдЧреБрд▓рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди (ReDoS) рдореЗрдВ рдмрд╛рд╣рд░реА рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп рд╕реЗрд╡рд╛ рд╣рдорд▓реЛрдВ рд╕реЗ рдЗрдирдХрд╛рд░ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд░рдХреНрд╖рд╛ рдЬреЛрдбрд╝реА рдЧрдИред рдорд┐рд▓рд╛рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо, рдЬреЛ рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдореЗрдВ рдХрд╛рдлреА рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ '/^a*b?a*$/ =~ "a" * 50000 + "x"' рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп 10 рд╕реЗ рдШрдЯрд╛рдХрд░ 0.003 рд╕реЗрдХрдВрдб рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдиреБрдХреВрд▓рди рдХреА рд▓рд╛рдЧрдд рдореЗрдореЛрд░реА рдЦрдкрдд рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реИ, рдЬрд┐рд╕рдХреА рдЦрдкрдд рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рд▓рдЧрднрдЧ 10 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╣реИред рджреВрд╕рд░рд╛ рд╕реБрд░рдХреНрд╖рд╛ рдЙрдкрд╛рдп рдПрдХ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "Regexp.timeout = 1.0") рдЬрд┐рд╕рдХреЗ рджреМрд░рд╛рди рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
  • рд╕рд┐рдВрдЯреИрдХреНрд╕_рд╕реБрдЭрд╛рд╡ рдореЛрдб рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рдЧреБрдо рдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдорд╛рдкрди "рдЕрдВрдд" рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реЗ рдЬреБрдбрд╝реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХрд╛ рдирд┐рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдмреЗрдЬреЛрдбрд╝ `рдЕрдВрдд', рдЕрдиреБрдкрд▓рдмреНрдз рдХреАрд╡рд░реНрдб (`рдХрд░реЗрдВ', `рдбреАрдИрдПрдлрд╝`, `рдЕрдЧрд░`, рдЖрджрд┐)? 1 рд╡рд░реНрдЧ рдХреБрддреНрддрд╛ > 2 рдбрд┐рдмрд╛рд░реНрдХ > 3 рдЕрдВрдд 4 рдЕрдВрдд
  • рдкреНрд░рдХрд╛рд░реЛрдВ рдФрд░ рддрд░реНрдХреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рддрд░реНрдХреЛрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рддреНрд░реБрдЯрд┐ рд╕реНрдерд╛рди рдкреНрд░рджрд░реНрд╢рди рдореЛрдб рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: test.rb:2:in `+': nil рдХреЛ Integer (TypeError) sum = ary рдореЗрдВ рдмрд╛рдзреНрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ [0] + рдПрд░реА [1] ^^^^^^
  • рддрд░реНрдХреЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЛ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛: def foo(*) bar(*) End def baz(**) quux(**) End
  • рд░реВрдмреА_рд╡реАрдПрдо/рдПрдордЬреАрдд/рдХрдВрдкрд╛рдЗрд▓рд░ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИ - рдкреБрд░рд╛рдиреЗ рдПрдордЬреЗрдЖрдИрдЯреА рдЬреЗрдЖрдИрдЯреА рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг, рдЬрд┐рд╕реЗ рд░реВрдмреА рднрд╛рд╖рд╛ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХрд┐ рдПрдордЬреЗрдЖрдИрдЯреА рдПрдордЬреЗрдЖрдИрдЯреА рд╡рд░реНрдХрд░ рдереНрд░реЗрдб рдореЗрдВ рдЪрд▓рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред
  • рдмрдВрдбрд▓рд░ 2.4 рдореЗрдВ, рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкрдмрдЧреНрд░рдм рд╕рдВрд╕реНрдХрд░рдг рдбрд┐рдЯреЗрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдбрд╛рд░реНрдЯ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдкрдм рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╣рд▓реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЧрдП рдореЛрд▓рд┐рдирд┐рд▓реЛ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рд░реВрдмреАрдЬреЗрдореНрд╕ рдореЗрдВ рдЬрд╛рд░реА рд╣реИ, рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕реЗ рдкрдмрдЧреНрд░рдм рджреНрд╡рд╛рд░рд╛ рднреА рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  • рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЬреЗрдо рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрджреНрдпрддрди рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдорд╛рдирдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╢рд╛рдорд┐рд▓ред

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ