Design: рд╡реЗрдмрд╕рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 17 рдЕрдЧре░ 2017  ┬╖  15рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: WebAssembly/design

C# рд░рдирдЯрд╛рдЗрдо рдХреЛ wasm рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдкреВрд░реА рддрд░рд╣ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк JS рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрджрд▓ рд░рд╣рд╛ рдерд╛ред рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рдЬреЗрдПрд╕ рдХреЛ рдмрджрд▓рдиреЗ рдФрд░ рдЬрд╛рд╡рд╛, рд╕реА # рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд╕реА ++ рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рд╡реЗрдм рдРрдк рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрднрд░рдиреЗ рд╡рд╛рд▓реЗ рд░рдирдЯрд╛рдЗрдо рдХреА рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдмрдпрд╛рди рдХреЗ рд╕рд╛рде "рдХреЛрдб рджреЗрд╢реА рдХреЗ рдкрд╛рд╕ рддреЗрдЬреА рд╕реЗ рдЪрд▓реЗрдЧрд╛" , "рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рд╡реАрдПрдо рд╕реЗ рддреЗрдЬ рд╣реИрдВ" рдпрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдХреБрдЫ рднреАред

рдореИрдВ рдЬреЛ рдХрд╣рдирд╛ рдЪрд╛рд╣ рд░рд╣рд╛ рд╣реВрдВ, рдХреГрдкрдпрд╛ рдЗрд╕ рд╡реАрдбрд┐рдпреЛ рдХреЛ рджреЗрдЦреЗрдВред

WebAsm рдХреЛ JS рдХреЗ рдкреВрд░рдХ рдХреЗ рд▓рд┐рдП рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХреА рднрд╛рд╖рд╛ рдХреА рдЬрдЧрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓реЗ рд╕рдХрддрд╛ рд╣реИред

рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЖрдк рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рд╕рд░реНрд╡рд░ рд╕реЗ рд╡рд┐рддрд░рд┐рдд рд╡реЗрдмрдкреЗрдЬреЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╡реЗрдм рдЕрд╕реЗрдВрдмрд▓реА рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рдВрдХрд▓рдХ рдХреЗ рд▓рд┐рдП рджреНрд╡рд╛рд░ рдЦреЛрд▓ рджрд┐рдпрд╛ рд╣реИред

рд╣рд╛рдБ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ WebAssembly рдХреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред

рдпрд╣рд╛рдБ WebAssembly FAQ рдХрд╛ рдПрдХ рдЙрджреНрдзрд░рдг рд╣реИ:

рдЬрдмрдХрд┐ WebAssembly, рд╕рдордп рдХреЗ рд╕рд╛рде, рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╡реЗрдм рдкрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЧрддрд┐ рд╣реИ рдФрд░ рдпрд╣ рд╡реЗрдм рдХреА рдПрдХрд▓, рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд (рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИ) рдЧрддрд┐рд╢реАрд▓ рднрд╛рд╖рд╛ рдмрдиреА рд░рд╣реЗрдЧреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдЙрдореНрдореАрдж рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ JavaScript рдФрд░ WebAssembly рдХрд╛ рдПрдХ рд╕рд╛рде рдХрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

  • рд╕рдВрдкреВрд░реНрдг, рд╕рдВрдХрд▓рд┐рдд C++ рдРрдкреНрд╕ рдЬреЛ рдЪреАрдЬреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдЪрд┐рдкрдХрд╛рдиреЗ рдХреЗ рд▓рд┐рдП JavaScript рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддреЗ рд╣реИрдВред

рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдиреЗ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рд╣реИ , рдФрд░ рд╡реЗ WebAssembly рдХреЗ рд╕рд╛рде рдпрд╛ рдЙрд╕рдХреЗ рдмрд┐рдирд╛ рдРрд╕рд╛ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред

рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА C#, F#, C++, OCaml, Elm, PureScript, Haskell, Java, Python, Ruby, Perl, рдЖрджрд┐ рдХреЛ JavaScript рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдк рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП .NET рдмрд╛рдЗрдЯрдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдУрдХреИрдорд▓ рдмрд╛рдЗрдЯрдХреЛрдб рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЬреАрдбрдмреНрд▓реНрдпреВрдЯреА рд▓рдЧрднрдЧ 11 рд╡рд░реНрд╖реЛрдВ рд╕реЗ рд╣реИ рдФрд░ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдпреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдХрдИ рд╕рд╛рд▓реЛрдВ рд╕реЗ рд╣реИрдВред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рдирдИ рдмрд╛рдд рдирд╣реАрдВ рд╣реИред

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░рддрд╛ рд╣реИред WebAssembly рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдмрдирд╛рддрд╛ рд╣реИ, рдмрд╕ред


рд╣рдо рд╢реБрд░реВ рдореЗрдВ рдРрд╕реА рддрдХрдиреАрдХреЛрдВ рдХреЛ рдЕрдкрдирд╛рддреЗ рдереЗ рдЬреЛ рд╣рдорд╛рд░реЗ JS рдХреЛрдб рдХреЛ VM рдХреА рддрд░рд╣ V8 рдФрд░ рдЕрдиреНрдп рдкрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдмрдирд╛рддреА рдереАрдВ, рд▓реЗрдХрд┐рди рдЕрдм рдЖрдк рдПрдХ рдЕрд╕реЗрдВрдмрд▓реА рдХреЛрдб рд▓рд┐рдЦ рдФрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ JS рдХреЛрдб рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣рд╛рдВ, рдХреНрдпреЛрдВрдХрд┐ рдЬреЗрдЖрдИрдЯреА рдЗрдВрдЬрди (рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЧрддрд┐рд╢реАрд▓ рдкреНрд░рдХреГрддрд┐) рдХреЗ рдКрдкрд░реА рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рдХрд╛рд░рдг рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡реАрдПрдо рдореВрд▓ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХ рдкреНрд░рджрд░реНрд╢рди рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдХрдбрд╝реЗ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдирд┐рдпрдВрддреНрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред WebAssembly рдЖрдкрдХреЛ рд╡рд╣ рдирд┐рдпрдВрддреНрд░рдг рджреЗрддрд╛ рд╣реИред


