V8 рдЗрдВрдЬрди рдФрд░ рдЧреВрдЧрд▓ рдХреНрд░реЛрдо рдмреНрд░рд╛рдЙрдЬрд░ Asm.js рдХреЛ рдмреЗрд╣рддрд░ рд╕рдкреЛрд░реНрдЯ рдХрд░реЗрдВрдЧреЗ

рд▓рдЧрднрдЧ рдмрд╛рд░рд╣ рдШрдВрдЯреЗ рдкрд╣рд▓реЗ, рдЬреЙрди рд░реЗрд╕рд┐рдЧ рдиреЗ рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рдЯреНрд╡реАрдЯ рдХрд┐рдпрд╛ рдХрд┐ Google I / O рд╕рдореНрдореЗрд▓рди рдореЗрдВ, рдЙрд╕рдиреЗ V8 рдЗрдВрдЬрди рдФрд░ Google Chrome рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ Asm.js рд╕рдорд░реНрдерди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛ рдХреАред

рдЪреВрдВрдХрд┐ Asm.js рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ Habrahabr ( 1 , 2 ) рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рдлрд╛рдпрджреЗ рдХрдИ рдкрд╛рдардХреЛрдВ рдХреЛ рдЬреНрдЮрд╛рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реБрдЦрдж рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдмрд╣реБрдд рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрди рд▓рд╛рднреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рди рдХреЗрд╡рд▓ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ (рдЬрд╣рд╛рдВ рд╡реЗ рдкрд╣рд▓реА рдмрд╛рд░ рдореЛрдЬрд╝рд┐рд▓рд╛ рдлрд╛рдЙрдВрдбреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдкреЗрд╢ рдХреА рдЧрдИ рдереА) рдореЗрдВ, рдмрд▓реНрдХрд┐ рд╡реА 8 рдЗрдВрдЬрди рдореЗрдВ рднреА (рдФрд░, рдЗрд╕рд▓рд┐рдП, рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдП рдЧрдП рдиреЛрдбреНрд╕ред рдЬреЗрдПрд╕ рдЗрдВрдЬрди рдореЗрдВ!), рдФрд░ Google Chrome рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВред

рд▓реЗрдХрд┐рди рдЙрди рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрдм рддрдХ рдЗрд╕ рдирд╡реАрдирддрд╛ рдХреЛ рдЦреБрдж рд╕реЗ рдЪреВрдХ рдЧрдП рд╣реИрдВ, рдореИрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╕рд╛рд░ рдХреЛ рднреА рдпрд╛рдж рдХрд░реВрдВрдЧрд╛ред Asm.js рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрд╛рд╖рд╛ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЙрдкрд╕рдореБрдЪреНрдЪрдп рд╣реИ: рдЗрд╕рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЦреБрдж рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЗрдЦрдХ рди рдХреЗрд╡рд▓ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд╕рдордп (рд╕рд┐рд░реНрдл-рдЗрди-рдЯрд╛рдЗрдо, JIT) рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рднреА (рдПрдУрдЯреА-рдЖрдЧреЗ, рдПрдУрдЯреА) ), рдЕрд░реНрдерд╛рдд, рдЗрд╕ рддрд░рд╣ рдХреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд░ рдХреБрдЫ рдорд╢реАрди рдХреЛрдб рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░реА-рдореИрдЪ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рднрд╛рд╡ рд╕реНрд╡рдпрдВ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреА рд▓рд╛рдЧрдд рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, " ред 0 " рдСрдкрд░реЗрд╢рди рдФрд░ рдЕрдиреНрдп рд╕рдорд╛рди рд╡рд┐рд╢реЗрд╖ рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдорд╛рди рдкреНрд░рдХрд╛рд░, рд╕рд╛рде рд╣реА рдЖрдЙрдЯрдкреБрдЯ рдорд╛рди, рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдФрд░ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред) рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЧрддрд┐ рдореЗрдВ рдПрдХ рдЕрднреВрддрдкреВрд░реНрд╡ рд╡реГрджреНрдзрд┐ рд╣реИ - рдЕрдм рдЧрддрд┐ рдореЗрдВред рд╕рдВрдХрд▓рд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реЗ рд╣реАрди (рд╕реА рдпрд╛ рд╕реА ++ рдореЗрдВ) рджреЛ рдмрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВред

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

рд╣рдо рдПрдХ рдРрд╕реЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рдХрдЧрд╛рд░ рдкрд░ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдХрдИ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ (рдЬрд┐рдиреНрд╣реЗрдВ GUI рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ) рдХреЛ рддреБрд░рдВрдд рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (Node.js рд╡рд┐рдВрдбреЛрдЬ, рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ рдФрд░ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдЙрдирдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдЧрд╛), рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдЙрдиреНрд╣реЗрдВ рдорд╢реАрди рдХреЛрдб рдХреЗ рдмрдЬрд╛рдп рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдПрд▓рдПрд▓рд╡реАрдПрдо рдФрд░ рдлрд┐рд░ рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВрдЧреЗ - рдФрд░ рдЙрдирдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЧрддрд┐ рдХреЛ рджреЛрдЧреБрдирд╛ рдХрд░реЗрдВрдЧреЗред

рд╣рд╛рд▓рд╛рдБрдХрд┐, Emscripten рдкреГрд╖реНрда рдкрд░ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдЙрджрд╛рд╣рд░рдг рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреБрдЫ рдРрд╕реЗ рдЪрд┐рддреНрд░рдордп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧреНрд░рд╛рдлрд╝рд┐рдХрд▓ API (OpenGL, рдпрд╛ OpenGL ES, рдпрд╛ OpenVG) рдХреЗ рдмрдЬрд╛рдп EGL рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдпрдВ рдХреЛ рдЙрдзрд╛рд░ рджреЗрддреЗ рд╣реИрдВред рд╕рдЪ рд╣реИ, рдРрд╕реЗ Node.js рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ - рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рд╡реЗрдм рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЕрд░реНрдерд╛рдд, рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрдиред рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдФрд░ Google Chrome рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЬреЛ рдЗрд╕реЗ Asm.js рдХреЗ рд╕рдорд░реНрдерди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реБрдП рдереЗ, рдЙрдиреНрд╣реЗрдВ рдЙрдкрд░реЛрдХреНрдд рдЕрднреВрддрдкреВрд░реНрд╡ рдЧрддрд┐ рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдВрдЧреЗред рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдЕрдиреНрдп рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ (IE, рдУрдкреЗрд░рд╛, рд╕рдлрд╛рд░реА рдФрд░ рдЗрддрдиреЗ рдкрд░) рднреА рдЙрдиреНрд╣реЗрдВ рдЧреИрд░-рдЪреБрдирд┐рдВрджрд╛ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ (рдХреНрдпреЛрдВрдХрд┐ Asm.js рд╕рд╛рдзрд╛рд░рдг рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╕рдмрд╕реЗрдЯ рд╣реИ); рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЧрддрд┐ рдореЗрдВ рд╣реЛрдЧрд╛ред

Source: https://habr.com/ru/post/In179875/


All Articles