рддреЛ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐, рдПрдкреАрдЖрдИ рдкреБрд▓реЛрдВ рдХреЛ рд╕рд╛рд░рдЧрд░реНрднрд┐рдд рдХрд░рдХреЗ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рд░рдирдЯрд╛рдЗрдо рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдХреЗ рдЬреЗрдПрд╕ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд┐рдП рдЬрд╛рдиреЗ рдпрд╛ рдЪрд┐рддреНрд░ рд╕реЗ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

рдирд╣реАрдВ, рд▓реЛрдЧ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред

рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рднрд╛рд╖рд╛рдПрдБ рд╣реИрдВ: рдкрд╛рдпрдерди, рдкрд░реНрд▓, рд░реВрдмреА, рдкреАрдПрдЪрдкреА, рд╣рд╛рд╕реНрдХреЗрд▓, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдиреЛрдб.рдЬреЗрдПрд╕), рдУрдХреИрдорд▓, рд╕реА ++, рдЬрд╛рд╡рд╛, рдЖрджрд┐ред

рд▓реЛрдЧ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд╣рд┐рдд рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╣реАрдВ рдирд╣реАрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдПрдХ ( рдмрд╣реБрдд рд╣реА рдЕрд╕рдВрднрд╡) рдХрд╛рд▓реНрдкрдирд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЬрд╣рд╛рдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХреА рднрд╛рд╖рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЛрдЧ рдЕрднреА рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ WebAssembly рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдЕрдм рдЖрдк рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрддреНрдпрд╛рджрд┐ рдЬреИрд╕реЗ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рдХреЛ рдмрджрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╡реЗрдм рдХреЗ рд▓рд┐рдП рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рдЕрдЪреНрдЫреЗ рдХрд╛рд░рдг рд╣реИрдВред

рдмреЗрд╢рдХ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдВрдЧреЗ, рдФрд░ рдХреБрдЫ рд▓реЛрдЧ рдЙрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЬрд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред

рдореИрдВ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рд╕рд╛рд▓реЛрдВ рд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдЪреНрдЫреЗ рд╡рд┐рдХрд▓реНрдк рдореМрдЬреВрдж рд╣реИрдВ (рдЬреИрд╕реЗ рдХрд┐ Haxe ) рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЛрдВрдиреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрднреА рдирд╣реАрдВ рдмрджрд▓рд╛ред

рд╕рднреА 15 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВ рд╕реА # рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрд╕рд▓ рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд╣реАрдВ рд▓реЗ рд╕рдХрддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрджрд┐ рдЖрдкрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рддреЛ рдЖрдк рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдХреБрдЫ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдХреЗ рд╕рдВрдЪрд╛рд▓рди, рдЬреИрд╕реЗ "+, -, *, /" рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдЧрдгрд┐рдд рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд╛рд╕рдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬ рд╣реИред WebAssembly рдореЗрдВ рдФрд░ рд╡рд╛рдкрд╕ред #1120

рджреВрд╕рд░рд╛, рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП, рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдЗрд╕рдХреЗ рд╡реНрдпрд╛рдХрд░рдг рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдереЗ, рдЙрдирдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЕрдиреНрдп рдЧреИрд░-рд╡реЗрдм рд╡рд┐рдХрд╛рд╕рд╢реАрд▓ рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рд╡реЗрдм рдРрдкреНрд╕ рдмрдирд╛рдирд╛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдФрд░ рдХрдард┐рди рд╣реИред

рдЕрдВрдд рдореЗрдВ, " рдмрд╛рдЗрдирд░реА рдПрдПрд╕рдЯреА " рдХреА рдорджрдж рд╕реЗ, рд╡рд░реНрддрдорд╛рди рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдЙрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдкрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдВрд╢реЛрдзрди рдХреЗ рдПрдХ рдирдП рд╕реНрддрд░ рдкрд░ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдкреБрдирд╢реНрдЪ:
рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╕реА # рдпрд╛ рдЬрд╛рд╡рд╛, рдпрджрд┐ рдЖрдк рдЗрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рднрд╛рд╖рд╛ рдХреА рджрдХреНрд╖рддрд╛ рдХреБрдЫ "рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА" рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдЬреИрд╕реЗ "рдХрдордЬреЛрд░ рдкреНрд░рдХрд╛рд░" рдФрд░ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рд╕реАрдорд┐рдд рд╣реЛрдЧреА, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред

@Becavalier рд╣рд╛рдБ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдЬреЗрдПрд╕ рд╕рдВрджрд░реНрдн рдУрд╡рд░рд╣реЗрдб рд╕реЗ рдПрдХ wasm рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд░рдирдЯрд╛рдЗрдо рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рддрдм рддрдХ рд╕рдВрд╡рд╛рдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЗрд╕рдХреА рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ .. рдЬреИрд╕реЗ рдбреЛрдо рдХреНрд╡реЗрд░реА/рдореИрдирд┐рдкреБрд▓реЗрд╢рди, рд╕реАрдПрд╕рдПрд╕ рдЗрдирд▓рд╛рдЗрди, рдХреИрдирд╡рд╛рд╕ рдкреЗрдВрдЯреНрд╕ _etc.._ wasm рд╕рдиреНрджрд░реНрдн рдХреЗ рдЕрдВрджрд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдирд┐рд╖реНрдкрд╛рджрди рдмрд╣реБрдд рддреЗрдЬрд╝ рд╣реИрдВред рджреЗрд░реА рддрдм рд╕рд╛рдордиреЗ рдЖрддреА рд╣реИ рдЬрдм JS рдмреНрд░рд┐рдЬ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ #1120 рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдк рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдХрд┐ wasm рд╕рдВрджрд░реНрдн рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реИ рдЬреЛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рджреЗрд░реА рд╣реИред

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

рддреЛ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐, рдПрдкреАрдЖрдИ рдкреБрд▓реЛрдВ рдХреЛ рд╕рд╛рд░рдЧрд░реНрднрд┐рдд рдХрд░рдХреЗ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рд░рдирдЯрд╛рдЗрдо рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдХреЗ рдЬреЗрдПрд╕ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд┐рдП рдЬрд╛рдиреЗ рдпрд╛ рдЪрд┐рддреНрд░ рд╕реЗ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рд╡реЗрдм рдЕрд╕реЗрдВрдмрд▓реА рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рдВрдХрд▓рдХ рдХреЗ рд▓рд┐рдП рджреНрд╡рд╛рд░ рдЦреЛрд▓ рджрд┐рдпрд╛ рд╣реИред

рд╣рдо рд╢реБрд░реВ рдореЗрдВ рдРрд╕реА рддрдХрдиреАрдХреЛрдВ рдХреЛ рдЕрдкрдирд╛рддреЗ рдереЗ рдЬреЛ рд╣рдорд╛рд░реЗ JS рдХреЛрдб рдХреЛ VM рдХреА рддрд░рд╣ V8 рдФрд░ рдЕрдиреНрдп рдкрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдмрдирд╛рддреА рдереАрдВ, рд▓реЗрдХрд┐рди рдЕрдм рдЖрдк рдПрдХ рдЕрд╕реЗрдВрдмрд▓реА рдХреЛрдб рд▓рд┐рдЦ рдФрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ JS рдХреЛрдб рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реИред

рдЕрдм рдЖрдк рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрддреНрдпрд╛рджрд┐ рдЬреИрд╕реЗ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рдХреЛ рдмрджрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╡реЗрдм рдХреЗ рд▓рд┐рдП рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕, рдЕрдкрдиреА рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдХреЛ рдкрд╛рд░ рд░рдЦреЗрдВ ред рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдХреБрдЫ рдмрдбрд╝реЗ рдХрджрдо рдХреА рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкреБрдирд╢реНрдЪ: рдореБрдЭреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рд╕реА-рд▓реИрдВрдЧ рдкрд╕рдВрдж рд╣реИ

рд╡реЗрдм рдЕрд╕реЗрдВрдмрд▓реА рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рдВрдХрд▓рдХ рдХреЗ рд▓рд┐рдП рджреНрд╡рд╛рд░ рдЦреЛрд▓ рджрд┐рдпрд╛ рд╣реИред

рд╣рд╛рдБ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ WebAssembly рдХреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред

рдпрд╣рд╛рдБ WebAssembly FAQ рдХрд╛ рдПрдХ рдЙрджреНрдзрд░рдг рд╣реИ:

рдЬрдмрдХрд┐ WebAssembly, рд╕рдордп рдХреЗ рд╕рд╛рде, рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╡реЗрдм рдкрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЧрддрд┐ рд╣реИ рдФрд░ рдпрд╣ рд╡реЗрдм рдХреА рдПрдХрд▓, рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд (рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИ) рдЧрддрд┐рд╢реАрд▓ рднрд╛рд╖рд╛ рдмрдиреА рд░рд╣реЗрдЧреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдЙрдореНрдореАрдж рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ JavaScript рдФрд░ WebAssembly рдХрд╛ рдПрдХ рд╕рд╛рде рдХрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

  • рд╕рдВрдкреВрд░реНрдг, рд╕рдВрдХрд▓рд┐рдд C++ рдРрдкреНрд╕ рдЬреЛ рдЪреАрдЬреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдЪрд┐рдкрдХрд╛рдиреЗ рдХреЗ рд▓рд┐рдП JavaScript рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддреЗ рд╣реИрдВред

рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдиреЗ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рд╣реИ , рдФрд░ рд╡реЗ WebAssembly рдХреЗ рд╕рд╛рде рдпрд╛ рдЙрд╕рдХреЗ рдмрд┐рдирд╛ рдРрд╕рд╛ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред

рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА C#, F#, C++, OCaml, Elm, PureScript, Haskell, Java, Python, Ruby, Perl, рдЖрджрд┐ рдХреЛ JavaScript рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдк рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП .NET рдмрд╛рдЗрдЯрдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдУрдХреИрдорд▓ рдмрд╛рдЗрдЯрдХреЛрдб рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЬреАрдбрдмреНрд▓реНрдпреВрдЯреА рд▓рдЧрднрдЧ 11 рд╡рд░реНрд╖реЛрдВ рд╕реЗ рд╣реИ рдФрд░ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдпреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдХрдИ рд╕рд╛рд▓реЛрдВ рд╕реЗ рд╣реИрдВред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рдирдИ рдмрд╛рдд рдирд╣реАрдВ рд╣реИред

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░рддрд╛ рд╣реИред WebAssembly рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдмрдирд╛рддрд╛ рд╣реИ, рдмрд╕ред


рд╣рдо рд╢реБрд░реВ рдореЗрдВ рдРрд╕реА рддрдХрдиреАрдХреЛрдВ рдХреЛ рдЕрдкрдирд╛рддреЗ рдереЗ рдЬреЛ рд╣рдорд╛рд░реЗ JS рдХреЛрдб рдХреЛ VM рдХреА рддрд░рд╣ V8 рдФрд░ рдЕрдиреНрдп рдкрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдмрдирд╛рддреА рдереАрдВ, рд▓реЗрдХрд┐рди рдЕрдм рдЖрдк рдПрдХ рдЕрд╕реЗрдВрдмрд▓реА рдХреЛрдб рд▓рд┐рдЦ рдФрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ JS рдХреЛрдб рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣рд╛рдВ, рдХреНрдпреЛрдВрдХрд┐ рдЬреЗрдЖрдИрдЯреА рдЗрдВрдЬрди (рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЧрддрд┐рд╢реАрд▓ рдкреНрд░рдХреГрддрд┐) рдХреЗ рдКрдкрд░реА рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рдХрд╛рд░рдг рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡реАрдПрдо рдореВрд▓ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХ рдкреНрд░рджрд░реНрд╢рди рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдХрдбрд╝реЗ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдирд┐рдпрдВрддреНрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред WebAssembly рдЖрдкрдХреЛ рд╡рд╣ рдирд┐рдпрдВрддреНрд░рдг рджреЗрддрд╛ рд╣реИред


рддреЛ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐, рдПрдкреАрдЖрдИ рдкреБрд▓реЛрдВ рдХреЛ рд╕рд╛рд░рдЧрд░реНрднрд┐рдд рдХрд░рдХреЗ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рд░рдирдЯрд╛рдЗрдо рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдХреЗ рдЬреЗрдПрд╕ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд┐рдП рдЬрд╛рдиреЗ рдпрд╛ рдЪрд┐рддреНрд░ рд╕реЗ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

рдирд╣реАрдВ, рд▓реЛрдЧ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред

рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рднрд╛рд╖рд╛рдПрдБ рд╣реИрдВ: рдкрд╛рдпрдерди, рдкрд░реНрд▓, рд░реВрдмреА, рдкреАрдПрдЪрдкреА, рд╣рд╛рд╕реНрдХреЗрд▓, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдиреЛрдб.рдЬреЗрдПрд╕), рдУрдХреИрдорд▓, рд╕реА ++, рдЬрд╛рд╡рд╛, рдЖрджрд┐ред

рд▓реЛрдЧ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд╣рд┐рдд рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╣реАрдВ рдирд╣реАрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдПрдХ ( рдмрд╣реБрдд рд╣реА рдЕрд╕рдВрднрд╡) рдХрд╛рд▓реНрдкрдирд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЬрд╣рд╛рдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХреА рднрд╛рд╖рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЛрдЧ рдЕрднреА рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ WebAssembly рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдЕрдм рдЖрдк рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрддреНрдпрд╛рджрд┐ рдЬреИрд╕реЗ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рдХреЛ рдмрджрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╡реЗрдм рдХреЗ рд▓рд┐рдП рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рдЕрдЪреНрдЫреЗ рдХрд╛рд░рдг рд╣реИрдВред

рдмреЗрд╢рдХ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдВрдЧреЗ, рдФрд░ рдХреБрдЫ рд▓реЛрдЧ рдЙрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЬрд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред

рдореИрдВ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рд╕рд╛рд▓реЛрдВ рд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдЪреНрдЫреЗ рд╡рд┐рдХрд▓реНрдк рдореМрдЬреВрдж рд╣реИрдВ (рдЬреИрд╕реЗ рдХрд┐ Haxe ) рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЛрдВрдиреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрднреА рдирд╣реАрдВ рдмрджрд▓рд╛ред

рдкрд░ 4 03:42 рд╕рд┐рддрдВрдмрд░ 2017, Pauan [email protected] рд▓рд┐рдЦрд╛ рд╣реИ:
>

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░рддрд╛ рд╣реИред WebAssembly рдмрд╕ рдмрдирд╛рддрд╛ рд╣реИ
рдЕрдиреНрдп рднрд╛рд╖рд╛рдПрдВ рдЕрдзрд┐рдХ рдХреБрд╢рд▓, рдмрд╕ рдЗрддрдирд╛ рд╣реАред

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

@ рд░реЙрд╕рдмрд░реНрдЧ-рдХреНрд░реЛрдорд┐рдпрдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдк рд╕рд╣реА рд╣реИрдВ, рдореИрдВ рдЙрд╕ рд╡рд┐рд╡рд░рдг рдХреЛ рднреВрд▓ рдЧрдпрд╛ рдерд╛ред рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

@Pauan рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЖрдкрдХреА рдХреБрдЫ рдмрд╛рддреЗрдВ рдорд╛рдиреНрдп рд╣реИрдВ рдФрд░ рд╕рдордЭ рдореЗрдВ рдЖрддреА рд╣реИрдВ, рдореИрдВ рд╕рднреА рд╕реЗ рд╕рд╣рдордд рдирд╣реАрдВ рд╣реВрдБред

рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ рд╕реА # рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕реНрддрд░ рдкрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╢рд╛рдЬрдирдХ рдФрд░ рдПрдХ рд╣рддреНрдпрд╛рд░рд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрддрд╛ рд╣реИред рдпрд╛рдиреА .. рдореИрдВ рдХрд┐рд╕реА рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЛ рд▓рд┐рдЦреЗ рдмрд┐рдирд╛ рдкреВрд░реА рддрд░рд╣ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╡реЗрдмрдкреИрдк рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реА # рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдзрд╛рд░рд┐рдд рдврд╛рдВрдЪреЗ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╣рдж рддрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рд░рд╛рд╕рдд рдХреЛ рдореНрдпреВрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдореМрдХрд╛ рд╣реИред

рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА C#, F#, C++, OCaml, Elm, PureScript, Haskell, Java, Python, Ruby, Perl, рдЖрджрд┐ рдХреЛ JavaScript рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рд╛рдБ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрд╕реНрд╡реАрд░ рдореЗрдВ рдерд╛ред рд▓реЗрдХрд┐рди рдЕрдм WASM/Webasm рдХреЗ рд╕рд╛рде рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдореЗрд░рд╛ рдордХрд╕рдж рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рдХреЛрдИ рднреА рд╡рд╛рд╕рдо рдХреЛ рд╕реАрдзреЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЬрдм рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХ рдПрдкреАрдЖрдИ рдореБрдЦреМрдЯрд╛ рдкрд░рдд рдпрд╛ рдкреБрд▓ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░ рдЖрдзрд╛рд░ рдХреЛ рд╡реЗрдмрдПрдк рдХреЗ рд╕рд╛рде рд╡реЗрдмрдПрдк рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдореЗрд░рд╛ рдорддрд▓рдм рд╢реБрджреНрдз рд╡реЗрдмрдПрдк рдПрдПрд╕рдкреАрдиреЗрдЯ рдирд╣реАрдВ рд╣реИ, рдЬреЗрдПрд╕рдкреА рдереЛрдбрд╝реЗ рдврд╛рдВрдЪреЗред

рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдЕрдиреНрдп рднрд╛рд╖рд╛рдПрдБ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рд╣реИрдВ, рдФрд░ рд╡реЗ WebAssembly рдХреЗ рд╕рд╛рде рдпрд╛ рдЙрд╕рдХреЗ рдмрд┐рдирд╛ рдРрд╕рд╛ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреАред

рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА C#, F#, C++, OCaml, Elm, PureScript, Haskell, Java, Python, Ruby, Perl, рдЖрджрд┐ рдХреЛ JavaScript рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЬрдмрдХрд┐ рдХрдИ рднрд╛рд╖рд╛рдПрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИрдВ, рдХреНрдпрд╛ рд╡реЗрдмрд╕рдо рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдВрдХреЗрддрд┐рдХ рд▓реЛрдб рдФрд░ рд░рдирдЯрд╛рдЗрдо рдкреНрд░рджрд░реНрд╢рди рджрдВрдб рд╕реЗ рдмрдЪрдирд╛ рд╣реЛрдЧрд╛? рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдореБрджреНрджреЗ рдпрджрд┐ рдЖрдкрдиреЗ рд╡реЗрдмрд╕рдо рдХреЛ рдкреВрд░реНрдг рд╕реА рд╡реАрдПрдо рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рд╣реИ?

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

рдХреНрдпрд╛ рдпреЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рд░реВрдмреА -> рд╡реЗрдмрд╕рдо рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд╕рд╛рде, рдФрд░ рд╡рд░реНрддрдорд╛рди рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рддреБрд▓рдиреАрдп рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ?

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рд░реВрдмреА (рдУрдкрд▓ рдХреЗ рд╕рд╛рде) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдореВрд▓ рд░реВрдк рд╕реЗ рдкрд╣рд▓реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛):

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ + рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде, рдпрд╣ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП

5 + " example" === "5 example"

рд░реВрдмреА рдХреЗ рдкрд╛рд╕ рдЕрдзрд┐рдХ рдордЬрдмреВрдд рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╣реИ, рдФрд░ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ:

5 + " example"
#TypeError: String can't be coerced into Integer

рдЗрд╕рд▓рд┐рдП рдУрдкрд▓ рдХреЛ рдХрдИ рдореБрдЦреНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдкреНрд▓рд╕, рдФрд░ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рддрд░реАрдХреЗ рдмрдирд╛рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ

function $rb_plus(lhs, rhs) {
  return (typeof(lhs) === 'number' && typeof(rhs) === 'number') ? lhs + rhs : lhs['$+'](rhs);
}
String.prototype['$+'] = function (r){var t=this,n=arguments.length;return 1!==n&&e.ac(n,1,this,"+"),r=ke.get("Opal").$coerce_to(r,ke.get("String"),"to_str"),t+r.$to_s()}

рдЗрд╕реА рддрд░рд╣ рдХрдИ рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдПред

# Ruby: if a || b
if ((($a = ((($b = a) !== false && $b !== nil && $b != null) ? $b : b)) !== nil && $a != null && (!$a.$$is_boolean || $a == true))) {

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдПрдХ рдЬреЗрдЖрдИрдЯреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХреЗ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╡реЗ рдХрд░реАрдм рд╣реИрдВ (рдорд╛рдЗрдХреНрд░реЛ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдкреВрд░реЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдРрдк/рдкреЗрдЬ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рд░реВрдмреА рд╕рдВрд╕реНрдХрд░рдг рдХрд╛рдлреА рдзреАрдорд╛ рдерд╛) рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рд╕рд┐рд░реНрдл рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рдЖрд╢рд╛рд╡рд╛рджреА рдЬреАрд╡рди рдХрдард┐рди?

рдФрд░ рдлрд┐рд░ рднреА, рдХреБрдЫ рдЪреАрдЬреЗрдВ рдЧрд▓рдд рд╣реИрдВ рдпрд╛ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗрдмрд╕рдо рдореЗрдВ рдореВрд▓ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЬреЗрдПрд╕ рдХреЗ рдмрдЬрд╛рдп рд╡реЗрдмрд╕рдо рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ):

1 / 2 == 0.5 # Should be 0, Ruby has integer division

str = "Hello"
str << " World" # Opal: String#<< not supported. Mutable String methods are not supported in Opal.
puts str # "Hello World"

@рдирд┐рд░рд╕

рдореИрдВ рдХрд┐рд╕реА рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЛ рд▓рд┐рдЦреЗ рдмрд┐рдирд╛ рдкреВрд░реА рддрд░рд╣ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╡реЗрдмрдкреИрдк рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реА # рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рд╣рд╛рдВ, рдФрд░ рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ (рдореИрдВ рдПрдХ рдРрд╕реА рднрд╛рд╖рд╛ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ рдореИрдВ WebAssembly рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ), рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА WebAssembly рдХреЗ рдмрд┐рдирд╛ рднреА рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХреЛрдИ рднреА рд╡рд╛рд╕рдо рдХреЛ рд╕реАрдзреЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЬрдм рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХ рдПрдкреАрдЖрдИ рдореБрдЦреМрдЯрд╛ рдкрд░рдд рдпрд╛ рдкреБрд▓ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░ рдЖрдзрд╛рд░ рдХреЛ рд╡реЗрдмрдПрдк рдХреЗ рд╕рд╛рде рд╡реЗрдмрдПрдк рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдореЗрд░рд╛ рдорддрд▓рдм рд╢реБрджреНрдз рд╡реЗрдмрдПрдк рдПрдПрд╕рдкреАрдиреЗрдЯ рдирд╣реАрдВ рд╣реИ, рдЬреЗрдПрд╕рдкреА рдереЛрдбрд╝реЗ рдврд╛рдВрдЪреЗред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдФрд░ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рд╕рдВрднрд╡ рд╣реИред рдЖрдкрдХреЛ WebAssembly рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЖрдк рдЕрднреА рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ asm.js рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рд╣реИред


@wnewbery

рдЬрдмрдХрд┐ рдХрдИ рднрд╛рд╖рд╛рдПрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИрдВ, рдХреНрдпрд╛ рд╡реЗрдмрд╕рдо рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдВрдХреЗрддрд┐рдХ рд▓реЛрдб рдФрд░ рд░рдирдЯрд╛рдЗрдо рдкреНрд░рджрд░реНрд╢рди рджрдВрдб рд╕реЗ рдмрдЪрдирд╛ рд╣реЛрдЧрд╛? рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдореБрджреНрджреЗ рдпрджрд┐ рдЖрдкрдиреЗ рд╡реЗрдмрд╕рдо рдХреЛ рдкреВрд░реНрдг рд╕реА рд╡реАрдПрдо рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рд╣реИ?

рдпрд╣ рдкрд╛рд░реНрд╕ рд╕рдордп рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд░рдирдЯрд╛рдЗрдо рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рджреЛ: asm.js рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рд╡рд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рдЧрднрдЧ рдореВрд▓ рдЧрддрд┐ рд╕реЗ рдЪрд▓реЗрдЧрд╛ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЖрдк рдХрд┐рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЙрд╕реА рдЧрддрд┐ рд╕реЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕ рдЧрддрд┐ рд╕реЗ рд╡рд╣ рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рдЪрд▓рддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП рдХрд┐рд╕реА рднрд╛рд╖рд╛ рдХреЛ рд▓реЗрдирд╛, рдЙрд╕рдХреЗ VM, рд░рдирдЯрд╛рдЗрдо рдФрд░ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рдХреЛ asm.js рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЬреЛ рднреА рднрд╛рд╖рд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрд╕реЗ рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рд▓рдЧрднрдЧ рдЙрд╕реА рдЧрддрд┐ рд╕реЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдХрд╛рдлреА рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рд╕рдВрднрд╡ рд╣реЛ рдЪреБрдХрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдБрдХрд┐, VM, рд░рдирдЯрд╛рдЗрдо рдФрд░ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ рдХрд╛рдлреА рдмрдбрд╝рд╛ рд╣реЛрдЧрд╛ (рдХрдИ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ)ред

рдФрд░ рдЬреЗрдПрд╕ рдПрдкреАрдЖрдИ (рдбреАрдУрдПрдо рдХреА рддрд░рд╣) рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

рд▓реЗрдХрд┐рди рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдиреЗ рдЗрд╕реЗ рд╡реИрд╕реЗ рднреА рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ PyPy.js рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рдмрдирд╛рдИ рд╣реИрдВ рдЬреЛ PyPy рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ asm.js рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреА рд╣реИрдВред

рдпрд╣ CPython рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬрд╝ рдЪрд▓рддрд╛ рд╣реИ (рд╣рд╛рдБ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ! PyPy рджреБрднрд╛рд╖рд┐рдпрд╛ рдЬреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдФрд░ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ , рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рджреЗрд╢реА CPython рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬрд╝реА рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ!)

рд▓реЗрдХрд┐рди рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ рдХрд╛рдлреА рдЦрд░рд╛рдм рд╣реИ (5 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ gzipped, 15 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдХрдЪреНрдЪрд╛)ред

рддреЛ рдЖрдк рд░реВрдмреА рдХреЗ рд╡реАрдПрдо + рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ + рд░рдирдЯрд╛рдЗрдо рдХреЛ asm.js рдкрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ , рдФрд░ рдпрд╣ рдмрд╣реБрдд рддреЗрдЬрд╝ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рд╡реЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛрдВрдЧреАред рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд▓реЛрдЧ рдУрдкрд▓ рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рдмрдирд╛рддреЗ рд╣реИрдВред

WebAssembly asm.js рдХрд╛ рдЕрдЧрд▓рд╛ рд╡рд┐рдХрд╛рд╕ рд╣реИред рдлрд┐рд▓рд╣рд╛рд▓, рдЖрдк WebAssembly рдХреЗ рд╕рд╛рде рдЬреЛ рдХреБрдЫ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк asm.js рдХреЗ рд╕рд╛рде рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рддреЛ рд╣рд╛рдБ рдЖрдкрдХреА рднрд╛рд╖рд╛ + VM + рд░рдирдЯрд╛рдЗрдо + рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рдХреЛ WebAssembly рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдпрд╣ рд▓рдЧрднрдЧ рдореВрд▓ рдЧрддрд┐ рд╕реЗ рдЪрд▓реЗрдЧрд╛ред

рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдореЗрдВ asm.js рдХреЗ рд╕рдорд╛рди рд╣реА рдбрд╛рдЙрдирд╕рд╛рдЗрдбреНрд╕ рд╣реИрдВ: рдмрд╣реБрдд рдмрдбрд╝рд╛ рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░, рдФрд░ JS API рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдирд╛ рдХрдард┐рди рд╣реИред

WebAssembly рдФрд░ asm.js рдХреЗ рдмреАрдЪ рд╕рд╛рдд рдЕрдВрддрд░ рд╣реИрдВ:

  1. WebAssembly рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ asm.js рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ (5%) рддреЗрдЬрд╝ рд╣реИред

  2. рдпрджрд┐ рдЖрдк 64-рдмрд┐рдЯ рдкреВрд░реНрдгрд╛рдВрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ WebAssembly asm.js рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ (~ 400%) рддреЗрдЬрд╝ рд╣реИред

  3. WebAssembly рдХреЛ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рд░рдирдЯрд╛рдЗрдо рдЧрддрд┐ рдореЗрдВ рд╕реБрдзрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд▓реЛрдб рд╕рдордп WebAssembly рдХреЗ рд╕рд╛рде рддреЗрдЬ рд╣реИред

  4. WebAssembly рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ asm.js рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░ (рд▓рдЧрднрдЧ 10-20% рдЫреЛрдЯрд╛) рд╕реЗ рдЫреЛрдЯрд╛ рд╣реИред

  5. WebAssembly рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ asm.js рдХреЗ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИ (рдереНрд░реЗрдбреНрд╕, рд╕рдорд╡рд░реНрддреА, рд╢реВрдиреНрдп-рд▓рд╛рдЧрдд рдЕрдкрд╡рд╛рдж, рдЖрджрд┐)ред

  6. WebAssembly рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЕрдм рдЖрдкрдХреЛ рдЕрдкрдиреА рднрд╛рд╖рд╛ рдХреЗ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рдХреЛ WebAssembly рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдЫреЛрдЯреЗ рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░)ред

  7. WebAssembly рднрд╡рд┐рд╖реНрдп рдореЗрдВ JS API (рдЬреИрд╕реЗ DOM) рдХрд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд▓реЗрдЧрд╛ред

рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рднреА рдЖрдкрдХреА рднрд╛рд╖рд╛ рдХреЗ VM + рд░рдирдЯрд╛рдЗрдо рдХреЛ WebAssembly рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реЛрдЧрд╛ред

рдпрджрд┐ рдЖрдкрдХреА рднрд╛рд╖рд╛ рдХреЗ VM + рд░рдирдЯрд╛рдЗрдо + рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рдХреЛ asm.js рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рдЖрдкрдХреЛ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдпрд╣ рдЕрднреА рднреА WebAssembly рдХреЗ рд╕рд╛рде рднреА рд╕реНрд╡реАрдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдФрд░ рдЕрдЧрд░ рдЖрдкрдХреА рднрд╛рд╖рд╛ рдХреЗ VM + рд░рдирдЯрд╛рдЗрдо + рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рдЖрдкрдХреЛ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ, рддреЛ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА asm.js рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдФрд░ рдлрд┐рд░ рдмрд╛рдж рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ WebAssembly рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред

рдХреНрдпрд╛ рдпреЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рд░реВрдмреА -> рд╡реЗрдмрд╕рдо рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд╕рд╛рде, рдФрд░ рд╡рд░реНрддрдорд╛рди рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рддреБрд▓рдиреАрдп рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ?

WebAssembly рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рджреЗрд╢реА рдЧрддрд┐ рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓рд╛рдирд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рдЙрд╕реА рдЧрддрд┐ рд╕реЗ рдЪрд▓рд╛рдирд╛ рдЬреЛ рд╡реЗ рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рдЪрд▓рд╛рддреЗ рд╣реИрдВред

рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рд░реВрдмреА рдХреЛ WebAssembly рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЙрд╕реА рдЧрддрд┐ рд╕реЗ рдЪрд▓реЗрдЧрд╛ рдЬрд┐рд╕ рдЧрддрд┐ рд╕реЗ рд░реВрдмреА рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рдЪрд▓рддреА рд╣реИред

рд░реВрдмреА рдХрд╛рдлреА рдзреАрдореА рднрд╛рд╖рд╛ рд╣реИред WebAssembly рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рд╣реЛрдиреЗ рдкрд░ рднреА рдзреАрдореА рднрд╛рд╖рд╛рдПрдБ рдФрд░ рдзреАрдореЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЕрднреА рднреА рдзреАрдореЗ рд╣реЛрдВрдЧреЗред

1 / 2 == 0.5 # Should be 0, Ruby has integer division

рдпрд╣ рдУрдкрд▓ рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИ рдЬрд┐рд╕реЗ рдХреЗрд╡рд▓ $rb_divide рдлрд╝рдВрдХреНрд╢рди рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдмрджрд▓рдХрд░ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

str << " World" # Opal: String#<< not supported. Mutable String methods are not supported in Opal.

рдЗрд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд░рдгрд┐рдпреЛрдВ (рдЬреЛ рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╣реИрдВ) рдореЗрдВ рдУрдкрд▓ рд╕рдВрдХрд▓рди рддрд╛рд░ рд╣реЛрдиреЗ рд╕реЗ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@рдкреМрдЖрди

WebAssembly рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ asm.js рдХреЗ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИ (рдереНрд░реЗрдбреНрд╕, рд╕рдорд╡рд░реНрддреА, рд╢реВрдиреНрдп-рд▓рд╛рдЧрдд рдЕрдкрд╡рд╛рдж, рдЖрджрд┐)ред

рдереНрд░реЗрдб рдХрдИ рднрд╛рд╖рд╛рдУрдВ, рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ, рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдереНрд░реЗрдб рдХреЗ рдмрд┐рдирд╛, рд╕реА ++, рд╕реА #, рдЬрд╛рд╡рд╛ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдХрдИ рдРрдкреНрд╕ рдЬреЛ рдорд▓реНрдЯреАрдереНрд░реЗрдб рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рд╡реЗрдмрдПрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рд╕рд┐рдордб рдЬреИрд╕реА рдПрдХ рдФрд░ рдЕрдЪреНрдЫреА рдЪреАрдЬ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░рдирд╛ рд╕рдорд░реНрдерди _рднрд╡рд┐рд╖реНрдп рдореЗрдВ (?)_)ред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ asm.js рдкрд░реНрдпрд╛рдкреНрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╛ рддреЛ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рди рд╣реА рдкреЛрд░реНрдЯ рдХреНрд╖рдорддрд╛, рдпрджрд┐ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ, рддреЛ рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ asm.js рдкрд░ рдЕрдзрд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп "рдкреЛрд░реНрдЯреЗрдб" рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред

рдЬреИрд╕рд╛ рдХрд┐ рд╕рднреА рдиреЗ рдХрд╣рд╛ рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рджреВрд░ рдирд╣реАрдВ рдЬрд╛рдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ рдФрд░ рд╡рд┐рд░рд╛рд╕рдд рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рдХрд╛рдВрд╢ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЕрднреА рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдирдИ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдмрдирд╛рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рдЗрд╕реЗ рдЙрди рд╕рднреА рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рднреЛрдВ рдХреЗ рд▓рд┐рдП wasm рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдЧрд╛ред

@unmello , рдЙрд╕ рдорд┐рдердХ рдХреЛ рдлрд┐рд░ рд╕реЗ

рд╣рд╛рдБ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдореИрдВ рднреВрд▓ рдЧрдпрд╛ рдерд╛ рдореЗрд░рд╛ рдорддрд▓рдм рдерд╛ рдХрд┐ рдпрд╣ рддреЗрдЬреА рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░реЗрдЧрд╛
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдХреБрдЫ рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрд░реНрде рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рд▓реЛрдЧ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдиреБрдХрд╕рд╛рди рдХреЗ wasm рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рд╛рд▓ рдкреБрд░рд╛рдирд╛ рдЯрд┐рдХрдЯ рд▓реЗрдиреЗ рдореЗрдВ рд╕рд╣рдЬ рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди, рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдФрд░ рд╕рд┐рд░реНрдл рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╢реЗрдЦрд╝реА рдХреЗ рд▓рд┐рдПред

рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ WASM рд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рд╕рдВрд╢рдп рдореЗрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ WASM рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рд▓реЛрдЧ рдЬреНрдпрд╛рджрд╛рддрд░ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд╣ рднрд╛рд╖рд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╡реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдпрд╛ рдЪрд╛рд╣рддреЗ рдереЗ)ред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдХрдо рд╕реЗ рдХрдо, рдмреЗрдпрд░рдмреЛрди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд╣ рдирд╣реАрдВ рд╣реИ рдЬреЛ рд▓реЛрдЧ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд▓реЛрдЧ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рдХреЗ рд╕рд╛рде рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рддреГрддреАрдп рдкрдХреНрд╖ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрдВрдкрд╛рдЗрд▓рд░ рд╣реИрдВред рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧреЛрдВ рдиреЗ рдорд╛рдирдХреЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛

рд▓реЗрдХрд┐рди рдЕрдиреБрд╡рд╛рдж рдЕрдкрдиреЗ рд╕реНрд╡рднрд╛рд╡ рд╕реЗ, рд╕рдВрдХрд▓рди рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИред рдПрдХ рднрд╛рд╖рд╛ рдХреЛ рджреВрд╕рд░реА рднрд╛рд╖рд╛ рдореЗрдВ рдореИрдк рдХрд░рдиреЗ рдХреА рдЧрдгрд┐рддреАрдп рд╕рдорд╕реНрдпрд╛ рд╣рдореЗрд╢рд╛ рд╕реНрдерд╛рдиреАрдп рджрд╛рдпрд░реЗ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдХреБрдЫ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рджреВрд╕рд░реА рддрд░рдл рд▓реЗ рдЬрд╛рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд░рдирд╛ рдПрдХ рдХрдард┐рди рд╕рдорд╕реНрдпрд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЧреИрд░-рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ-рдЬреИрд╕реЗ рдЯреНрд░рд╛рдВрд╕рдкрд┐рд▓рд░ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЕрдкрдирд╛рдП рдирд╣реАрдВ рдЬрд╛рддреЗ рд╣реИрдВ (рдпрд╛ рдЙрди рдкрд░ рднрд░реЛрд╕рд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)ред

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

рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ WASM рдПрдХ рджрд┐рди рдореЗрдВ рд╕рдм рдХреБрдЫ рдмрджрд▓ рджреЗрдЧрд╛ред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЕрднреА рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рд╣реИ, рдЬрдмрдХрд┐ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╣реАрдВ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореИрдВ рд╕рдордп рд▓реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рдореЗрдВ рд╣реЛрдЧрд╛ред

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдЧреЗ рдмрдврд╝ рд░рд╣рд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВ рдПрдХ рднрдпрд╛рдирдХ рджрд┐рд╢рд╛ рдорд╛рдирддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ WASM рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд░рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реБрдзрд╛рд░ рд╣реБрдП рд╣реИрдВ, рдкрд┐рдЫрд▓реЗ рдХрдИ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдореБрджрд╛рдп рдФрд░ рджрд┐рд╢рд╛ рдХреЛ рдЧреБрдорд░рд╛рд╣ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рдПрдХ рдЙрдЪрд┐рдд рднрд╛рд╖рд╛ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд░рдиреЗ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ .. рдЗрд╕рдХреА рдЬрдЧрд╣ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдкреНрд░рддреНрдпрдХреНрд╖ рдкреНрд░рддрд┐рдпреЛрдЧреА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЬреЗрдПрд╕ рдФрд░ рдЗрд╕рдХреЗ "рдврд╛рдВрдЪреЗ" рдХреЗ рдЗрд╕ рдирдП рдЕрдкреНрд░рд┐рдп рд╕реНрд╡рд╛рдж рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИред

@spencerudnick рдиреЗ рдХрднреА рднреА рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдн рдХреЗ рд▓рд┐рдП рдЕрд╕реЗрдВрдмрд▓реА рдирд╣реАрдВ рд▓рд┐рдЦреА рдЬреЛ рдЖрдкрдХреЛ рд╕реА рд╕реЗ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ?

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