Design: рдХреГрдкрдпрд╛ рдордирдорд╛рдирд╛ рд▓реЗрдмрд▓ рдФрд░ рдЧреЛрдЯреЛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВред

рдХреЛ рдирд┐рд░реНрдорд┐рдд 8 рд╕рд┐рддре░ 2016  ┬╖  159рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: WebAssembly/design

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

рдЗрд╕рд▓рд┐рдП, рдЬрдмрдХрд┐ рдореИрдВ рдЗрд╕рдореЗрдВ рдХреВрджрдиреЗ рдФрд░ рдмрдбрд╝реЗ рдмрджрд▓рд╛рд╡реЛрдВ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрдиреЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрд╕рд╣рдЬ рд╣реВрдВ
рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕ рдкрд░ рдореИрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ... рдпрд╣рд╛рдБ рдЬрд╛рддрд╛ рд╣реИ:

рдореЗрд░реА рд╢рд┐рдХрд╛рдпрддреЗрдВ:

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

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

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

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

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

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

рдкреЙрд▓реАрдлрд┐рд▓рд┐рдВрдЧ:

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

рдпрджрд┐ рд╣рдо рд╡реЗрдм рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рддрд░рд╣ LLVM (рдпрд╛ QBE) рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдХреБрдЫ рдХреЛрдб
рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

int f(int x) {
    if (x == 42)
        return 123;
    else
        return 666;
}

рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

 func @f(%x : i32) {
    %1 = test %x 42
jmp %1 iftrue iffalse

 L0:
    %r =i 123
jmp LRet
 L1:
    %r =i 666
jmp LRet
 Lret:
    ret %r
 }

рдпрд╣ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

function f(x) {
    var __label = L0;
    var __ret;

    while (__label != LRet) {
        switch (__label) {
        case L0:
            var _v1 = (x == 42)
            if (_v1) {__lablel = L1;} else {label = L2;}
            break;
        case L1:
            __ret = 123
            __label = LRet
            break;
        case L2;
            __ret = 666
            __label = LRet
            break;
        default:
            assert(false);
            break;
    }
}

рдХреНрдпрд╛ рдпрд╣ рдмрджрд╕реВрд░рдд рд╣реИ? рд╣рд╛рдВред рдлрд░реНрдХ рдкрдбрд╝рддрд╛ рд╣реИ рдХреНрдпрд╛? рдЙрдореНрдореАрдж рд╣реИ, рдЕрдЧрд░ рд╡реЗрдм рдЕрд╕реЗрдВрдмрд▓реА рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ,
рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред

рдФрд░ рдЕрдЧрд░ рдирд╣реАрдВ:

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

рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдореЗрдВ рдХреЛрдб рдЬрдирд░реЗрд╢рди рдХреЗ рджреЛрдиреЛрдВ рдкрдХреНрд╖реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░рд╛рд░реВрдк рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░реЗрдВред

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

рдЖрдЧрд╛рдореА Go 1.11 рд░рд┐рд▓реАрдЬрд╝ рдХреЛ WebAssembly рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред рдЗрд╕рдореЗрдВ рдЧреЛ рдХреА рд╕рднреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд╕рдорд░реНрдерди рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдЧреЛрд░реМрдЯрд╛рдЗрди, рдЪреИрдирд▓ рдЖрджрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрддреНрдкрдиреНрди WebAssembly рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрддрдирд╛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред

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

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

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

@oridb Wasm рдЙрдкрднреЛрдХреНрддрд╛ рдХреЗ рд▓рд┐рдП SSA рдлреЙрд░реНрдо рдореЗрдВ рдЬрд▓реНрджреА рд╕реЗ рдмрджрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣рдж рддрдХ рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИ, рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдпрд╣рд╛рдВ рд╕рд╛рдорд╛рдиреНрдп рдХреЛрдб рдкреИрдЯрд░реНрди рдХреЗ рд▓рд┐рдП рдорджрдж рдХрд░рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдВрд░рдЪрдирд╛ рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдЙрдкрднреЛрдХреНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЛрдЭ рд╣реЛред рдореИрдВ рдЖрдкрдХреЗ рдЗрд╕ рджрд╛рд╡реЗ рд╕реЗ рдЕрд╕рд╣рдордд рд╣реВрдВ рдХрд┐ 'рдХреЛрдб рдЬрдирд░реЗрд╢рди рдХреЗ рджреЛрдиреЛрдВ рдкрдХреНрд╖ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░рд╛рд░реВрдк рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ'ред Wasm рдПрдХ рджреБрдмрд▓реЗ рдФрд░ рддреЗрдЬрд╝ рдЙрдкрднреЛрдХреНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕реЗ рдкрддрд▓рд╛ рдФрд░ рддреЗрдЬрд╝ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИрдВ рддреЛ рдпрд╣ рд░рдЪрдирд╛рддреНрдордХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

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

рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╕реАрдПрдлрдЬреА рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдзреНрдпрд╛рди рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд╣реАрдВ рдФрд░ рд╣реИред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ 'рдирд┐рд░рдВрддрд░ рдЧреБрдЬрд░рдиреЗ рд╡рд╛рд▓реА рд╢реИрд▓реА' рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмреНрд▓реЙрдХ рдФрд░ рд▓реВрдк рдкреЙрдкрд┐рдВрдЧ рддрд░реНрдХ (рдмрд┐рд▓реНрдХреБрд▓ рд▓реИрдореНрдмреНрдбрд╛ рдХреА рддрд░рд╣) рдФрд░ рдПрдХрд╛рдзрд┐рдХ рдорд╛рдиреЛрдВ (рдПрдХрд╛рдзрд┐рдХ рд▓реИрдореНрдмреНрдбрд╛ рддрд░реНрдХ) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдФрд░ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ pick рдСрдкрд░реЗрдЯрд░ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП (рд▓реИрдореНрдмреНрдбрд╛ рддрд░реНрдХ)ред

рд╕рд╛рдорд╛рдиреНрдп рдХреЛрдб рдкреИрдЯрд░реНрди рдХреЗ рд▓рд┐рдП рд╕рдВрд░рдЪрдирд╛ рдпрд╣рд╛рдБ рдорджрдж рдХрд░рддреА рд╣реИ

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

рдмреНрд▓реЙрдХ рдЬрд┐рдиреНрд╣реЗрдВ рдбреАрдПрдЬреА рдореЗрдВ рдСрд░реНрдбрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рд╡рд╛рд╕рдо рдмреНрд▓реЙрдХ рдФрд░ рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЖрдкрдХрд╛ рдЙрджрд╛рд╣рд░рдгред

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

рджреЛрдмрд╛рд░рд╛, рдореЗрд░рд╛ рддрд░реНрдХ рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд▓реВрдк рдФрд░ рдмреНрд▓реЙрдХ рдЪреАрдЬреЛрдВ рдХреЛ рдЕрд╕рдВрднрд╡ рдмрдирд╛рддреЗ рд╣реИрдВ; рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдЬреЛ рдХреБрдЫ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд╣ рдорд╢реАрди рдХреЗ рд▓рд┐рдП goto, goto_if, рдФрд░ рдордирдорд╛рдиреА, рдЕрд╕рдВрд░рдЪрд┐рдд рд▓реЗрдмрд▓ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рдФрд░ рдЖрд╕рд╛рди рд╣реИред

рд╢рд╛рдпрдж рдмрд╛рдЗрдирд░реАрди рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдЬреЛ рдЖрдкрдХреЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдмреИрдХрдПрдВрдб рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред

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

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

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

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрд╕реАрдкреАрдПрд╕ рдХреА рдмрд╛рдд рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╕реНрдкрд╖реНрдЯ рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдпрд╣ рдПрдлрдкреА рд╕рд░реНрдХрд┐рд▓реЛрдВ рдореЗрдВ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд╕реАрдзреЗ рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИ, рдФрд░ рддрд░реНрдХ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрд╕рдПрд╕рдП рдХреЛ рд╕рдорд╛рди рд▓рд╛рдн рджреЗрддрд╛ рд╣реИ (http:// mlton.org/pipermail/mlton/2003-January/023054.html); рджреЛрдмрд╛рд░рд╛, рдореИрдВ рдЗрд╕ рдкрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЬреЛ рдореБрдЭреЗ рдпрд╛рдж рд╣реИ, рдЖрдордВрддреНрд░рдг рдирд┐рд░рдВрддрд░рддрд╛ рдПрдХ рд▓реЗрдмрд▓, рдХреБрдЫ movs, рдФрд░ рдПрдХ рдЧреЛрдЯреЛ рдореЗрдВ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред

@oridb 'рдлреНрд▓реИрдЯ рдирд┐рд░реНрджреЗрд╢ рд╕реВрдЪрд┐рдпреЛрдВ рд╕реЗ рдПрд╕рдПрд╕рдП рдореЗрдВ рддреЗрдЬрд╝ рдФрд░ рдкреНрд░рд╕рд┐рджреНрдз рд░реВрдкрд╛рдВрддрд░рдг рд╣реИрдВ'

рдпрд╣ рдЬрд╛рдирдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ рдХрд┐ рд╡реЗ рдПрд╕рдПрд╕рдП рдбрд┐рдХреЛрдбрд░реНрд╕ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рд╢реНрди рд╣реИ?

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

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

рдХреНрдпрд╛ рдЖрдк рдореВрд▓реНрдпреЛрдВ рдХреЛ рдвреЗрд░ рд░рдЦреЗрдВрдЧреЗ, рдпрд╛ рд░рдЬрд┐рд╕реНрдЯрд░ рдЖрдзрд╛рд░рд┐рдд рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ?

рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕ рдЫреЛрд░ рдкрд░ рдХреЛрдИ рдордЬрдмреВрдд рднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреА рдХреЙрдореНрдкреИрдХреНрдЯрдиреЗрд╕ рд╕рдмрд╕реЗ рдмрдбрд╝реА рдЪрд┐рдВрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реЛрдЧреА; рдПрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдбрд┐рдЬрд╝рд╛рдЗрди рд╡рд╣рд╛рдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд┐рд░рд╛рдпрд╛ рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рд╣реИ - рдпрд╛ рдпрд╣ gzip рдкрд░ рдХрд╛рд▓реНрдкрдирд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрдкреАрдбрд╝рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдиреЗ рд╕рд┐рд░ рдХреЗ рдКрдкрд░ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ред

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

рдпрд╣ рдЬрд╛рдирдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ рдХрд┐ рд╡реЗ рдПрд╕рдПрд╕рдП рдбрд┐рдХреЛрдбрд░реНрд╕ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рд╢реНрди рд╣реИ?

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

рдЖрдкрдХреЗ рд╕рд╡рд╛рд▓реЛрдВ рдФрд░ рдЪрд┐рдВрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдХрдИ рдбрд┐рдЬрд╛рдЗрдирд░ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХрд░реНрддрд╛
WebAssembly рдХреЗ рдкрд╛рд╕ рди рдХреЗрд╡рд▓ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди, рдФрджреНрдпреЛрдЧрд┐рдХ JITs рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рд╣реИ
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ (V8, рд╕реНрдкрд╛рдЗрдбрд░рдореЛрдиреНрдХреА, рдЪрдХреНрд░ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯрдХреЛрд░) рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рднреА
рдПрд▓рдПрд▓рд╡реАрдПрдо рдФрд░ рдЕрдиреНрдп рдХрдВрдкрд╛рдЗрд▓рд░ред рдореИрдВрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рджреЛ рдЬреЗрдЖрдИрдЯреА рд▓рд╛рдЧреВ рдХрд┐рдП рд╣реИрдВ
рдмрд╛рдЗрдЯрдХреЛрдб рдФрд░ рдореИрдВ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдЧреЛрдЯреЛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреИрдХ рдорд╢реАрди
рдбрд┐рдХреЛрдбрд┐рдВрдЧ, рд╕рддреНрдпрд╛рдкрди рдФрд░ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдХрд╛рдлреА рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ a
рд╕рдВрдХрд▓рдХ рдЖрдИрдЖрд░ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрдИ рдкреИрдЯрд░реНрди рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЬрд╛рд╡рд╛ рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдмрд╛рдЗрдЯрдХреЛрдб рдЬреЛ рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди JITs рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ C1 рдФрд░ C2 рджреЛрдиреЛрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ
рд╣реЙрдЯрд╕реНрдкреЙрдЯ рдХреЛ рдХреЗрд╡рд▓ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдХреЗрд╡рд▓ рдореЗрдВ рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП
рджреБрднрд╛рд╖рд┐рдпрд╛ред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ IR рдХрд╛ рдирд┐рд░реНрдорд╛рдг a . рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рд╕реЗ рдХрд░рдирд╛
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛ рд╕реЗ рдПрдПрд╕рдЯреА рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рднреА рдХрд┐рдпрд╛ рд╣реИред
рдПрдПрд╕рдЯреА рдХреА рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрд░рдЪрдирд╛ рдЗрд╕ рдХрд╛рдо рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛рддреА рд╣реИред

WebAssembly рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ
рдПрд╕рдПрд╕рдП рдлреЙрд░реНрдо рдореЗрдВ рддреЗрдЬ, рд╕рд░рд▓ рд╕рддреНрдпрд╛рдкрди, рдЖрд╕рд╛рди, рдПрдХ рдкрд╛рд╕ рд░реВрдкрд╛рдВрддрд░рдг рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛
(рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдЧреНрд░рд╛рдл рдЖрдИрдЖрд░), рдкреНрд░рднрд╛рд╡реА рд╕рд┐рдВрдЧрд▓-рдкрд╛рд╕ рдЬреЗрдЖрдИрдЯреА, рдФрд░ (рдкреЛрд╕реНрдЯрдСрд░реНрдбрд░ рдФрд░ рдХреЗ рд╕рд╛рде)
рд╕реНрдЯреИрдХ рдорд╢реАрди) рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рдЗрди-рдкреНрд▓реЗрд╕ рд╡реНрдпрд╛рдЦреНрдпрд╛ред рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрдб
рдирд┐рдпрдВрддреНрд░рдг рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдЧреНрд░рд╛рдл рдХреЛ рдЕрд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ
рдбрд┐рдХреЛрдбрд░реНрд╕ рдФрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд▓рд┐рдП рдЧрдВрджрд╛ рдХреЛрдиреЗ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреА рдПрдХ рдкреВрд░реА рдХрдХреНрд╖рд╛ред рдпрд╣ рднреА
WASM рдмрд╛рдЗрдЯрдХреЛрдб рдореЗрдВ рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдордВрдЪ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП V8
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрддреНрдкрд╛рджрди рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред

рд╣рдордиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рдмрд╣реБрдд рд╕рд╛рд░реА рдЖрдВрддрд░рд┐рдХ рдЪрд░реНрдЪрд╛ рдХреА рд╣реИ
рд╡рд┐рд╖рдп, рдЪреВрдВрдХрд┐, рдПрдХ рдмрд╛рдЗрдЯрдХреЛрдб рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдЪреАрдЬ рд╣реИ рдЬреЛ рд╕рдмрд╕реЗ рдЕрд▓рдЧ рд╣реИ
рдЕрдиреНрдп рдорд╢реАрди-рд╕реНрддрд░реАрдп рд▓рдХреНрд╖реНрдпред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд▓рдХреНрд╖реНрдпреАрдХрд░рдг рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреИрд╕реА рд╕реНрд░реЛрдд рднрд╛рд╖рд╛ (рдЬреЛ рдЖрдЬрдХрд▓ рдХрдИ рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд░рддреЗ рд╣реИрдВ) рдФрд░
рд╕рдВрд░рдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рдХреЗрд╡рд▓ рдорд╛рдореВрд▓реА рдкреБрдирд░реНрдЧрдарди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡рд╣рд╛рдВ
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреНрдЮрд╛рдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдФрд░ рдЙрдкрдХрд░рдг рд╣реИрдВред рд╣рдо рдХреБрдЫ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ
рдЙрди рдЙрддреНрдкрд╛рджрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдорд╛рд░реНрдЧрджрд░реНрд╢рди, рдЬрд┐рдирдХреА рд╢реБрд░реБрдЖрдд рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ CFG рд╕реЗ рд╣реЛрддреА рд╣реИ
рдЗрд╕реЗ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрдкреНрд░реЗрд╖рд┐рдд рдХрд░реЗрдВред рдХрд┐рд╕реА AST . рд╕реЗ рд╕реАрдзреЗ WASM рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП
(рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ V8 рдЕрдм asm.js рдХреЛрдб рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИ - рд╕реАрдзреЗ
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдПрд╕рдЯреА рдХреЛ рдбрдмреНрд▓реНрдпреВрдПрдПрд╕рдПрдо рдмрд╛рдЗрдЯрдХреЛрдб рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛), рдХреЛрдИ рдкреБрдирд░реНрдЧрдарди рдирд╣реАрдВ рд╣реИ
рдЖрд╡рд╢реНрдпрдХ рдХрджрдоред рд╣рдо рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХрдИ рднрд╛рд╖рд╛ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдРрд╕рд╛ рд╣реА рд╣реЛрдЧрд╛
рдкреВрд░реЗ рд╕реНрдкреЗрдХреНрдЯреНрд░рдо рдореЗрдВ рдЬрд┐рдирдХреЗ рдЕрдВрджрд░ рдкрд░рд┐рд╖реНрдХреГрдд IR рдирд╣реАрдВ рд╣реИрдВред

рдЧреБрд░реБ, 8 рд╕рд┐рддрдВрдмрд░, 2016 рдХреЛ рд╕реБрдмрд╣ 9:53 рдмрдЬреЗ, рдУрд░рд┐ рдмрд░реНрдирд╕реНрдЯреАрди рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

рдХреНрдпрд╛ рдЖрдк рдореВрд▓реНрдпреЛрдВ рдХреЛ рдвреЗрд░ рд░рдЦреЗрдВрдЧреЗ, рдпрд╛ рд░рдЬрд┐рд╕реНрдЯрд░ рдЖрдзрд╛рд░рд┐рдд рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ?

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

рдпрд╣ рдЬрд╛рдирдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ рдХрд┐ рд╡реЗ рдПрд╕рдПрд╕рдП рдбрд┐рдХреЛрдбрд░реНрд╕ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рдХрд┐
рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рд╢реНрди рд╣реИ?

рдпрджрд┐ рдЖрдк SSA рдХреЛ рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдк рднреА a . рдХрд░ рд░рд╣реЗ рд╣реЛрдВрдЧреЗ
рдЕрдиреБрдХреВрд▓рди рдХреА рдЙрдЪрд┐рдд рдорд╛рддреНрд░рд╛ред рдореИрдВ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ рдХреИрд╕реЗ
рдорд╣рддреНрд╡рдкреВрд░реНрдг рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдкреНрд░рджрд░реНрд╢рди рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рд╣реИред рд▓реЗрдХрд┐рди, рд╣рд╛рдБ, рд╡рд╣ рд╣реИ
рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рд╡рд╛рд▓ рд╣реИред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдереНрд░реЗрдб рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реА рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/WebAssembly/design/issues/796#issuecomment -245521009,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/ALnq1Iz1nn4--NL32R9ev0JPKfEnDyvqks5qn77cgaJpZM4J3ofA
.

рдзрдиреНрдпрд╡рд╛рдж @titzer , рдореИрдВ рдПрдХ рд╕рдВрджреЗрд╣ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ рд╡рд╛рд╕рдо рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп asm.js рдХреА рд╕рдорд╛рдирддрд╛ рд╕реЗ рдкрд░реЗ рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ: рдЬрд╛рд╡рд╛ рдмрд╛рдЗрдЯрдХреЛрдб (рдФрд░ рд╕реАрдЖрдИрдПрд▓) рд╕реАрдПрдлрдЬреА рдпрд╛ рд╡реИрд▓реНрдпреВ рд╕реНрдЯреИрдХ рдХреЛ рд╕реАрдзреЗ рдореЙрдбрд▓ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдЬреЗрдЖрдИрдЯреА рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рд╡рд╛рд╕рдо рдореЗрдВ (рд╡рд┐рд╢реЗрд╖рдХрд░ рдпрджрд┐ рдмреНрд▓реЙрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ) рдЬреЗрдЖрдИрдЯреА рдЖрд╕рд╛рдиреА рд╕реЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореВрд▓реНрдп рд╕реНрдЯреИрдХ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ, рдЕрдЧрд░ рд╕реАрдПрдлрдЬреА (рдпрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд░реЗрдбреНрдпреВрд╕рд┐рдмрд▓ рдХрдВрдЯреНрд░реЛрд▓ рдлреНрд▓реЛ) рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓реВрдк рдФрд░ рдмреНрд▓реЙрдХ рдХреА рддрд░рд╣ рдореЙрдбрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЙрди рдЕрдзрд┐рдХрд╛рдВрд╢ рдЧрдВрджреЗ рдХреЛрдиреЗ рдХреЗ рдорд╛рдорд▓реЛрдВ рд╕реЗ рдмрдЪ рд╕рдХреЗрдВ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдк рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ?

рдпрд╣ рд╕рд╛рдл-рд╕реБрдерд░рд╛ рдЕрдиреБрдХреВрд▓рди рд╣реИ рдЬреЛ рджреБрднрд╛рд╖рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╢рд╛рдЦрд╛ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд░реЗрдбреНрдпреВрд╕рдмрд▓ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ ...

@oridb

рдореИрдВ рддрд░реНрдХ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдПрдХ рдЪрд╛рдкрд▓реВрд╕реА, рдЧреЛрдЯреЛ рдЖрдзрд╛рд░рд┐рдд рдкреНрд░рд╛рд░реВрдк рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛:
рд╕рдВрдХрд▓рдХ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдХреНрд╖реНрдп

рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдХрдИ рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЧреЛрдЯреЛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ Binaryen рдЬреИрд╕реЗ рдЙрдкрдХрд░рдг рдЖрдкрдХреЛ gotos рдХреЗ рд╕рд╛рде рдордирдорд╛рдиреЗ CFG рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рджреЗрддреЗ рд╣реИрдВ , рдФрд░ рд╡реЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЬрд▓реНрджреА рдФрд░ рдХреБрд╢рд▓рддрд╛ рд╕реЗ WebAssembly рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

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

рдпрд╣ WebAssembly рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдЙрдкрднреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдЪреАрдЬрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЛрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ @titzer рдиреЗ рдмрддрд╛рдпрд╛)ред рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдХреЛ рд╢рд╛рдпрдж рд╕реАрдзреЗ WebAssembly рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдмрд▓реНрдХрд┐ рдмрд╛рдЗрдирд░реАрди рдЬреИрд╕реЗ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ...

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

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

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

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

@oridb 'рддреЗрдЬрд╝, рд╕рд░рд▓ рд╕рддреНрдпрд╛рдкрди, рдЖрд╕рд╛рди, рдПрдХ рдкрд╛рд╕ рд░реВрдкрд╛рдВрддрд░рдг рд╕рд░реНрд╡ рд╢рд┐рдХреНрд╖рд╛ рдЕрднрд┐рдпрд╛рди рдХреЗ рд▓рд┐рдП рдкреНрд░рдкрддреНрд░ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ ... рджреНрд╡рд╛рд░рд╛ WebAssembly рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдирд┐рд░реНрдорд╛рдгреЛрдВ рд╕рд░рд▓ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреА рдбрд┐рдЬрд╛рдЗрди' @titzer рджреНрд╡рд╛рд░рд╛ рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦреЗрдВ - рдпрд╣ рдПрдХ рдкрд╛рд╕ рдореЗрдВ _verified_ рд╕рд░реНрд╡ рд╢рд┐рдХреНрд╖рд╛ рдЕрднрд┐рдпрд╛рди рдХреЗ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрдЧрд░ wasm рдиреЗ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП SSA рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛, рддрдм рднреА рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдмреЛрдЭ рд╣реЛрдЧрд╛, рдбреЛрдорд┐рдиреЗрдЯрд░ рд╕рдВрд░рдЪрдирд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЬреЛ рдХрд┐ wasm рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рди рд╣реИред

рд╡рд╛рд╕рдо рдХреА рдЕрдзрд┐рдХрд╛рдВрд╢ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рджрдХреНрд╖рддрд╛ рд╕рд╛рдорд╛рдиреНрдп рдХреЛрдб рдкреИрдЯрд░реНрди рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдЖрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдПрдХ рд╣реА рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╕реНрдЯреИрдХ рдСрд░реНрдбрд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдПрдХ рдПрд╕рдПрд╕рдП рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рднреА рдРрд╕рд╛ рдХрд░ рд╕рдХрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рдорд╛рди рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рджрдХреНрд╖рддрд╛ рдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдбрд╛рдпрдордВрдб рдкреИрдЯрд░реНрди рдХреЗ рд▓рд┐рдП if_else рдЬреИрд╕реЗ рдСрдкрд░реЗрдЯрд░ рднреА рдмрд╣реБрдд рдорджрдж рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрдо рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд┐рдирд╛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдмреБрдирд┐рдпрд╛рджреА рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рдкрд░рд┐рдгрд╛рдо рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдФрд░ рдпрд╣ рдЗрддрдирд╛ рдХреБрд╢рд▓ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ wasm рдПрдХ pick рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдФрд░ рднреА рдмреЗрд╣рддрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╕реНрдЯреИрдХ рдХреЗ рдКрдкрд░ рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рдмреНрд▓реЙрдХ рд╕реАрдорд╛рдУрдВ рдореЗрдВ рд╕реНрдХреЛрдкреНрдб рд╕реНрдЯреИрдХ рд╡реИрд▓реНрдпреВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

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

Wasm рдХрд╛ рд▓рдХреНрд╖реНрдп рд░рдирдЯрд╛рдЗрдо рдЙрдкрднреЛрдХреНрддрд╛ рд╕реЗ рдЕрдиреБрдХреВрд▓рди рдмреЛрдЭ рдХреЛ рд╣рдЯрд╛рдирд╛ рд╣реИред рд░рдирдЯрд╛рдЗрдо рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ рдЬрдЯрд┐рд▓рддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрдд рдкреНрд░рддрд┐рд░реЛрдз рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдорд▓реЗ рдХреА рд╕рддрд╣ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред рдбрд┐рдЬрд╝рд╛рдЗрди рдЪреБрдиреМрддреА рдХрд╛ рдЗрддрдирд╛ рд╣рд┐рд╕реНрд╕рд╛ рдкреВрдЫрдирд╛ рд╣реИ рдХрд┐ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛рдП рдмрд┐рдирд╛ рд░рдирдЯрд╛рдЗрдо рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдмрд╣реБрдд рдмрд╣рд╕!

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

void transformed_coroutine(struct autogenerated_context_struct *ctx) {
    int arg1, arg2; // function args
    int var1, var2, var3, тАж; // all vars used by the function
    switch (ctx->current_label) { // restore state
    case 0:
        // initial state, load function args caller supplied and proceed to start
        arg1 = ctx->arg1;
        arg2 = ctx->arg2;
        break;
    case 1: 
        // restore all vars which are live at label 1, then jump there
        var2 = ctx->var2; 
        var3 = ctx->var3;
        goto resume_1;
    [more casesтАж]
    }

    [main body goes here...]
    [somewhere deep in nested control flow:]
        // originally a yield/await/etc.
        ctx->var2 = var2;
        ctx->var3 = var3;
        ctx->current_label = 1;
        return;
        resume_1:
        // continue on
}

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

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдРрд╕рд╛ рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ, рдЕрдЧрд░ 'рд╕рд╛рдорд╛рдиреНрдп' рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╣реИред (рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред) рдпрд╛ рддреЛ рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрдбрд╝реЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдЬ рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдпрд╛ рдЖрдк рдкреВрд░реА рдЪреАрдЬ рдХреЛ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рд╕реНрд╡рд┐рдЪ рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ @kripken рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рд╛рдорд╛рдиреНрдп рдХреЛрдб рдкрд░ relooper рд╕реЗ 4x рдзреАрдорд╛ рд╣реИ ( рдЬреЛ рд╢рд╛рдпрдж рд░рд┐рд▓реЛрдкрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреЗ рд╕реЗ рдХреБрдЫ рд╣рдж рддрдХ рдзреАрдорд╛ рд╣реИ)ред

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

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

рд╡реИрд╕реЗ рднреА, coroutines рд╕рд┐рд░реНрдл рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдЬреЛ рдореИрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ рд╡рд╣ рд╡реАрдПрдо-рдЗрди-рдП-рд╡реАрдПрдо рд▓рд╛рдЧреВ рдХрд░ рд░рд╣рд╛ рд╣реИред JITs рдХрд╛ рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рдЖрдо рд╕реБрд╡рд┐рдзрд╛ рдкрдХреНрд╖ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИ, рдЬреЛ рдЧреЛрдЯреЛ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рдкрдбрд╝рддреА рд╣реИ, рдРрд╕реА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВ рдХрд┐ рдкрдХреНрд╖ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ - рдлрд┐рд░ рд╕реЗ, рд▓реВрдк рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдмреАрдЪ рдореЗрдВ рдЧреЛрдЯреЛ рдХреА рдЬрд░реВрд░рдд рдкрдбрд╝реЗрдЧреАред рдПрдХ рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рджреБрднрд╛рд╖рд┐рдП рд╣реЛрдВрдЧреЗ: рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд╛рд╕рдо рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рджреБрднрд╛рд╖рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореВрд▓ рдХреЛрдб рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрдо рд╕реЗ рдХрдо рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рдЧреЛрдЯреЛ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдзрд┐рдХ рдХреЗ рд▓рд┐рдП рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рдбреБрдмрдХреА рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ ... рд▓реЗрдХрд┐рди рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рдЧреЛрдЯреЛ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рдгрд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмреЗрд╣рддрд░ рд▓рд╛рдн рдЙрдард╛рдирд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдХреЛ рдЕрдкрдирд╛ рдХреВрдж рдирд┐рд░реНрджреЗрд╢ рджреЗрдХрд░ рд╢рд╛рдЦрд╛ рднрд╡рд┐рд╖реНрдпрд╡рдХреНрддрд╛, рддрд╛рдХрд┐ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдСрдкреЛрдб рд╣реИрдВрдбрд▓рд░ рдХреЗ рдмрд╛рдж рдПрдХ рдЕрд▓рдЧ рд╕реНрд╡рд┐рдЪ рдХрд░рдХреЗ рдХреБрдЫ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХреЗрдВ, рдЬрд╣рд╛рдВ рд╕рднреА рдорд╛рдорд▓реЗ рд╕рд┐рд░реНрдл рдЧреЛрдЯреЛ рд╣реЛрдВрдЧреЗред рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдпрд╛ рджреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рд╡рд░реНрддрдорд╛рди рдХреЗ рдмрд╛рдж рдЖрддреЗ рд╣реИрдВред рдЙрд╕ рдкреИрдЯрд░реНрди рдХреЗ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬреЛ рд╕рдВрд░рдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдпреЛрдЧреНрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓рд╛ рдирд╣реАрдВред рдФрд░ рдЗрд╕реА рддрд░рд╣тАж

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

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

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

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

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

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

рдпрджрд┐ рдЗрд╕реЗ рдордирдорд╛рдиреЗ CFG рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдврд╝рд╛рдпрд╛ рдЧрдпрд╛ рддреЛ рдХреНрдпрд╛ рдпрд╣ рдирд┐рдореНрди рдЬреИрд╕рд╛ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдПрд╕рдПрд╕рдП рд╢реИрд▓реА рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╣реИ рдЗрд╕рд▓рд┐рдП рдорд╛рди рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдвреЗрд░ рд╢реИрд▓реА рдореЗрдВ рдХрд╛рдлреА рд╣рдж рддрдХ рдлрд┐рдЯ рд╣реИ, рдмрд╕ рд╕рднреА рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред рддреЛ blocks рднреАрддрд░ рдЙрд╕ рд╕реЗрдЯ рдореЗрдВ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рд▓реЗрдмрд▓ рд╡рд╛рд▓реЗ рдмреНрд▓реЙрдХ рдореЗрдВ рд╢рд╛рдЦрд╛рдПрдВ рдмрдирд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ, рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рдореНрдореЗрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рдЕрдиреНрдп рдмреНрд▓реЙрдХ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмреНрд▓реЙрдХ рдХреЗ рднреАрддрд░ рдХреЛрдб рдЕрднреА рднреА рдЙрдкрдпреЛрдЧреА рд░реВрдк рд╕реЗ рдЙрди рд╕рднреА рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдХ рдХреЗ рдКрдкрд░ рд╕реНрдЯреИрдХ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдкрд░ рдЙрдкрдпреЛрдЧреА рд░реВрдк рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

(func f1 (arg1)
  (let ((c1 10)) ; Some values up the stack.
    (blocks ((b1 (a1 a2 a3)
                   ... (br b3)
               (br b2 (+ a1 a2 a3 arg1 c1)))
             (b2 (a1)
                 ... (br b1 ...))
             (b3 ()
                 ...))
   .. regular structured wasm ..
   (br b2 ...)
   ....
   (br b3)
    ...
   ))

рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд░ рдХрднреА рднреА рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕ рдХреБрд╢рд▓ рдХреЛ рд╕рдВрднрд╛рд▓реЗрдВрдЧреЗ?

рдХреНрдпрд╛ рд╕реНрдЯреИрдХ рдорд╢реАрди рдкреГрд╖реНрдарднреВрдорд┐ рд╡рд╛рд▓рд╛ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдХреЛрдб рдкреИрдЯрд░реНрди рдХреЛ рдкрд╣рдЪрд╛рди рд▓реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рд╕реНрдЯреИрдХ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╕реЗ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛?

рдпрд╣рд╛рдБ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рд▓реВрдкреНрд╕ рдкрд░ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдЪрд░реНрдЪрд╛ рд╣реИ http://bboissin.appspot.com/static/upload/bboissin-thesis-2010-09-22.pdf

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

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

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд▓реЗрдмрд▓ рдФрд░ рдЧреЛрдЯреЛ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЗрдирдореЗрдВ рддрдмреНрджреАрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рд╣реЛрдиреЗ рдХрд╛ рдХреБрдЫ рдореМрдХрд╛ рд╣реИред

рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ @oridb рдФрд░ @comex рдХреЗ рд╕рд╛рде рджреГрдврд╝рддрд╛ рд╕реЗ рд╣реВрдВ ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореБрджреНрджрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдмрд╣реБрдд рджреЗрд░ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

WebAssembly рдХреА рдкреНрд░рдХреГрддрд┐ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрднреА рдХреА рдЧрдИ рдХреЛрдИ рднреА рдЧрд▓рддреА рдЖрдиреЗ рд╡рд╛рд▓реЗ рджрд╢рдХреЛрдВ рддрдХ рдмрдиреА рд░рд╣рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ (рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рджреЗрдЦреЗрдВ!) рдЗрд╕рд▓рд┐рдП рдпрд╣ рдореБрджреНрджрд╛ рдЗрддрдирд╛ рдЧрдВрднреАрд░ рд╣реИ; рдХрд┐рд╕реА рднреА рдХрд╛рд░рдг рд╕реЗ рдЕрдм рдЧреЛрдЯреЛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреЛ --- рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ --- рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЪреАрдЬрд╝ рдкрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдкреНрд░рднрд╛рд╡ рд╣реИ, рдФрд░ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрд▓рд╕реА рд╣реИ), рдФрд░ рдЖрдк рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ рд▓рдВрдмреЗ рд╕рдордп рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВред

рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рднрд╡рд┐рд╖реНрдп (рдпрд╛ рд╡рд░реНрддрдорд╛рди, рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ) рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ WebAssembly рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╢реЗрд╖-рдорд╛рдорд▓реЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗрдмрд▓ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╕рдордп/рд╕реНрд╡рд┐рдЪ рдкреИрдЯрд░реНрди рдХреЛ рдкрд╣рдЪрд╛рди рд╕рдХреЗрдВред рдпрд╣ рдПрдХ рд╣реИрдХ рд╣реИред

WebAssembly рд╕рд╛рдл рд╕реНрд▓реЗрдЯ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдм рдЧрдВрджреЗ рд╣реИрдХреНрд╕ (рдпрд╛ рдмрд▓реНрдХрд┐, рдЙрдирдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ) рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рд╕рдордп рд╣реИред

@darkuranium :

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

рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдо рдбрд┐рдЬрд╝рд╛рдЗрди рдореЗрдВ рдкрд┐рдЫрдбрд╝реЗ-рд╕рдВрдЧрдд рддрд░реАрдХреЗ рд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ goto рдмреЗрдХрд╛рд░ рд╣реИред рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ goto , рди рдХрд┐ рдХреЗрд╡рд▓ рд╡рд╛рдХреНрдп-рд░рдЪрдирд╛рддреНрдордХ рдЦрд┐рд▓реМрдирд╛ рд╢рд┐рд╖реНрдЯрд╛рдЪрд╛рд░ рдореЗрдВред

рдЗрд╕ рд╕рдордп, рдкреНрд░реЗрд░рдгрд╛ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдХреЛ рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдЬреЛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рдЦрд╛рд░рд┐рдЬ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдЕрдЧрд░ рдпрд╣ рдареЛрд╕ рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

WebAssembly рдХреА рдкреНрд░рдХреГрддрд┐ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЕрдм рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХреЛрдИ рднреА рдЧрд▓рддреА рдЖрдиреЗ рд╡рд╛рд▓реЗ рджрд╢рдХреЛрдВ рддрдХ рдмрдиреЗ рд░рд╣рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ (рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рджреЗрдЦреЗрдВ!) рдЗрд╕рд▓рд┐рдП рдпрд╣ рдореБрджреНрджрд╛ рдЗрддрдирд╛ рдЧрдВрднреАрд░ рд╣реИ; рдХрд┐рд╕реА рднреА рдХрд╛рд░рдг рд╕реЗ рдЕрдм рдЧреЛрдЯреЛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреЛ --- рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ --- рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЪреАрдЬрд╝ рдкрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдкреНрд░рднрд╛рд╡ рд╣реИ, рдФрд░ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрд▓рд╕реА рд╣реИ), рдФрд░ рдЖрдк рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ рд▓рдВрдмреЗ рд╕рдордп рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВред

рддреЛ рдореИрдВ рдЖрдкрдХреЗ рдЭрд╛рдВрд╕реЗ рдХреЛ рдмреБрд▓рд╛рдКрдВрдЧрд╛: рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЬреЛ рдкреНрд░реЗрд░рдгрд╛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░рд╕реНрддрд╛рд╡ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖрдирд╛ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛рдпрд╛ рд╣реИ, рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЖрд▓рд╕реА рд╣реИред

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

рдЕрдиреНрдпрдерд╛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ goto рднрд╡рд┐рд╖реНрдп рдХреА рдПрдХ рдмреЗрд╣рддрд░реАрди

рдирдорд╕реНрддреЗред рдореИрдВ webassembly рд╕реЗ IR рдФрд░ рд╡рд╛рдкрд╕ webassembly рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рд▓рд┐рдЦрдиреЗ рдХреЗ рдмреАрдЪ рдореЗрдВ рд╣реВрдВ, рдФрд░ рдореИрдВрдиреЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рд╣реИред

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

if (x) goto inside_loop;
// banana
while(y) {
    // things
    inside_loop:
    // do things
}

рдИрдмреАрдмреА рдХрдВрдкрд╛рдЗрд▓рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдВрдЧреЗ:

entry:
    cjump x, inside_loop
    // banana
    jump loop

loop:
    cjump y, exit
    // things
    jump inside_loop

inside_loop:
    // do things
    jump loop
exit:
    return

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

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЗрд╕рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рдП, рд╕рдВрдХрд▓рдХ рдЗрд╕ рдкрд░ рдХреБрдЫ рддрд░рдХреАрдмреЗрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдВрддрддрдГ рдЖрдкрдХреЛ рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдХреИрди рдХрд░рдиреЗ рдФрд░ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рд▓рддрд╛ рд╣реИред рдлреЙрд▓-рдереНрд░реВ рдЬрдВрдк рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрдореНрдореАрджрд╡рд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ:

<inside_loop, if(x)>
    // banana
<loop ┬░>
<exit if(y)>
    // things
</inside_loop, if(x)>
    // do things
</loop тЖС>
</exit>

рдЖрдЧреЗ рдЖрдкрдХреЛ рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ рд╕реНрдЯреИрдХ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреМрди рд╕рд╛ рдиреАрдЪреЗ рдЬрд╛рддрд╛ рд╣реИ? рдпрд╣ рдпрд╛ рддреЛ 'рдЗрдирд╕рд╛рдЗрдб рд▓реВрдк' рд╣реИ рдпрд╛ рдлрд┐рд░ 'рд▓реВрдк' рд╣реИред рд╣рдо рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдвреЗрд░ рдХреЛ рдХрд╛рдЯрдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЪреАрдЬреЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

if
    // do things
else
    // banana
end
loop
  br out
    // things
    // do things
end

рдЕрдм рд╣рдо рдЗрд╕реЗ webassembly рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рд▓реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рдЕрднреА рддрдХ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рдпреЗ рд▓реВрдк рдХреИрд╕реЗ рдмрдирддреЗ рд╣реИрдВред

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

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

рд▓реЗрдХрд┐рди рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛:

    cjump x, label(1)
    // banana
0: label
    cjump y, label(2)
    // things
1: label
    // do things
    jump label(0)
2: label
    // exit as usual, picking the values from the top of the stack.

рд╕рдВрдЦреНрдпрд╛рдПрдВ рдирд┐рд╣рд┐рдд рд╣реЛрдВрдЧреА, рдЕрд░реНрдерд╛рдд .. рдЬрдм рд╕рдВрдХрд▓рдХ рдПрдХ 'рд▓реЗрдмрд▓' рджреЗрдЦрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдирдпрд╛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдмреНрд▓реЙрдХ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рдирдпрд╛ рдЗрдВрдбреЗрдХреНрд╕ рдирдВрдмрд░ рджреЗрддрд╛ рд╣реИ, рдЬреЛ 0 рд╕реЗ рд╡реГрджреНрдзрд┐ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред

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

рдпрджрд┐ рдЖрдк рдЙрдкрд░реЛрдХреНрдд рдЦрд░рд╛рдм рдкрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдмрд▓ рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╕реНрдЯреИрдХ рд▓рдВрдмрд╛рдИ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд╢рд╛рдпрдж рдЕрдВрддрд┐рдо рдЕрдиреБрдХреНрд░рдорд┐рдд рд▓реЗрдмрд▓ рдХреЗ рд╕реНрдЯреИрдХ рдЖрдХрд╛рд░ рд╕реЗ рдбреЗрд▓реНрдЯрд╛, рдпрджрд┐ рдкреВрд░реНрдг рдорд╛рди рд╕рдВрдкреАрдбрд╝рди рдХреЗ рд▓рд┐рдП рдЦрд░рд╛рдм рд╣реИ), рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рд░реНрдХрд░ рдХрд┐рддрдиреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреВрджрддрд╛ рд╣реИ рдпрд╣ рдЫрд▓рд╛рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдвреЗрд░ рдХреЗ рдКрдкрд░ рд╕реЗ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИред

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

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

WebAssembly рдореЗрдВ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдХрдВрдЯреНрд░реЛрд▓ рдлреНрд▓реЛ рдХреЛ рдХреИрд╕реЗ рд╣реИрдВрдбрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди "рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯрди: рдПрди рдПрд▓рдПрд▓рд╡реАрдПрдо-рдЯреВ-рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░" рдкреЗрдкрд░ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд░рд┐рд▓реЛрдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкреБрдирд░реНрдЧрдард┐рдд рдХрд░рддрд╛ рд╣реИ:

_b_ = bool(x)
_b_ == 0 if
  // banana
end
block loop
  _b_ if
    // do things
    _b_ = 0
  else
    y br_if 2
    // things
    _b_ = 1
  end
  br 0
end end

рддрд░реНрдХрд╕рдВрдЧрдд рдпрд╣ рдерд╛ рдХрд┐ рд╕рдВрд░рдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рд╕реНрд░реЛрдд рдХреЛрдб рдбрдВрдк рдХреЛ рдкрдврд╝рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреЙрд▓реАрдлрд┐рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

webassembly рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рд▓реЛрдЧ рд╢рд╛рдпрдж рдзреНрд╡рд╕реНрдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдФрд░ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓ рд╣реЛрдВрдЧреЗред

рдЗрд╕рд▓рд┐рдП:

  • рдЬреИрд╕рд╛ рдХрд┐ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, WebAssembly рдЕрдм рд╕реНрдерд┐рд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдХреБрд▓ рдкреБрдирд░реНрд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рд╕рдордп рдмреАрдд рдЪреБрдХрд╛ рд╣реИ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреИрд╕реЗ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

    • рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬрдм рдЧреЛрдЯреЛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдЗрд╕рд╕реЗ рдХрд╛рдо рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ! рдмреНрд▓реЙрдХ-рдЖрдзрд╛рд░рд┐рдд рдирд┐рд░реНрджреЗрд╢ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╛рдЗрдХрд╢реЗрдбрд┐рдВрдЧ рд╕реЗ рдкрд░реЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдХреЛрдИ рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрддреНрдкрд╛рджрди рд╕рдВрдХрд▓рдХ рд▓рдХреНрд╖реНрдпреАрдХрд░рдг рдХреЛ рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдХрдо рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЛ рд╡реНрдпрдХреНрдд

  • рдХрдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИред

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

    • рдореИрдВрдиреЗ JavaScriptCore, V8, рдФрд░ SpiderMonkey рдореЗрдВ рд╡рд░реНрддрдорд╛рди WebAssembly рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЬрд╛рдБрдЪ рдХреА, рдФрд░ рд╡реЗ рд╕рднреА рдЗрд╕ рдкреИрдЯрд░реНрди рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВред (рд╡реА 8 рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ - рдмреБрдирд┐рдпрд╛рджреА рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рдмрдЬрд╛рдп рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ "рдиреЛрдбреНрд╕ рдХрд╛ рд╕рдореБрджреНрд░" рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ - рд▓реЗрдХрд┐рди рдШреЛрдВрд╕рд▓реЗ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рднреА рдлреЗрдВрдХ рджреЗрддрд╛ рд╣реИред)

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

    • рд▓реВрдк рд╡рд┐рд╢реНрд▓реЗрд╖рдг "рдкреНрд░рд╛рдХреГрддрд┐рдХ рд▓реВрдк" рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд▓реВрдк рдХреЗ рдмреАрдЪ рдореЗрдВ рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рдордирд╛ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд▓реВрдк рд╣реЗрдбрд░ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рддреЗ рд╣реИрдВред

    • WebAssembly рдХреЛ рдпрд╣ рдЧрд╛рд░рдВрдЯреА рджреЗрдирд╛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ loop рдмреНрд▓реЙрдХ рдкреНрд░рд╛рдХреГрддрд┐рдХ рд▓реВрдк рд╣реИрдВред

    • рд▓реЗрдХрд┐рди рд▓реВрдк рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкреВрд░рд╛ рдХрд╛рд░реНрдп рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ, рди рд╣реА рд▓реВрдк рдХреЗ рдЕрдВрджрд░ рднреА: рдпрд╣ рд╕рд┐рд░реНрдл рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рдмрд╛рд╣рд░ рд╕реЗ рдЕрдВрджрд░ рддрдХ рдордирд╛ рдХрд░рддрд╛ рд╣реИред рдЖрдзрд╛рд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЕрднреА рднреА рдПрдХ рдордирдорд╛рдирд╛ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдЧреНрд░рд╛рдл рд╣реИред

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

    • рд▓реЗрдХрд┐рди WebAssembly рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ рдирд┐рд░реНрдгрдп рд▓реЗрддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рдХрдВрдкрд╛рдЗрд▓-рдЯреВ-рдЬреЗрдПрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░рдирдЯрд╛рдЗрдо рдУрд╡рд░рд╣реЗрдб рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ (рдЕрд╕рдВрд░реЗрдЦрд┐рдд рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рд╕рдкреЛрд░реНрдЯ рдФрд░ рдЖрдЙрдЯ-рдСрдл-рдмрд╛рдЙрдВрдбреНрд╕ рдПрдХреНрд╕реЗрд╕ рдкрд░ рдЯреНрд░реИрдкрд┐рдВрдЧ рд╕рд╣рд┐рдд), рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реБрдП рдХрд┐ рдЗрд╕реЗ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

    • рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рдЬрдЯрд┐рд▓ рдмрдирд╛рдирд╛ рдХреЛрдИ рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИред

    • рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░рдг рд╣реИред

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

    • рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдмреИрдХрдПрдВрдб рд╕рдВрд░рдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░рднреБрддреНрд╡ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдЧрд░ рдореИрдВ рдХрд▓реНрдкрдирд╛ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрджреЗрд╢ рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдмреНрд▓реЙрдХ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

    • block :



      • рдмреНрд▓реЙрдХ рд╢реБрд░реВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ BB рдореЗрдВ рдкрд┐рдЫрд▓реЗ BB рдХрд╛ рдкреНрд░рднреБрддреНрд╡ рд╣реЛрддрд╛ рд╣реИред*


      • рд╕рдВрдмрдВрдзрд┐рдд end рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдиреЗ рд╡рд╛рд▓реЗ BB рдореЗрдВ рдмреНрд▓реЙрдХ рд╢реБрд░реВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ BB рдХрд╛ рдкреНрд░рднреБрддреНрд╡ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди end рд╕реЗ рдкрд╣рд▓реЗ BB рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ (рдХреНрдпреЛрдВрдХрд┐ br рдЖрдЙрдЯ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛) )



    • loop :



      • рдмреНрд▓реЙрдХ рд╢реБрд░реВ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдмреАрдмреА рдореЗрдВ рдкрд┐рдЫрд▓реА рдмреАрдмреА рдХрд╛ рдкреНрд░рднреБрддреНрд╡ рд╣реЛрддрд╛ рд╣реИред


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



    • if :



      • рдпрджрд┐ рдкрдХреНрд╖, рдФрд░ рдкрдХреНрд╖ рд╣реИ, рдФрд░ рдХреЗ рдмрд╛рдж рдмреА рдмреА end рд╕рдм рд╕реЗ рдкрд╣рд▓реЗ рдмреА рдмреА рдХрд╛ рдкреНрд░рднреБрддреНрд╡ рд╣реИ if ред



    • br , return , unreachable :



      • ( br , return , рдпрд╛ unreachable рддреБрд░рдВрдд рдмрд╛рдж BB рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред)



    • br_if , br_table :



      • br_if / br_table рд╕реЗ рдкрд╣рд▓реЗ BB рдЗрд╕рдХреЗ рдмрд╛рдж рд╡рд╛рд▓реЗ рдкрд░ рд╣рд╛рд╡реА рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред



    • рдЧреМрд░рддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЕрдиреБрдорд╛рди рд╣реИред рдпрд╣ рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдХрд╣ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдП рдмреА рдкрд░ рд╣рд╛рд╡реА рд╣реИ рдЬрдм рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ) рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдРрд╕рд╛ рдХрд╣рддрд╛ рд╣реИ рдЬрдм рдирд┐рд░реНрдорд╛рдг рджреНрд╡рд╛рд░рд╛ рдП рдХреЗ рдмрд┐рдирд╛ рдмреА рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдЭреВрдареА рдирдХрд╛рд░рд╛рддреНрдордХ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдХрд╣ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреА рдкрд░ рд╣рд╛рд╡реА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ), рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдПрдХ рд╕рд┐рдВрдЧрд▓-рдкрд╛рд╕ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЙрдирдХреЛ рдкрд╣рдЪрд╛рди рд╕рдХрддрд╛ рд╣реИ (рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред

    • рдЙрджрд╛рд╣рд░рдг рдЧрд▓рдд рдирдХрд╛рд░рд╛рддреНрдордХ:

      ```

      рдмреНрд▓реЙрдХ $рдмрд╛рд╣рд░реА

      рдХреБрдВрдбрд▓реА

      рдмреАрдЖрд░ $рдмрд╛рд╣рд░реА ;; рдЪреВрдВрдХрд┐ рдпрд╣ рдмрд┐рдирд╛ рд╢рд░реНрдд рдЯреВрдЯрддрд╛ рд╣реИ, рдпрд╣ рдЧреБрдкреНрдд рд░реВрдк рд╕реЗ рдЕрдВрдд рдмреАрдмреА рдкрд░ рд╣рд╛рд╡реА рд╣реИ

      рд╕рдорд╛рдкреНрдд

      рд╕рдорд╛рдкреНрдд

    • рд▓реЗрдХрд┐рди рдпрд╣ рдареАрдХ рд╣реИ, AFAIKред



      • рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛ рдЦрд░рд╛рдм рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ рдореВрд▓ рдмреНрд▓реЙрдХ рдП рдХреЛ рдореВрд▓ рдмреНрд▓реЙрдХ рдмреА рдкрд░ рд╣рд╛рд╡реА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдмреА рдХреЗ рд▓рд┐рдП рдорд╢реАрди рдХреЛрдб рдП рдореЗрдВ рдПрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдпрджрд┐ рдмреАрдЪ рдореЗрдВ рдХреБрдЫ рднреА рдЙрд╕ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред рдпрджрд┐ рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреА рдкрд░ рд╣рд╛рд╡реА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдХрдЪрд░рд╛ рдореВрд▓реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


      • рдЭреВрдареА рдирдХрд╛рд░рд╛рддреНрдордХ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рднреВрдд рд╢рд╛рдЦрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдХрднреА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВред рд╕рдВрдХрд▓рдХ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╢рд╛рдЦрд╛рдПрдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рдХреЛрдб рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд░реВрдврд╝рд┐рд╡рд╛рджреА рд╣реИред



    • рд╡реИрд╕реЗ рднреА, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ рдХрд┐ рдкреНрд░рдореБрдЦ рдкреЗрдбрд╝ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ goto рдирд┐рд░реНрджреЗрд╢ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ A, B рдкрд░ рд╣рд╛рд╡реА рд╣реИ, рдЬреЛ C рдкрд░ рд╣рд╛рд╡реА рд╣реИред

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

    • рд╣рдо рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдП рд╕реЗ рдмреА рддрдХ рдХреВрдж рд╕рдХрддреЗ рдереЗ, рд▓реЗрдХрд┐рди рддрддреНрдХрд╛рд▓ рд╡рдВрд╢рдЬ рдХреЗ рдкрд╛рд╕ рдЬрд╛рдирд╛ рдЗрддрдирд╛ рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИред рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдЕрдЧрд░ рдпрд╛ рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рдЬреЛ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ( if рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрджрд┐ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рдЗрдирд░реА рдЯреЗрд╕реНрдЯ рд╣реИ, рдпрд╛ br_table рдпрджрд┐ рдПрдХрд╛рдзрд┐рдХ рд╣реИрдВ)ред

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

    • рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдХ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдмрд╛рдЗрдирд░реА рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкреНрд░рднреБрддреНрд╡ рдореЗрдВ рдЭреВрдареА рдирдХрд╛рд░рд╛рддреНрдордХ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рд╡реЗ (рдП) рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрднрд╡ рд╣реИрдВ рдФрд░ (рдмреА) рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИрдВред

  • рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдпрд╣рд╛рдБ рдПрдХ рд╕реНрдЯреНрд░реЙрдореИрди рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ:

    • рдПрдХ рдирдпрд╛ рдмреНрд▓реЙрдХ-рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд┐рд░реНрджреЗрд╢:
    • рд▓реЗрдмрд▓ рдкрд░рд┐рдгрд╛рдордкреНрд░рдХрд╛рд░ N instr* end
    • рдмрд┐рд▓реНрдХреБрд▓ рдПрди рддрддреНрдХрд╛рд▓ рдмрдЪреНрдЪреЛрдВ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рдЬрд╣рд╛рдВ "рддрддреНрдХрд╛рд▓ рдмрдЪреНрдЪреЗ" рдХрд╛ рдЕрд░реНрде рд╣реИ рдпрд╛ рддреЛ рдПрдХ рдмреНрд▓реЙрдХ-рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ ( loop , block , рдпрд╛ labels ) рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рддрдХ рд╕рдм рдХреБрдЫ end , рдпрд╛ рдПрдХ рдПрдХрд▓ рдЧреИрд░-рдмреНрд▓реЙрдХ рдирд┐рд░реНрджреЗрд╢ (рдЬреЛ рд╕реНрдЯреИрдХ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП)ред
    • рдЕрдиреНрдп рдмреНрд▓реЙрдХ-рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рддрд░рд╣ рдПрдХрд▓ рд▓реЗрдмрд▓ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, labels N+1 рд▓реЗрдмрд▓ рдмрдирд╛рддрд╛ рд╣реИ: N N рдмрдЪреНрдЪреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрдХ labels рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрдд рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдмрдЪреНрдЪреЗ рдореЗрдВ, рд▓реЗрдмрд▓ рд╕реВрдЪрдХрд╛рдВрдХ 0 рд╕реЗ N-1 рдХреНрд░рдо рдореЗрдВ рдмрдЪреНрдЪреЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд▓реЗрдмрд▓ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ N рдЕрдВрдд рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред

    рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕
    loop ;; outer labels 3 block ;; child 0 br X end nop ;; child 1 nop ;; child 2 end end

    рдПрдХреНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, br рдЕрд░реНрде рд╣реИ:

    | рдПрдХреНрд╕ | рд▓рдХреНрд╖реНрдп |
    | ---------- | ------ |
    | 0 | block рдХрд╛ рдЕрдВрдд |
    | 1 | рдЪрд╛рдЗрд▓реНрдб 0 ( block рд╢реБрд░реБрдЖрдд) |
    | 2 | рдмрдЪреНрдЪрд╛ 1 (рдирд╣реАрдВ) |
    | 3 | рдмрдЪреНрдЪрд╛ 2 (рдирд╣реАрдВ) |
    | 4 | labels рдХрд╛ рдЕрдВрдд |
    | 5 | рдмрд╛рд╣рд░реА рд▓реВрдк рдХреА рд╢реБрд░реБрдЖрдд |

    • рдирд┐рд╖реНрдкрд╛рджрди рдкрд╣рд▓реЗ рдмрдЪреНрдЪреЗ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред

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

    • labels рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдмрдЪреНрдЪреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рдмреНрд░рд╛рдВрдЪ рдХрд░рдиреЗ рд╕реЗ рдСрдкрд░реЗрдВрдб рд╕реНрдЯреИрдХ рдЗрд╕рдХреА рдЧрд╣рд░рд╛рдИ рддрдХ рдЦреБрд▓ рдЬрд╛рддрд╛ рд╣реИред

    • рддреЛ рдЕрдВрдд рддрдХ рдмреНрд░рд╛рдВрдЪрд┐рдВрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рдХрд╛рд░ рдЧреИрд░- block рд╕рдорд╛рди рдЦреЛрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдзрдХреНрдХрд╛ рджреЗрддрд╛ рд╣реИред

    • рдкреНрд░рднреБрддреНрд╡: labels рдирд┐рд░реНрджреЗрд╢ рд╕реЗ рдкрд╣рд▓реЗ рдореВрд▓ рдмреНрд▓реЙрдХ рдкреНрд░рддреНрдпреЗрдХ рдмрдЪреНрдЪреЗ рдкрд░ рд╣рд╛рд╡реА рд╣реИ, рд╕рд╛рде рд╣реА labels рдХреЗ рдЕрдВрдд рдХреЗ рдмрд╛рдж рдмреАрдмреА рдкрд░ рднреА рд╣рд╛рд╡реА рд╣реИред рдмрдЪреНрдЪреЗ рдПрдХ рджреВрд╕рд░реЗ рдкрд░ рдпрд╛ рдЕрдВрдд рдкрд░ рд╣рд╛рд╡реА рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред

    • рдбрд┐рдЬрд╛рдЗрди рдиреЛрдЯреНрд╕:

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

    • рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдВрддрддрдГ рд▓реЗрдмрд▓ рдХреЗ рдмреАрдЪ рдСрдкрд░реЗрдВрдб рд╕реНрдЯреИрдХ рдкрд░ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдореВрд▓реНрдпреЛрдВ рдХреЛ block рдпрд╛ loop рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдерддрд╛ рдХреЗ рдЕрдиреБрд░реВрдк, рдЬрд┐рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕рдорд░реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд╕рд╛рдеред

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд▓реВрдк рдореЗрдВ рдХреВрджрдирд╛ рд╕рдВрднрд╡ рд╣реЛ, рд╣реИ рдирд╛? рдЖрдИрдЖрдИрдпреВрд╕реА, рдЕрдЧрд░ рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдереЗ рддреЛ рдмреБрд░рд╛ рд▓реВрдк + br_table рдХреЙрдореНрдмреЛ рдХреА рдХрднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА ...

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдУрд╣, рдЖрдк loop рдореЗрдВ рдКрдкрд░ рдХреА рдУрд░ рдХреВрджрдХрд░ рдмрд┐рдирд╛ рд▓реВрдк рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ labels ред рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рдореИрдВ рдЪреВрдХ рдЧрдпрд╛ред

@qwertie рдПрдХ рджрд┐рдпрд╛ рдкрд╛рд╢ рдПрдХ рдкреНрд░рд╛рдХреГрддрд┐рдХ рдкрд╛рд╢ рдирд╣реАрдВ рд╣реИ, рддреЛ Wasm-рд▓рдХреНрд╖реНрдп рд╕рдВрдХрд▓рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЗрд╕реЗ рд╡реНрдпрдХреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП labels рдХреЗ рдмрдЬрд╛рдп loop ред рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрднреА рднреА рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрджрд┐ рдЖрдк рдпрд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВред (рдЖрдЦрд┐рд░рдХрд╛рд░, рдХрдо рд╕реЗ рдХрдо рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдореВрд▓ рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЗрдмрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд╢рд╛рд▓ labels рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рдВрдХрд▓рдХ рдХреЛ рдкреНрд░рднреБрддреНрд╡ рдФрд░ рдкреНрд░рд╛рдХреГрддрд┐рдХ рд▓реВрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдмрддрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЪреВрдХ рд╕рдХрддреЗ рд╣реИрдВ рдЕрдиреБрдХреВрд▓рдиред рд▓реЗрдХрд┐рди labels рдХреЗрд╡рд▓ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬрд╣рд╛рдВ рд╡реЗ рдЕрдиреБрдХреВрд▓рди рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред)

рдиреЗрд╕реНрдЯреЗрдб рд▓реВрдк рд╕рдВрд░рдЪрдирд╛, рд╡рд╣ рдЪреАрдЬ рдЬреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддреА рд╣реИ, рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХрд╛рдлреА рджреВрд░ рдлреЗрдВрдХ рджреА рдЬрд╛рддреА рд╣реИред [тАж]

рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ: рдХрдо рд╕реЗ рдХрдо рдПрд╕рдПрдо рдореЗрдВ, рдЖрдИрдЖрд░ рдЧреНрд░рд╛рдл рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдЧреНрд░рд╛рдл рдирд╣реАрдВ рд╣реИ; рд╣рдо рдХреБрдЫ рдЧреНрд░рд╛рдлрд╝ рдЗрдирд╡реЗрд░рд┐рдПрдВрдЯ рдорд╛рдирддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рд╕рдВрд░рдЪрд┐рдд рд╕реНрд░реЛрдд (JS рдпрд╛ wasm) рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдХреНрд╕рд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд╕рд░рд▓ рдФрд░/рдпрд╛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп CFG рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛ рддреЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рдХрдИ рдкрд╛рд╕реЛрдВ рдХреЛ рдСрдбрд┐рдЯрд┐рдВрдЧ/рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рддрд╛рдХрд┐ рдЗрди рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдпреЛрдВ рдХреЛ рдЧреНрд░рд╣рдг рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ (рдпрд╛ рддреЛ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХрд░рдХреЗ рдпрд╛ рдЗрд░реЗрдбреНрдпреВрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдирд┐рд░рд╛рд╢ рдХрд░рдХреЗ) рдпрд╛ рдЧреНрд░рд╛рдл рдХреЛ рдХрдо рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЛрдб-рд╡рд┐рднрд╛рдЬрди рджреЛрд╣рд░рд╛рд╡ред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдЪ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдХреГрддреНрд░рд┐рдо рдЕрдбрд╝рдЪрди рд╣реЛрдиреЗ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЗрдВрдЬрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рд╕рд╛рдордиреЗ рдЗрд░реЗрдбреНрдпреВрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рдХреЗ рд╕рд╛рде рд╕реМрджрд╛ рдХрд░рдиреЗ рд╕реЗ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдХрдВрдЯреНрд░реЛрд▓ рдлреНрд▓реЛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХреБрдЫ рдЕрдзрд┐рдХ рдЕрдиреБрдорд╛рдирд┐рдд рдкреНрд░рджрд░реНрд╢рди рд╣реЛрдЧрд╛ред

рдЬрдм рд╣рдордиреЗ рдЕрддреАрдд рдореЗрдВ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЧреЛрдЯреЛ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде wasm рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд┐рдЫрдбрд╝реЗ-рд╕рдВрдЧрдд рдкрдереЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рд╣реИ, рддреЛ рдПрдХ рдмрдбрд╝рд╛ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдХреНрдпрд╛ рд╣реИ: рдХреНрдпрд╛ рдпрд╣ "рдирд┐рд░реНрдорд╛рддрд╛рдУрдВ рдХреЛ рдПрдХ рд░рд┐рд▓реЛрдкрд░-рдкреНрд░рдХрд╛рд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ" рдпрд╛ рдпрд╣ рд╣реИ "рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдХреЛрдбрдЬрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ"? рдЕрдЧрд░ рдпрд╣ рд╕рд┐рд░реНрдл рдкреВрд░реНрд╡ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╢рд╛рдпрдж рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд▓реЗрдмрд▓/рдЧреЛрдЯреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреА рдХреБрдЫ рдпреЛрдЬрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдЬреЛ рдкреАрдЫреЗ рдХреА рдУрд░ рд╕рдВрдЧрдд рд╣реИ рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рдмреНрд▓реЙрдХ-рд╕рдВрд░рдЪрд┐рдд рдкреНрд░рдпрд╛рд╕/рдкрдХрдбрд╝ рдХреЗ рд╕рд╛рде рднреА рдмрдирд╛ рд╣реИ); рдпрд╣ рдХреЗрд╡рд▓ рд▓рд╛рдЧрдд/рд▓рд╛рдн рдФрд░ рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдореБрджреНрджреЛрдВ рдХреЛ рддреМрд▓рдиреЗ рдХреА рдмрд╛рдд рд╣реИред

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

@lukewagner
рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕реБрдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХреМрди рд╕реЗ рдкрд╛рд╕ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣реИрдВред рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдлреНрд▓реЛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдореИрдВрдиреЗ рдЬреЛ рдбрд┐рдЬрд╛рдЗрди рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдерд╛, рдЙрд╕реЗ рдПрд▓рдЖрдИрд╕реАрдПрдо рдЬреИрд╕реЗ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдкрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЖрд╕рд╛рди рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдЙрд╕ рдлреНрд▓реЛ рдХреЛ рд╕рд╛рдл рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдЯреВрдЯрдиреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рдирд╣реАрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдЙрдирдХреА рдкреНрд░рдХреГрддрд┐ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдореБрдЭреЗ рдмреЗрд╣рддрд░ рд╡рд┐рдЪрд╛рд░ рдорд┐рд▓ рд╕рдХреЗ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдФрд░ рдХреИрд╕реЗ рдЯрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЬрдм рд╣рдордиреЗ рдЕрддреАрдд рдореЗрдВ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЧреЛрдЯреЛ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде wasm рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд┐рдЫрдбрд╝реЗ-рд╕рдВрдЧрдд рдкрдереЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рд╣реИ, рддреЛ рдПрдХ рдмрдбрд╝рд╛ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдХреНрдпрд╛ рд╣реИ: рдХреНрдпрд╛ рдпрд╣ "рдирд┐рд░реНрдорд╛рддрд╛рдУрдВ рдХреЛ рдПрдХ рд░рд┐рд▓реЛрдкрд░-рдкреНрд░рдХрд╛рд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ" рдпрд╛ рдпрд╣ рд╣реИ "рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдХреЛрдбрдЬрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ"?

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

рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХрд┐рддрдирд╛ рд╣реИ ...

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рджрдВрдбрд┐рдд рдХрд░рдирд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдордирдорд╛рдирд╛ рдФрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╕рдордЧреНрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд░рдирдЯрд╛рдЗрдо рдкрд░ рдкреНрд░рднрд╛рд╡ рдЫреЛрдЯрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рдХрд┐рд╕реА рд╣реЙрдЯрд╕реНрдкреЙрдЯ рдореЗрдВ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдХрдВрдЯреНрд░реЛрд▓ рдлреНрд▓реЛ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдПрдХ рдЧрдВрднреАрд░ рдЬреБрд░реНрдорд╛рдирд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛; рднрд╡рд┐рд╖реНрдп рдореЗрдВ, WebAssembly рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдЧрд╛рдЗрдб рдореЗрдВ рдЗрд╕реЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЧреЛрдЪрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╕рдордЭрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рдП рдФрд░ рдЗрд╕рд╕реЗ рдХреИрд╕реЗ рдмрдЪрд╛ рдЬрд╛рдПред рдпрджрд┐ рдореЗрд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╕рд╣реА рд╣реИ, рддреЛ рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рд╕рдВрдЬреНрдЮрд╛рдирд╛рддреНрдордХ рдЙрдкрд░рд┐ рдХрд╛ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╣реИред рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЬрдм рдУрд╡рд░рд╣реЗрдб рдЫреЛрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ, рддрдм рднреА WebAssembly рдХреЗ рдкрд╛рд╕ рджреЗрд╢реА рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рдУрд╡рд░рд╣реЗрдб рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗ рдмрдЪрдиреЗ рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред

рдореИрдВ рдпрд╣ рдорд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВ рдХрд┐ рдореЗрд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдЧрд▓рдд рд╣реИред

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

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

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

@comex рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА

>

рдиреЗрд╕реНрдЯреЗрдб рд▓реВрдк рд╕рдВрд░рдЪрдирд╛, рд╡рд╣ рдЪреАрдЬ рдЬреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддреА рд╣реИ, рд╣реИ
рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХрд╛рдлреА рдлреЗрдВрдХ рджрд┐рдпрд╛ред [...] рдореИрдВрдиреЗ рдХрд░рдВрдЯ рдХреА рдЬрд╛рдБрдЪ рдХреА
JavaScriptCore, V8, рдФрд░ SpiderMonkey рдореЗрдВ WebAssembly рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдФрд░
рд╡реЗ рд╕рднреА рдЗрд╕ рдкреИрдЯрд░реНрди рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВред

рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ: рдХрдо рд╕реЗ рдХрдо рдПрд╕рдПрдо рдореЗрдВ, рдЖрдИрдЖрд░ рдЧреНрд░рд╛рдл рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдЧреНрд░рд╛рдл рдирд╣реАрдВ рд╣реИ; рд╣рдо
рдХреБрдЫ рдЧреНрд░рд╛рдлрд╝ рдЗрдирд╡реЗрд░рд┐рдПрдВрдЯ рдорд╛рди рд▓реЗрдВ рдЬреЛ a . рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВ
рд╕рдВрд░рдЪрд┐рдд рд╕реНрд░реЛрдд (JS рдпрд╛ wasm) рдФрд░ рдЕрдХреНрд╕рд░ рд╕рд░рд▓ рдФрд░/рдпрд╛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ
рдПрд▓реНрдЧреЛрд░рд┐рджрдо

V8 рдореЗрдВ рд╡рд╣реАред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЛрдиреЛрдВ рдореЗрдВ рдПрд╕рдПрд╕рдП рдХреЗ рд╕рд╛рде рдореЗрд░реА рдкреНрд░рдореБрдЦ рдкрдХрдбрд╝ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ
рд╕рдВрдмрдВрдзрд┐рдд рд╕рд╛рд╣рд┐рддреНрдп рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬрд┐рдиреНрд╣реЗрдВ рд╡реЗ рд▓рдЧрднрдЧ рдХрднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ
рдХреНрдпрд╛ рдПрдХ "рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЧрдард┐рдд" CFG рдХрд╛ рдЧрдарди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░реЛрдХреНрд╖ рд░реВрдк рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдЧреНрд░рд╣рдг рдХрд░рддреЗ рд╣реИрдВ
рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рдмрд╛рдзрд╛рдПрдВ рд╡реИрд╕реЗ рднреА, рдЖрдорддреМрд░ рдкрд░ рдирд┐рд░реНрдорд╛рдг рджреНрд╡рд╛рд░рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ
рднрд╛рд╖рд╛ рджреГрд╢реНрдпрдкрдЯрд▓ред рдореИрдВ рд╢рд░реНрдд рд▓рдЧрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдореМрдЬреВрджрд╛ рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдореЗрдВ рдХрдИ/рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреБрдХреВрд▓рди
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдордирдорд╛рдиреА CFG рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдЬреИрд╕рд╛ рдХрд┐ @lukewagner рдХрд╣рддреЗ рд╣реИрдВ,
рдЕрдиреБрдХреВрд▓рд┐рдд рджреБрднрд╛рд╖рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП "рдереНрд░реЗрдбреЗрдб рдХреЛрдб"ред рдпрд╣ рдХрд╣рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рд╡реЗ рдХрд┐рддрдиреЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВ
Wasm рдбреЛрдореЗрди рдХреЗ рд▓рд┐рдП рд╣реИрдВ, рдФрд░ рдХреНрдпрд╛ рдЗрд╕рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╣реИ
рдЕрдбрд╝рдЪрди

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

LLVM рдореЗрдВ рд▓реВрдк рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╢рди рдЖрдорддреМрд░ рдкрд░ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдХрдВрдЯреНрд░реЛрд▓ рдлреНрд▓реЛ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджреЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд╡реЗ рдЬрд┐рд╕ рд▓реВрдк рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВ, рд╡рд╣ рдХреЗрд╡рд▓ рдкреНрд░рд╛рдХреГрддрд┐рдХ рд▓реВрдкреЛрдВ рдХреЛ рдкрд╣рдЪрд╛рдиреЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдмрд╕ рдЗрд╕ рдмрд╛рдд рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рдРрд╕реЗ CFG рдЪрдХреНрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд▓реВрдк рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рдЪрд╛рдирд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдЕрдиреНрдп рдЕрдиреБрдХреВрд▓рди рдкреНрд░рдХреГрддрд┐ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реНрдерд╛рдиреАрдп рд╣реИрдВ рдФрд░ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рд╕реАрдПрдлрдЬреА рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

рд╕реНрдореГрддрд┐ рд╕реЗ, рдФрд░ рд╢рд╛рдпрдж рдЧрд▓рдд, SPEC2006 рдореЗрдВ 401.bzip2 рдореЗрдВ рдПрдХ рдПрдХрд▓ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рд▓реВрдк рд╣реИ рдФрд░ рдмрд╕ рдЗрддрдирд╛ рд╣реАред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдпрд╣ рдХрд╛рдлреА рджреБрд░реНрд▓рдн рд╣реИред

рдХреНрд▓реИрдВрдЧ рдХрдВрдкреНрдпреВрдЯреЗрдб рдЧреЛрдЯреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрдВрдХреНрд╢рди рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ indirectbr рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░реЗрдЧрд╛ред рдпрд╣ рдереНрд░реЗрдбреЗрдб рджреБрднрд╛рд╖рд┐рдпреЛрдВ рдХреЛ indirectbr рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде рд▓реВрдк рд╣реЗрдбрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдХреГрддрд┐рдХ рд▓реВрдк рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рднрд╛рд╡ рд╣реИред рдПрд▓рдПрд▓рд╡реАрдПрдо рдЖрдИрдЖрд░ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореВрд▓ рдЙрд▓рдЭрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рдВрдЧрдард┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдореЗрдВ рд╕рд┐рдВрдЧрд▓ indirectbr рдХреЛ рдЯреЗрд▓-рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдПрдХрд▓-рдкрд╛рд╕ рд╕рддреНрдпрд╛рдкрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдирд╣реАрдВ рд╣реИ
рдЬрд┐рд╕рд╕реЗ рдореИрдВ рд╡рд╛рдХрд┐рдл рд╣реВрдВред рдХреЗрд╡рд▓ рдХрдо рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рд╡рд┐рдХрд▓реНрдк рдерд╛
рдЗрд╕ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдЕрддреНрдпрдзрд┐рдХ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реИред

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

рддреЛ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдХрдВрдЯреНрд░реЛрд▓ рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдпрд╣ рд╣реИ
рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдмреИрдХрдПрдВрдб рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдмрд╛рдд рд╣реИ
рдореВрд▓ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдЧреНрд░рд╛рдл рдФрд░ рдЗрд╕реЗ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВ (рдЗрдВрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдирдХреЗ рдХрдВрдкрд╛рдЗрд▓рд░
рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдХрдВрдЯреНрд░реЛрд▓ рдлреНрд▓реЛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ--рдЬреЛ 4 рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
рдореЗрд░реЗ рдЬреНрдЮрд╛рди рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛)ред

рд╢реНрд░реЗрд╖реНрда,
рдмреЗрди

рдЧреБрд░реБ, 20 рдЕрдкреНрд░реИрд▓, 2017 рдХреЛ рд╕реБрдмрд╣ 5:20 рдмрдЬреЗ, рдЬреИрдХрдм рд╕реНрдЯреЛрдХрд▓реБрдВрдб рдУрд▓реЗрд╕реЗрди <
рд╕реВрдЪрдирд╛рдПрдВ@github.com> рдиреЗ рд▓рд┐рдЦрд╛:

LLVM рдореЗрдВ рд▓реВрдк рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдЖрдорддреМрд░ рдкрд░ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдХрдВрдЯреНрд░реЛрд▓ рдлрд╝реНрд▓реЛ рдХреЛ рдирдЬрд╝рд░рдЕрдВрджрд╛рдЬрд╝ рдХрд░ рджреЗрдЧрд╛
рдФрд░ рдЗрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рди рдХрд░реЗрдВред рд▓реВрдк рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╡реЗ рд╡рд╕реАрдпрдд рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВ
рдХреЗрд╡рд▓ рдкреНрд░рд╛рдХреГрддрд┐рдХ рдЫреЛрд░реЛрдВ рдХреЛ рдкрд╣рдЪрд╛рдиреЗрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдмрд╕ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдЕрд╡рдЧрдд рд░рд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд╣рд╛рдБ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рд╕реАрдПрдлрдЬреА рдЪрдХреНрд░ рдмрдиреЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд▓реВрдк рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рдЪрд╛рдирд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдЕрдиреНрдп
рдЕрдиреБрдХреВрд▓рди рдкреНрд░рдХреГрддрд┐ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реНрдерд╛рдиреАрдп рд╣реИрдВ рдФрд░ рдЗрд░реЗрдбреНрдпреВрд╕рд┐рдмрд▓ рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ
рд╕реАрдПрдлрд╝рдЬреА.

рд╕реНрдореГрддрд┐ рд╕реЗ, рдФрд░ рд╢рд╛рдпрдж рдЧрд▓рдд, SPEC2006 рдореЗрдВ рдПрдХ рдПрдХрд▓ рдЗрд░реЗрдбреНрдпреВрд╕рдмрд▓ рд▓реВрдк рд╣реИ
401.bzip2 рдФрд░ рдмрд╕ред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдпрд╣ рдХрд╛рдлреА рджреБрд░реНрд▓рдн рд╣реИред

рдХреНрд▓реИрдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдмреАрдЖрд░ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░реЗрдЧрд╛
рдЧрдгрдирд╛ рдЧреЛрдЯреЛред рдпрд╣ рдереНрд░реЗрдбреЗрдб рджреБрднрд╛рд╖рд┐рдпреЛрдВ рдХреЛ рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рднрд╛рд╡ рд╣реИ
рдПрдХ рд▓реВрдк рд╣реЗрдбрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдирдбрд╛рдпрд░реЗрдХреНрдЯрдмреНрд░ рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдХреГрддрд┐рдХ рд▓реВрдкред рдЫреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж
LLVM IR, рдПрдХрд▓ рдЕрдкреНрд░рддреНрдпрдХреНрд╖br рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдореЗрдВ рдЯреЗрд▓-рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣реИ
рдореВрд▓ рдЙрд▓рдЭрди рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/WebAssembly/design/issues/796#issuecomment-295352983 ,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/ALnq1K99AR5YaQuNOIFIckLLSIZbmbd0ks5rxkJQgaJpZM4J3ofA
.

рдореИрдВ рдЖрдЧреЗ рдпрд╣ рднреА рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдЧрд░ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рдиреНрд╕ рдХреЛ рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдП рддреЛ
WebAssembly, рд╡реЗ TurboFan (V8 рдХреЗ рдЕрдиреБрдХреВрд▓рди JIT) рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП
рдлрд╝рдВрдХреНрд╢рдВрд╕ рдпрд╛ рддреЛ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ (рдмреЗрд╣рдж рдзреАрдореА) рдпрд╛ рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ
рдмреЗрд╕рд▓рд╛рдЗрди рдХрдВрдкрд╛рдЗрд▓рд░ (рдХреБрдЫ рд╣рдж рддрдХ рдзреАрдорд╛) рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХрд▓рд┐рдд, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╕рдВрднрд╡рддрдГ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ
рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдХрдВрдЯреНрд░реЛрд▓ рдлреНрд▓реЛ рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд░реНрдмреЛрдлреИрди рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдореЗрдВ рдирд┐рд╡реЗрд╢ рдХрд╛ рдкреНрд░рдпрд╛рд╕ред
рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ WebAssembly рдореЗрдВ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░реЗрдЧрд╛
рд╢рд╛рдпрдж рдмрд╣реБрдд рдЦрд░рд╛рдм рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред

рдмреЗрд╢рдХ, V8 рдореЗрдВ WebAssembly рдЗрдВрдЬрди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдЧрд╛
рдЯрд░реНрдмреЛрдлреИрди рд░рд┐рдбреНрдпреВрд╕рдмрд▓ рдЧреНрд░рд╛рдл рдХреЛ рдлреАрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рд▓реВрдкрд░, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрдХрд▓рди рдХрд░реЗрдЧрд╛
(рдФрд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдмрджрддрд░)ред my . рдореЗрдВ рд░реАрд▓реВрдкрд┐рдВрдЧ рдПрдХ рдСрдлрд╝рд▓рд╛рдЗрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрдиреА рд░рд╣рдиреА рдЪрд╛рд╣рд┐рдП
рд░рд╛рдп, рдЕрдиреНрдпрдерд╛ рд╣рдо рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рдЗрдВрдЬрди рд▓рд╛рдЧрддреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рд░рд╣реЗ рд╣реИрдВред

рд╢реНрд░реЗрд╖реНрда,
рдмреЗрди

рд╕реЛрдо, 1 рдордИ, 2017 рдХреЛ рджреЛрдкрд╣рд░ 12:48 рдмрдЬреЗ, рдмреЗрди рдПрд▓. рдЯрд┐рдЯреНрдЬрд╝рд░ [email protected] рдиреЗ рд▓рд┐рдЦрд╛:

рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдПрдХрд▓-рдкрд╛рд╕ рд╕рддреНрдпрд╛рдкрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдирд╣реАрдВ рд╣реИ
рдкреНрд░рд╡рд╛рд╣ рдЬрд┐рд╕реЗ рдореИрдВ рдЬрд╛рдирддрд╛ рд╣реВрдВред рдХреЗрд╡рд▓ рдХрдо рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рд╡рд┐рдХрд▓реНрдк
рдЗрд╕ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдЕрддреНрдпрдзрд┐рдХ рдкреНрд░рднрд╛рд╡рд┐рдд рдерд╛ред

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

рддреЛ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдХрдВрдЯреНрд░реЛрд▓ рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдпрд╣ рд╣реИ
рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдмреИрдХрдПрдВрдб рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдмрд╛рдд рд╣реИ
рдореВрд▓ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдЧреНрд░рд╛рдл рдФрд░ рдЗрд╕реЗ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВ (рдЗрдВрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдирдХреЗ рдХрдВрдкрд╛рдЗрд▓рд░
рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдХрдВрдЯреНрд░реЛрд▓ рдлреНрд▓реЛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ--рдЬреЛ 4 рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
рдореЗрд░реЗ рдЬреНрдЮрд╛рди рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛)ред

рд╢реНрд░реЗрд╖реНрда,
рдмреЗрди

рдЧреБрд░реБ, 20 рдЕрдкреНрд░реИрд▓, 2017 рдХреЛ рд╕реБрдмрд╣ 5:20 рдмрдЬреЗ, рдЬреИрдХрдм рд╕реНрдЯреЛрдХрд▓реБрдВрдб рдУрд▓реЗрд╕реЗрди <
рд╕реВрдЪрдирд╛рдПрдВ@github.com> рдиреЗ рд▓рд┐рдЦрд╛:

LLVM рдореЗрдВ рд▓реВрдк рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдЖрдорддреМрд░ рдкрд░ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдХрдВрдЯреНрд░реЛрд▓ рдлрд╝реНрд▓реЛ рдХреЛ рдирдЬрд╝рд░рдЕрдВрджрд╛рдЬрд╝ рдХрд░ рджреЗрдЧрд╛
рдФрд░ рдЗрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рди рдХрд░реЗрдВред рд▓реВрдк рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╡реЗ рд╡рд╕реАрдпрдд рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВ
рдХреЗрд╡рд▓ рдкреНрд░рд╛рдХреГрддрд┐рдХ рдЫреЛрд░реЛрдВ рдХреЛ рдкрд╣рдЪрд╛рдиреЗрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдмрд╕ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдЕрд╡рдЧрдд рд░рд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд╣рд╛рдБ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рд╕реАрдПрдлрдЬреА рдЪрдХреНрд░ рдмрдиреЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд▓реВрдк рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рдЪрд╛рдирд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдЕрдиреНрдп
рдЕрдиреБрдХреВрд▓рди рдкреНрд░рдХреГрддрд┐ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реНрдерд╛рдиреАрдп рд╣реИрдВ рдФрд░ рдЗрд░реЗрдбреНрдпреВрд╕рд┐рдмрд▓ рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ
рд╕реАрдПрдлрд╝рдЬреА.

рд╕реНрдореГрддрд┐ рд╕реЗ, рдФрд░ рд╢рд╛рдпрдж рдЧрд▓рдд, SPEC2006 рдореЗрдВ рдПрдХ рдЗрд░реЗрдбреНрдпреВрд╕рдмрд▓ рд▓реВрдк рд╣реИ
401.bzip2 рдореЗрдВ рдФрд░ рдмрд╕ред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдпрд╣ рдХрд╛рдлреА рджреБрд░реНрд▓рдн рд╣реИред

рдХреНрд▓реИрдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдмреАрдЖрд░ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░реЗрдЧрд╛
рдЧрдгрдирд╛ рдЧреЛрдЯреЛред рдпрд╣ рдереНрд░реЗрдбреЗрдб рджреБрднрд╛рд╖рд┐рдпреЛрдВ рдХреЛ рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рднрд╛рд╡ рд╣реИ
рдПрдХ рд▓реВрдк рд╣реЗрдбрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдирдбрд╛рдпрд░реЗрдХреНрдЯрдмреНрд░ рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдХреГрддрд┐рдХ рд▓реВрдкред рдЫреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж
LLVM IR, рдПрдХрд▓ рдЕрдкреНрд░рддреНрдпрдХреНрд╖br рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдореЗрдВ рдЯреЗрд▓-рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣реИ
рдореВрд▓ рдЙрд▓рдЭрди рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/WebAssembly/design/issues/796#issuecomment-295352983 ,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/ALnq1K99AR5YaQuNOIFIckLLSIZbmbd0ks5rxkJQgaJpZM4J3ofA
.

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

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

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

рдЖрд╣ ... рдореИрдВ рдкрд╣рд▓реЗ рдЬрд╡рд╛рдм рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рд▓реЗрдХрд┐рди рдЬреАрд╡рди рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдЖ рдЧрдпрд╛ред

рдореИрдВ рдХреБрдЫ рдЬреЗрдПрд╕ рдЗрдВрдЬрдиреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрдХрдбрд╝ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ 'рдмрд╕ рдХрд╛рдо рдХрд░ рд░рд╣реЗ' рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреЗ рджрд╛рд╡реЗ рдХреЛ рдХрдордЬреЛрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рдЕрднреА рднреА рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЗрддрдирд╛ рдХрдард┐рди рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдХреБрдЫ рдРрд╕реЗ рдирд┐рд░реНрдорд╛рдг рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рд╛рдн рд╣реЛрдЧрд╛ ...

рдареАрдХ рд╣реИ, рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ, рддрд░реНрдХ рдХреЗ рд▓рд┐рдП, рдХрд┐ рдЕрдиреБрдХреВрд▓рди рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕рдорд░реНрдерди рдХреЛ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдареАрдХ рд╕реЗ рдмрдирд╛рдирд╛ рдмрд╣реБрдд рдХрдард┐рди рд╣реИред рдПрдХ рдЬреЗрдПрд╕ рдЗрдВрдЬрди рдЕрднреА рднреА рдЖрд╕рд╛рдиреА рд╕реЗ рд╣реИрдХреА рддрд░реАрдХреЗ рд╕реЗ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ:

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

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

рдХреБрдЫ рдЕрд░реНрдереЛрдВ рдореЗрдВ, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ @ titzer рдХреЗ "рд╕рд░рд▓ рд╕реНрдерд╛рдиреАрдп рдЬрдВрдк-рдереНрд░реЗрдбрд┐рдВрдЧ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди" рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ 'рджреЗрд╢реА' рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рд▓реВрдк + рд╕реНрд╡рд┐рдЪ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓реВрдк + рд╕реНрд╡рд┐рдЪ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ - рдпрд╛рдиреА @ рдЯрд┐рдЯреНрдЬрд╝рд░ рдХрд╛ "рдкреИрдЯрд░реНрди рдЬрд╣рд╛рдВ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╣реЛрддрд╛ рд╣реИ, рдлрд┐рд░ рдПрдХ рд╕рд╢рд░реНрдд рд╢рд╛рдЦрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рд╛рдЦрд╛ рдЬреЛ рддреБрд░рдВрдд рдЙрд╕ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреА рд╣реИ" - рдФрд░ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдЬреЛрдбрд╝реЗрдВ рдЬрд┐рд╕рд╕реЗ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд╢рд╛рдЦрд╛ рдХреЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рджреЗрд░ рд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдпрджрд┐ рдпрд╣ рдЕрдиреБрдХреВрд▓рди рд╕рд░реНрд╡рд╡реНрдпрд╛рдкреА рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдХрд┐рд╕реА рднреА рддрд░рд╣, рд╣реИрдХреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдиреБрдХреВрд▓рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдЧреНрд░рд╛рдл рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВ; рд╡реЗ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдХреЛрдИ рднреА рд▓реЗрдмрд▓ рдХрд┐рд╕реА рдЕрдиреНрдп рд▓реЗрдмрд▓ рдкрд░ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд░рдЬрд┐рд╕реНрдЯрд░ рдЖрд╡рдВрдЯрди рдХреЛ рдПрдХ рдЪрд░ рдХреЛ рд╕рднреА рд▓реЗрдмрд▓реЛрдВ рдореЗрдВ рд▓рд╛рдЗрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ, рднрд▓реЗ рд╣реА, рдХрд╣реЗрдВ, рдпрд╣ рд╣рдореЗрд╢рд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓реЗрдмрд▓ рдкрд░ рдХреВрджрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдЫрджреНрдо рдХреЛрдб рдореЗрдВ рд╣реИ:

a:
  control = 1;
  goto x;
b:
  control = 2;
  goto x;
...
x:
  // use control

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

рдЬреЛ рднреА рд╣реЛ, рджреЗрд░ рд╕реЗ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рди рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИред рдПрдХ рд╕реАрдзреА рдЫрд▓рд╛рдВрдЧ рдПрдХ рдЫрд▓рд╛рдВрдЧ + рддреБрд▓рдирд╛ + рднрд╛рд░ + рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдЫрд▓рд╛рдВрдЧ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд╣реИ; рд╕реАрдкреАрдпреВ рд╢рд╛рдЦрд╛ рднрд╡рд┐рд╖реНрдпрд╡рдХреНрддрд╛ рдЕрдВрддрддрдГ рдкрд┐рдЫрд▓реЗ рд░рд╛рдЬреНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрд╛рдж рдХреЗ рд▓рдХреНрд╖реНрдп рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рд╕рд╛рде рд╕рдВрдХрд▓рдХ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЖрдк 'рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐' рдЪрд░ рдкрд░ рдПрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдФрд░/рдпрд╛ рд╕реНрдореГрддрд┐ рдЦрд░реНрдЪ рдХрд░рдиреЗ рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВред

рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП, рдЬреЛ рдмреЗрд╣рддрд░ рд╣реИ: рд╕реНрдкрд╖реНрдЯ ( labels рдирд┐рд░реНрджреЗрд╢ рдпрд╛ рд╕рдорд╛рди) рдпрд╛ рдирд┐рд╣рд┐рдд (рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓реВрдк рдХрд╛ рдЕрдиреБрдХреВрд▓рди + рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрдЯрд░реНрди рдХреЗ рдмрд╛рдж рд╕реНрд╡рд┐рдЪ)?

рдирд┐рд╣рд┐рдд рд▓рд╛рдн:

  • рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рджреБрдмрд▓рд╛ рд░рдЦрддрд╛ рд╣реИред

  • рдореМрдЬреВрджрд╛ рд▓реВрдк + рд╕реНрд╡рд┐рдЪ рдХреЛрдб рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдирд░реАрди рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдЦреНрдд рдкрд░реНрдпрд╛рдкреНрдд рдкреИрдЯрд░реНрди рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

  • рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдХрдВрдЯреНрд░реЛрд▓ рдлреНрд▓реЛ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХрд╛ рдзрдиреНрдп рддрд░реАрдХрд╛ рдмрдирд╛рдирд╛ рдЗрд╕ рддрдереНрдп рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдзреАрдорд╛ рд╣реИ рдФрд░ рдЬрдм рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдЗрд╕рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдирд┐рд╣рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд┐рдпрд╛рдВ:

  • рдпрд╣ рдПрдХ рд╣реИрдХ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рд╕рдЪ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ @titzer рдХрд╣рддреЗ рд╣реИрдВ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрди рдЗрдВрдЬрдиреЛрдВ рдХреЛ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ

  • рдПрдХ "рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХреНрд▓рд┐рдл" рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдорддреМрд░ рдкрд░ JS рдХреА рддреБрд▓рдирд╛ рдореЗрдВ WebAssembly рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреБрди: рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдореВрд▓ рдкреИрдЯрд░реНрди рд╣реИ "рдЬрд╣рд╛рдВ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╣реЛрддрд╛ рд╣реИ, рдлрд┐рд░ рдПрдХ рд╢рд╛рдЦрд╛ рдПрдХ рд╕рд╢рд░реНрдд рд╢рд╛рдЦрд╛ рдореЗрдВ рд╣реЛрддреА рд╣реИ рдЬреЛ рддреБрд░рдВрдд рдЙрд╕ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдкрд░ рд╕реНрд╡рд┐рдЪ рд╣реЛ рдЬрд╛рддреА рд╣реИ"ред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░, рдХрд╣реЗрдВ, рдмреАрдЪ рдореЗрдВ рдХреБрдЫ рдЕрдиреНрдп рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВ, рдпрд╛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ wasm const рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдХрд╛рд░рдг рд╕реНрдерд┐рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ? рдХреБрдЫ рдЗрдВрдЬрди рджреВрд╕рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЙрджрд╛рд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╡реЗ рдЗрд╕ рдкреИрдЯрд░реНрди рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рдЪрд╛рдирддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдХреЛрдб рдЬреЛ рдЗрд╕рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддрд╛ рд╣реИ (рдЬрд╛рдирдмреВрдЭрдХрд░ рдпрд╛ рдирд╣реАрдВ) рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рдмреАрдЪ рдХрд╛рдлреА рдЕрд▓рдЧ рдкреНрд░рджрд░реНрд╢рди рд╣реЛрдЧрд╛ред рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╣реЛрдиреЗ рд╕реЗ рдЕрдкреЗрдХреНрд╖рд╛рдПрдВ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рд╣реЛрддреА рд╣реИрдВред

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

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

тАж

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

AliasAnalysis.cpp: рд░рд┐рд╡рд░реНрд╕ рдкреЛрд╕реНрдЯрдСрд░реНрдбрд░ (рдПрдХ рдмрд╛рд░) рдореЗрдВ рдмреНрд▓реЙрдХреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдСрд░реНрдбрд░рд┐рдВрдЧ рдирд┐рд░реНрднрд░рддрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдЗрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рд░реАрдСрд░реНрдбрд░рд┐рдВрдЧ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рджреЗрдЦреЗ рдЧрдП рд╕реНрдЯреЛрд░ рдХреЛ рд╕рдВрднрд╡рддрдГ рдПрд▓рд┐рдпрд╛рд╕рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрдХрд░ред рдпрд╣ рдЪрдХреНрд░реАрдп рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди (рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЪрд┐рд╣реНрдирд┐рдд) рдЫреЛрд░реЛрдВ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рджреВрд╕рд░реЗ рдкрд╛рд╕ рдХреЗ рд╕рд╛рде рдЬреЛ рдПрдХ рд╣реА рд▓реВрдк рдореЗрдВ рдХрд╣реАрдВ рднреА рдмрд╛рдж рдХреЗ рдХрд┐рд╕реА рднреА рд╕реНрдЯреЛрд░ рдХреЗ рдЦрд┐рд▓рд╛рдл рд▓реВрдк рдореЗрдВ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред

-> рддреЛ labels рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд▓реВрдк рдорд╛рд░реНрдХрд┐рдВрдЧ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреВрд░реЗ labels рдмреНрд▓реЙрдХ рдХреЛ рд▓реВрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдирд╛ 'рдмрд╕ рдХрд╛рдо рдХрд░реЗрдЧрд╛' (рд╡реНрдпрдХреНрддрд┐рдЧрдд рд▓реЗрдмрд▓ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдП рдмрд┐рдирд╛), рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд▓реВрдк рдХреЗ рднреАрддрд░ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреА рджреЗрдЦрднрд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рдЯреАрдХ рд╣реИред

FlowAliasAnalysis.cpp: рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдЬреЛ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╕реНрдорд╛рд░реНрдЯ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд░рд┐рд╡рд░реНрд╕ рдкреЛрд╕реНрдЯрдСрд░реНрдбрд░ рдореЗрдВ рдмреНрд▓реЙрдХреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдХ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдкрд░ рдпрд╣ рд▓реВрдк рд╣реЗрдбрд░ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдЕрдкрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреВрд░реНрд╡рд╡рд░реНрддрд┐рдпреЛрдВ (рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╣реИ) рдХреЗ рд▓рд┐рдП рдЧрдгрдирд╛ рдХреА рдЧрдИ рдЕрдВрддрд┐рдо-рднрдВрдбрд╛рд░ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдорд░реНрдЬ рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдпрд╣ рдмреИрдХрдПрдЬ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред

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

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

-> рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдмрд▓ рдХреЛ рд▓реВрдк рд╣реЗрдбрд░ рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рд╕рдВрдкреВрд░реНрдг рд▓реЗрдмрд▓ рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рдЬреАрд╡рдВрддрддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕реЗ, рдкрд░рд┐рдгрд╛рдо рд╣реИрдХреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред

@comex рдпрд╣рд╛рдВ рдПрдХ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ wasm рдЗрдВрдЬрдиреЛрдВ рд╕реЗ рдХрд┐рддрдирд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдКрдкрд░ рдЖрдпрди рдХреЗ рдЙрдкрдирд╛рдо рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрд╣рд╛рдиреА рдХрд╛ рджреВрд╕рд░рд╛ рдкрдХреНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдЙрдкрдирд╛рдо рд╡рд┐рд╢реНрд▓реЗрд╖рдг WebAssembly рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЙрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдЕрднреА рдХреЗ рд▓рд┐рдП рдЬрдмрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд░реИрдЦрд┐рдХ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдЖрдпрди рдХреЗ BacktrackingAllocator.cpp рд▓рд╛рдЗрд╡рдиреЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╖реЗрдзрд╛рддреНрдордХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрдпрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд░реВрдкреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ OSR рд▓реВрдк рдореЗрдВ рдХрдИ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред

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

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

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

@tbodt - рдХреНрдпрд╛ рдЖрдк рдмрд╛рдЗрдирд░реАрди рдХреЗ рд░рд┐рд▓реЛрдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ? рдЖрдЗрдП рдЖрдк рдореВрд▓ рд░реВрдк рд╕реЗ Wasm-with-goto рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ Wasm рдХреЗ рд▓рд┐рдП рд╕рдВрд░рдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

@eholk рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдорд╢реАрди рдХреЛрдб рдХреЗ рд╕реАрдзреЗ рдЕрдиреБрд╡рд╛рдж рд╕реЗ

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

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ рдЙрд╕ рдкрд░ рдЖрдкрдХреЗ рд╕рд╛рде рд╕рд╣рдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреА, рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ :) рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпреВрдореВ рдХреЛ рд╡рд╛рд╕рдо рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

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

@kripken рдореБрдЭреЗ рд╕рд╣рдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреА, рдЖрдкрдХреЗ рд╕рд╛рде рдЪреИрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рдХрд╣рд╛рдВ рд╣реЛрдЧреА?

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

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рдЕрднреА рддрдХ рдпрд╣ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрдИ рдЦреБрд░рджреБрд░реЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

рдЕрдЧрд░ рдЯреЗрд▓рдХреЙрд▓ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛ рдвреЗрд░ рдмрд╣реБрдд рдЬрд▓реНрджреА рдмрд╣ рдЬрд╛рдПрдЧрд╛ред

рдПрдХ рдФрд░ рдЪреБрдиреМрддреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд╛рди рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдк рдХрд┐рд╕реА рддрд╛рд▓рд┐рдХрд╛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдореЗрдВ рдкрддрд╛ рдХреИрд╕реЗ рдореИрдк рдХрд░рддреЗ рд╣реИрдВ?

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

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

@tbodt рдмрд╛рдЗрдирд░реАрдПрди рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдиреЗ рдкрд░ рд╕рд╣рдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд░реЗрдкреЛ рдмрдирд╛рдПрдВ (рдФрд░ рд╡рд╣рд╛рдВ рдореБрджреНрджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ), рджреВрд╕рд░рд╛ рдХреНрдпреВрдореБ рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдирд░реАрди рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореБрджреНрджрд╛ рдЦреЛрд▓рдирд╛ рд╣реИред

рд╣рдо рдПрдХ рд╕рдордп рдореЗрдВ рдкреВрд░реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП qemu рдирд╣реАрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ qemu рдореЗрдВ "рдлрд╝рдВрдХреНрд╢рди" рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдирд╣реАрдВ рд╣реИред

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдмреНрд▓реЙрдХреЛрдВ рдХреЗ рдкреВрд░реЗ рдХреИрд╢ рдХреЛ рдкреБрди: рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдмрд╛рдд рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдХрд╛рдлреА рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рд╕рдордЭреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпреВрдореВ рдХреЗ рдмрд┐рд▓реНрдЯрд┐рди рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдмрд╛рдЗрдирд░реАрди рдкрд░ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЦреЛрд▓реЗрдВред

рдкрд╛рд░реНрд╢реНрд╡ рдкреНрд░рд╢реНрдиред рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ, WebAssembly рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рднрд╛рд╖рд╛ рдХреБрд╢рд▓ рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рд░реВрдк рд╕реЗ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХрд╛рд░реНрдп рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЙрдирдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рдЪрд┐рддреНрд░рдг рдХреЗ рд▓рд┐рдП рдореИрдВ рдЖрдкрдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ: http://sharp-gamedev.blogspot.com/2011/08/forgotten-control-flow-construct.html

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЪреАрд░реА рджреНрд╡рд╛рд░рд╛ рд╡реНрдпрдХреНрдд рдХреА рдЧрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рд░реВрдк рд╕реЗ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХрд╛рд░реНрдп рджреНрд╡рд╛рд░рд╛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

@davidgrenier , рдПрдХ Wasm рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХрд╛рд░реНрдп рд╕рднреА рдкрд░рд╕реНрдкрд░ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╣реИрдВред рдХреНрдпрд╛ рдЖрдк рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдЕрдХреНрд╖рдо рдорд╛рдирддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдЖрдк рдХреЗрд╡рд▓ рдЯреЗрд▓ рдХреЙрд▓реНрд╕ рдХреА рдХрдореА рдпрд╛ рдХреБрдЫ рдФрд░ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдЬрдирд░рд▓ рдЯреЗрд▓ рдХреЙрд▓ рдЖ рд░рд╣реЗ рд╣реИрдВред рдкреВрдВрдЫ рд░рд┐рдХрд░реНрд╕рди (рдЖрдкрд╕реА рдпрд╛ рдЕрдиреНрдпрдерд╛) рдЗрд╕рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рд╣реЛрдЧрд╛ред

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

рджреГрд╢реНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдЖрд░реЗрдЦреЛрдВ рд╕реЗ рдХреЛрдб рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЧреЛрдЯреЛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЕрдм рд╡рд┐рдЬрд╝реБрдЕрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд▓реЛрдЧ рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ wasm рдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрд░реЗрдЦреЛрдВ рдФрд░ рдЧреЛрдЯреЛ рд╕реЗ рдХреЛрдб рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА: http://drakon-editor.sourceforge.net/generation.html

рдЖрдЧрд╛рдореА Go 1.11 рд░рд┐рд▓реАрдЬрд╝ рдХреЛ WebAssembly рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред рдЗрд╕рдореЗрдВ рдЧреЛ рдХреА рд╕рднреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд╕рдорд░реНрдерди рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдЧреЛрд░реМрдЯрд╛рдЗрди, рдЪреИрдирд▓ рдЖрджрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрддреНрдкрдиреНрди WebAssembly рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрддрдирд╛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред

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

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

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

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

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

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

рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдПрдХ рдРрд╕рд╛ рд╕реНрдерд╛рди рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдмреБрдирд┐рдпрд╛рджреА рдмреНрд▓реЙрдХреЛрдВ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдХреЙрд▓ рдирд┐рд░реНрджреЗрд╢ рд╣реЛрддрд╛ рд╣реИред рд╣рдо рдХрдореЛрдмреЗрд╢ рдЕрдирдЗрдВрдбрд┐рдВрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред

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

рдХреНрдпрд╛ рд╕реАрдкреАрдПрд╕ рд╢реИрд▓реА рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдпрд╛ WASM рдореЗрдВ call/cc рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛?

@ рд╣реЗрдордбреЗрд▓ , рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ

рдЗрд╕ рд╕реВрддреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрдврд╝рдиреЗ рдкрд░, рдореБрдЭреЗ рдпрд╣ рдЖрднрд╛рд╕ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╕реБрд╡рд┐рдзрд╛ рдмрдирдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдордирдорд╛рдиреЗ рд▓реЗрдмрд▓ рдФрд░ рдЧреЛрдЯреЛ рдореЗрдВ рдПрдХ рдмрдбрд╝реА рдмрд╛рдзрд╛ рд╣реИ:

  • рдЕрд╕рдВрд░рдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рд░реЗрдЦрд╛рдВрдХрди рдХреЛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ
  • рдХрд┐рд╕реА рднреА "рддреЗрдЬрд╝, рд╕рд░рд▓ рд╕рддреНрдпрд╛рдкрди, рдЖрд╕рд╛рди, рдПрд╕рдПрд╕рдП рдлреЙрд░реНрдо рдореЗрдВ рдПрдХ рдкрд╛рд╕ рд░реВрдкрд╛рдВрддрд░рдг" рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛
  • рдЧреИрд░-рд░реИрдЦрд┐рдХ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЬреЗрдЖрдИрдЯреА рдХрдВрдкрд╛рдЗрд▓рд░ рдЦреЛрд▓рдирд╛
  • рдпрджрд┐ рдореВрд▓ рднрд╛рд╖рд╛ рд╕рдВрдХрд▓рдХ рдЕрдЧреНрд░рд┐рдо рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рд╡реЗрдмрдкреГрд╖реНрда рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рд╡рд┐рд▓рдВрдм рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

_*рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмреНрд░реМрди рдПрдЯ рдЕрд▓ рдХреЗ рдСрди-рдж-рдлреНрд▓рд╛рдИ рдПрд╕рдПрд╕рдП рдирд┐рд░реНрдорд╛рдг рдПрд▓реНрдЧреЛрд░рд┐рдердо рдЬреИрд╕реЗ рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдХрдВрдЯреНрд░реЛрд▓ рдлреНрд▓реЛ рдХреЛ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВ_

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

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

рд╡рд┐рдЪрд╛рд░?

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

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

рдмрд╛рдд рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдХрдВрдЯреНрд░реЛрд▓ рдлреНрд▓реЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдпрд╣ рдлреНрд░рдВрдЯ-рдПрдВрдб рдкрд░ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рд╣реИ рддреЛ рдпрд╣ рдЕрднреА рднреА рд╡рд╛рд╕рдо рдореЗрдВ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рд╣реИ, рд░рд┐рд▓реЛрдкрд░/рд╕реНрдЯреИрдХрдлрд╛рдпрд░ рдХрдиреНрд╡рд░реНрдЬрди рдХрдВрдЯреНрд░реЛрд▓ рдлреНрд▓реЛ рдХреЛ рд░рд┐рдбреНрдпреВрд╕реЗрдмрд▓ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИ, рдпрд╣ рдЗрд░реЗрдбреНрдпреВрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рдХреЛ рд░рдирдЯрд╛рдЗрдо рд╡реИрд▓реНрдпреВ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреНрд╡рд░реНрдЯ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдмреИрдХрдПрдВрдб рдХреЛ рдХрдо рдЬрд╛рдирдХрд╛рд░реА рджреЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмрджрддрд░ рдХреЛрдб рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЕрднреА рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рд╕реАрдПрдлрдЬреА рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдХреЛрдб рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рд░рд┐рд▓реВрдкрд░ рдФрд░ рд╕реНрдЯреИрдХрд┐рдлрд╛рдпрд░ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдкреИрдЯрд░реНрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд╛рдкрд╕ рдПрдХ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рд╕реАрдПрдлрдЬреА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд╣реИред рдЬрдм рддрдХ рдЖрдк V8 рд╡рд┐рдХрд╕рд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ AFAIK рдХреЗрд╡рд▓ рд░рд┐рдбреНрдпреВрд╕реЗрдмрд▓ рдХрдВрдЯреНрд░реЛрд▓ рдлреНрд▓реЛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдХрдВрдЯреНрд░реЛрд▓ рдлреНрд▓реЛ рдХрд╛ рд╕рдорд░реНрдерди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рдЬреАрдд рд╣реИ - рдпрд╣ рдлреНрд░рдВрдЯрдПрдВрдб рдФрд░ рдмреИрдХрдПрдВрдб рджреЛрдиреЛрдВ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ (рдлреНрд░рдВрдЯрдПрдВрдб рдХреЗрд╡рд▓ рдЙрд╕реА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХреЛрдб рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╡реЗ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВ, рдмреИрдХрдПрдВрдб рдбреЙрди 'рдкреИрдЯрд░реНрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ) рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдмреЗрд╣рддрд░ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рд╣реИ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрддрдирд╛ рд╣реА рдЕрдЪреНрдЫрд╛ рдпрд╛ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рд╛рде рд╣реА рдпрд╣ GCC рдФрд░ Go рдХреЛ WebAssembly рдХрд╛ рдЙрддреНрдкрд╛рджрди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ V8 WebAssembly рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдШрдЯрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрд╕ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╣рд┐рд╕реНрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЕрдиреНрдп рд╕рднреА рдмреИрдХрдПрдВрдб рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рд╡реИрд╕реЗ рднреА CFG рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕рд╕реЗ рдЕрдкреНрд░рднрд╛рд╡рд┐рдд рд╣реИрдВ WebAssembly рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдЗрдирдкреБрдЯ CFGs рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП v8 рд╕рд┐рд░реНрдл relooper рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЗ рдмрдбрд╝реЗ рд╣рд┐рд╕реНрд╕реЗ v8 рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдкрд░ рдЕрд╡рд░реБрджреНрдз рд╣реИрдВред

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

@graph , рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ "рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдзреАрдореЗ рдХреИрд╕реЗ рд╣реИрдВ"? рд╣рдореЗрд╢рд╛ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдЕрд╡рд╕рд░ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ... (рдпрджрд┐ рдЖрдк рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдмрдВрдж рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рд╕реАрдзреЗ рдИрдореЗрд▓ рдХрд░реЗрдВ, [email protected]ред)

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

for(y = ....) {
    for(x = ....) {
        switch(type){
        case IS_RGBA:....
         ....
        case IS_BGRA
        ....
        case IS_RGB
        ....
....

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рдХ рдПрдХ рдЬрдВрдк рдЯреЗрдмрд▓ рдХреЛ рдЬреЛ рдХреБрдЫ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдЙрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд░рд╣рд╛ рдерд╛ред рдореИрдВрдиреЗ рдЬреЗрдирд░реЗрдЯ рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрд╛ рдЗрд╕рд▓рд┐рдП рдкреБрд╖реНрдЯрд┐ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

рдореИрдВ рдХреБрдЫ рдРрд╕реЗ рдЬреЛрдбрд╝реЗ рдХреЛ рдЬрд╛рдирддрд╛ рд╣реВрдВ рдЬреЛ рд╡рд╛рд╕рдо рдЪреАрдЬреЛрдВ рд╕реЗ рдЕрд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╡реЗрдм рдкрд░ рдЗрдореЗрдЬ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ "рдлреАрдбрдмреИрдХ" рдмрдЯрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдмрдорд┐рдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдФрд░ рдореИрдВ рдЖрдкрдХреЛ рдореБрджреНрджреЛрдВ рдХреЛ рдИрдореЗрд▓ рдХрд░реВрдВрдЧрд╛ред

@graph рдПрдХ рдкреВрд░реНрдг рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдпрд╣рд╛рдВ рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕реА рдореЗрдВ рдПрдХ рд╕реНрд╡рд┐рдЪ рд╡рд╛рд╕рдо рдореЗрдВ рдПрдХ рдмрд╣реБрдд рддреЗрдЬрд╝ рдХреВрдж рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕реЗ рдХреЛрдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬреЛ рдЕрднреА рддрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдореЗрдВ рдПрд▓рдПрд▓рд╡реАрдПрдо рдпрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

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

@graph , рдЕрдЧрд░ emscripten рдПрдХ br_table рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рддреЛ jit рдХрднреА-рдХрднреА рдПрдХ рдЬрдВрдк рдЯреЗрдмрд▓ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ рдФрд░ рдХрднреА-рдХрднреА (рдпрджрд┐ рдпрд╣ рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рддреЗрдЬрд╝ рд╣реЛрдЧрд╛) рдпрд╣ рдореБрдЦреНрдп рд╕реНрдерд╛рди рдХреЛ рд░реИрдЦрд┐рдХ рд░реВрдк рд╕реЗ рдпрд╛ рдЗрди-рд▓рд╛рдЗрди рдмрд╛рдЗрдирд░реА рдЦреЛрдЬ рдХреЗ рд╕рд╛рде рдЦреЛрдЬреЗрдЧрд╛ред рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ рдЕрдХреНрд╕рд░ рд╕реНрд╡рд┐рдЪ рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЪрдпрди рдиреАрддрд┐ рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ рд╣реИ ... рдореИрдВ @kripken рд╕реЗ рд╕рд╣рдордд рд░рдирдиреЗрдмрд▓ рдХреЛрдб рдпрд╣рд╛рдВ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

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

@ lars-t-hansen @kripken @graph рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ br_table рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдмрд╣реБрдд рд╣реА рдЧреИрд░-рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдПрдХреНрд╕рдЪреЗрдВрдЬ рджрд┐рдЦрд╛рддрд╛ рд╣реИ: https://twitter.com/battagline/status/1168310096515883008

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

рдпрджрд┐ рдпрд╣ рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рд╡реИрд▓реНрдпреВ рдкрд░ рд░реЗрдВрдЬ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддреЛ br_table рдХреЛ рд╕реНрд╡рд┐рдЪ рдХреА рд░реЗрдВрдЬ рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдЯреЗрд╕реНрдЯ рднреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдЗрд╕рдХреЗ рд▓рд╛рдн рдореЗрдВ рднреА рдЦрд╛рддрд╛ рд╣реИред

@ рд▓рд╛рд░реНрд╕-рдЯреА-рд╣реИрдирд╕реЗрди рд╣рд╛рдВ, рд╣рдо рдЙрд╕рдХреЗ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдХреЛрдИ рдмрд╛рд╣рд░реА рдореВрд▓реНрдп рд╣реЛред рдХрд┐рд╕реА рднреА рддрд░рд╣, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреНрд░реЛрдо рдХреЗ рдкрд╛рд╕ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдХрд╛рдо рд╣реИред

рдореИрдВ рдЫреБрдЯреНрдЯреА рдкрд░ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдЙрддреНрддрд░реЛрдВ рдХреА рдХрдореА рд╣реИред рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

@kripken @ lars-t-hansen рдореИрдВрдиреЗ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдП рд╣реИрдВ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд╛рдБ рдпрд╣ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рдЕрдм рдмреЗрд╣рддрд░ рд╣реИред рдЕрднреА рднреА рдХреБрдЫ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЕрдЧрд░-рдФрд░-рдЖрдЙрдЯ-рдкреНрд░рджрд░реНрд╢рди рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдПрдХ рдорд╛рдорд▓рд╛ рд╣реИ:


рдореБрдЦреНрдп.рд╕реАрдкреАрдкреА

#include <stdio.h>

#include <chrono>
#include <random>

class Chronometer {
public:
    Chronometer() {

    }

    void start() {
        mStart = std::chrono::steady_clock::now();
    }

    double seconds() {
        std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now();
        return std::chrono::duration_cast<std::chrono::duration<double>>(end - mStart).count();
    }

private:
    std::chrono::steady_clock::time_point mStart;
};

int main() {
    printf("Starting tests!\n");
    Chronometer timer;
    // we want to prevent optimizations based on known size as most applications
    // do not know the size in advance.
    std::random_device rd;  //Will be used to obtain a seed for the random number engine
    std::mt19937 gen(rd()); //Standard mersenne_twister_engine seeded with rd()
    std::uniform_int_distribution<> dis(100000000, 1000000000);
    std::uniform_int_distribution<> opKind(0, 3);
    int maxFrames = dis(gen);
    int switchSelect = 0;
    constexpr int SW1 = 1;
    constexpr int SW2 = 8;
    constexpr int SW3 = 32;
    constexpr int SW4 = 38;

    switch(opKind(gen)) {
    case 0:
        switchSelect = SW1;
        break;
    case 1:
        switchSelect = SW2; break;
    case 2:
        switchSelect = SW3; break;
    case 4:
        switchSelect = SW4; break;
    }
    printf("timing with SW = %d\n", switchSelect);
    timer.start();
    int accumulator = 0;
    for(int i = 0; i < maxFrames; ++i) {
        switch(switchSelect) {
        case SW1:
            accumulator = accumulator*3 + i; break;
        case SW2:
            accumulator = (accumulator < 3)*i; break;
        case SW3:
            accumulator = (accumulator&0xFF)*i + accumulator; break;
        case SW4:
            accumulator = (accumulator*accumulator) - accumulator + i; break;
        }
    }
    printf("switch time = %lf seconds\n", timer.seconds());
    printf("accumulated value: %d\n", accumulator);
    timer.start();
    accumulator = 0;
    for(int i = 0; i < maxFrames; ++i) {
        if(switchSelect == SW1)
            accumulator = accumulator*3 + i;
        else if(switchSelect == SW2)
            accumulator = (accumulator < 3)*i;
        else if(switchSelect == SW3)
            accumulator = (accumulator&0xFF)*i + accumulator;
        else if(switchSelect == SW4)
            accumulator = (accumulator*accumulator) - accumulator + i;
    }
    printf("if-else time = %lf seconds\n", timer.seconds());
    printf("accumulated value: %d\n", accumulator);

    return 0;
}

рд╕реНрд╡рд┐рдЪ рдХреЗ рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЪрдпрди рдХрд░реЗрдВред рдЕрдЧрд░-рдЕрдиреНрдп рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдЖрдЙрдЯрдкреБрдЯ:

Starting tests!
timing with SW = 32
switch time = 2.049000 seconds
accumulated value: 0
if-else time = 0.401000 seconds
accumulated value: 0

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕реНрд╡рд┐рдЪ рд╕реЗрд▓реЗрдХреНрдЯ = 32 рдХреЗ рд▓рд┐рдП рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЕрдЧрд░-рдФрд░ рддреЗрдЬрд╝ рд╣реИред рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЧрд░-рдереЛрдбрд╝рд╛ рддреЗрдЬ рд╣реИред рдХреЗрд╕ рд╕реНрд╡рд┐рдЪ рд╕реЗрд▓реЗрдХреНрдЯ = 1 рдФрд░ 0 рдХреЗ рд▓рд┐рдП, рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рддреЗрдЬ рд╣реИред

Test in Firefox 69.0.3 (64-bit)
compiled using: emcc -O3 -std=c++17 main.cpp -o main.html
emcc version: emcc (Emscripten gcc/clang-like replacement) 1.39.0 (commit e047fe4c1ecfae6ba471ca43f2f630b79516706b)

20 рдЕрдХреНрдЯреВрдмрд░ 2019 рддрдХ рдирд╡реАрдирддрдо рд╕реНрдерд┐рд░ рдПрдорд╕реНрдХреНрд░рд┐рдкреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рддрд╛рдЬрд╛ рдЗрдВрд╕реНрдЯреЙрд▓ ./emcc activate latest ред

рдореИрдВрдиреЗ рдКрдкрд░ рджреЗрдЦрд╛ рдХрд┐ рдПрдХ рдЯрд╛рдЗрдкреЛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЕрдЧрд░-рдФрд░ рддреЗрдЬрд╝ SW3 рдХреЗрд╕ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕рдорд╛рди рдирд┐рд░реНрджреЗрд╢ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдлрд┐рд░ рд╕реЗ рдпрд╣ 5 рдХреЗ рдмреНрд░реЗрдХ рдИрд╡рди рдкреЙрдЗрдВрдЯ рд╕реЗ рднреА рдЖрдЧреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ: рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪрд╕реЗрд▓реЗрдХреНрдЯ = 32 рдХреЗ рд▓рд┐рдП рдпрд╣ рдЧрддрд┐ рдореЗрдВ рд╕рдорд╛рди рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдФрд░ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк 1003 рдХреЗ рд▓рд┐рдП рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЕрдЧрд░-рдереЛрдбрд╝рд╛ рддреЗрдЬ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдЬреАрддрдирд╛ рдЪрд╛рд╣рд┐рдПред

Starting tests!
timing with SW = 1003
switch time = 2.253000 seconds
accumulated value: 1903939380
if-else time = 2.197000 seconds
accumulated value: 1903939380


рдореБрдЦреНрдп.рд╕реАрдкреАрдкреА

#include <stdio.h>

#include <chrono>
#include <random>

class Chronometer {
public:
    Chronometer() {

    }

    void start() {
        mStart = std::chrono::steady_clock::now();
    }

    double seconds() {
        std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now();
        return std::chrono::duration_cast<std::chrono::duration<double>>(end - mStart).count();
    }

private:
    std::chrono::steady_clock::time_point mStart;
};

int main() {
    printf("Starting tests!\n");
    Chronometer timer;
    // we want to prevent optimizations based on known size as most applications
    // do not know the size in advance.
    std::random_device rd;  //Will be used to obtain a seed for the random number engine
    std::mt19937 gen(rd()); //Standard mersenne_twister_engine seeded with rd()
    std::uniform_int_distribution<> dis(100000000, 1000000000);
    std::uniform_int_distribution<> opKind(0, 8);
    int maxFrames = dis(gen);
    int switchSelect = 0;
    constexpr int SW1 = 1;
    constexpr int SW2 = 8;
    constexpr int SW3 = 32;
    constexpr int SW4 = 38;
    constexpr int SW5 = 64;
    constexpr int SW6 = 67;
    constexpr int SW7 = 1003;
    constexpr int SW8 = 256;

    switch(opKind(gen)) {
    case 0:
        switchSelect = SW1;
        break;
    case 1:
        switchSelect = SW2; break;
    case 2:
        switchSelect = SW3; break;
    case 3:
        switchSelect = SW4; break;
    case 4:
        switchSelect = SW5; break;
    case 5:
        switchSelect = SW6; break;
    case 6:
        switchSelect = SW7; break;
    case 7:
        switchSelect = SW8; break;
    }
    printf("timing with SW = %d\n", switchSelect);
    timer.start();
    int accumulator = 0;
    for(int i = 0; i < maxFrames; ++i) {
        switch(switchSelect) {
        case SW1:
            accumulator = accumulator*3 + i; break;
        case SW2:
            accumulator = (accumulator < 3)*i; break;
        case SW3:
            accumulator = (accumulator&0xFF)*i + accumulator; break;
        case SW4:
            accumulator = (accumulator*accumulator) - accumulator + i; break;
        case SW5:
            accumulator = (accumulator << 3) - accumulator + i; break;
        case SW6:
            accumulator = (i - accumulator) & 0xFF; break;
        case SW7:
            accumulator = i*i + accumulator; break;
        }
    }
    printf("switch time = %lf seconds\n", timer.seconds());
    printf("accumulated value: %d\n", accumulator);
    timer.start();
    accumulator = 0;
    for(int i = 0; i < maxFrames; ++i) {
        if(switchSelect == SW1)
            accumulator = accumulator*3 + i;
        else if(switchSelect == SW2)
            accumulator = (accumulator < 3)*i;
        else if(switchSelect == SW3)
            accumulator = (accumulator&0xFF)*i + accumulator;
        else if(switchSelect == SW4)
            accumulator = (accumulator*accumulator) - accumulator + i;
        else if(switchSelect == SW5)
            accumulator = (accumulator << 3) - accumulator + i;
        else if(switchSelect == SW6)
            accumulator = (i - accumulator) & 0xFF;
        else if(switchSelect == SW7)
            accumulator = i*i + accumulator;

    }
    printf("if-else time = %lf seconds\n", timer.seconds());
    printf("accumulated value: %d\n", accumulator);

    return 0;
}


рдЗрди рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рджреЛрд╕реНрддреЛрдВред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╡рд┐рд░рд▓ switch рд╣реИ, рдЬрд┐рд╕реЗ рдПрд▓рдПрд▓рд╡реАрдПрдо рдХреЛ рд╡реИрд╕реЗ рднреА рдЕрдЧрд░-рдлрд┐рд░ рдХреЗ рд╕реЗрдЯ рдХреЗ рдмрд░рд╛рдмрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЬрд╛рд╣рд┐рд░ рддреМрд░ рдкрд░ рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдореИрдиреБрдЕрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рдХреБрд╢рд▓ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдиреЗ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП wasm2wat рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдХрд┐ рдпреЗ рджреЛ рд▓реВрдк рдХреЛрдб рдореЗрдВ рдХреИрд╕реЗ рднрд┐рдиреНрди рд╣реИрдВ?

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

рдмреЗрд╣рддрд░ рдЕрднреА рддрдХ, рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░рдг рдПрдХ рдШрдиреА рд╕реАрдорд╛ рдХреЗ рд╕рд╛рде рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЧрд╛рд░рдВрдЯреА рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдиреАрдЪреЗ br_table рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рджреЗрдЦрдирд╛ рдХрд┐ рдХрд┐рддрдиреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ br_table if рд╕реЗ рддреЗрдЬ рд╣реИ, рдпрд╣ рдЬрд╛рдирдирд╛ рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдмрд╛рдд рд╣реЛрдЧреАред

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

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

рд╡рд╣рд╛рдВ рдХреЛрдИ рдФрд░ рдкреНрд░рдЧрддрд┐?

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

рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдмрд╣реБрдд рдкреНрд░рдЧрддрд┐ рдирд╣реАрдВ рд╣реБрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк funclets рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рджреЗрдЦрдирд╛

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

"рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд▓реЗрдмрд▓ рдФрд░ рдЧреЛрдЯреЛрд╕" рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рд╣рдореЗрдВ рдЧреИрд░-рд╕рддреНрдпрд╛рдкрди рдпреЛрдЧреНрдп рдмрд╛рдЗрдЯрдХреЛрдб рдХреЗ (рдкреНрд░рд╛рдЪреАрди) рд╕рдордп рдореЗрдВ рд╡рд╛рдкрд╕ рд▓рд╛рдПрдЧрд╛ред рд╕рднреА рдХрдВрдкрд╛рдЗрд▓рд░ "рдЗрд╕реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд░рдиреЗ" рдХреЗ рдмрдЬрд╛рдп, рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ "рдЖрд▓рд╕реА рддрд░реАрдХреЗ" рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВрдЧреЗред

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдореЗрдВ wasm рдореЗрдВ рдХреБрдЫ рдкреНрд░рдореБрдЦ рдЪреВрдХ рд╣реИрдВред рд▓реЛрдЧ рдЕрдВрддрд░рд╛рд▓ рдХреЛ рднрд░рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдЬреИрд╕реЗ @binji рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ "рд╡реИрд╢реНрд╡рд┐рдХ рддрддреИрдпрд╛ рд╕рдВрд░рдЪрдирд╛" рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдмрд╕ рдореЗрд░реА рд╡рд┐рдирдореНрд░ рд░рд╛рдпред

@vshymanskyy funclets рдкреНрд░рд╕реНрддрд╛рд╡, рдЬреЛ рдордирдорд╛рдиреА рд▓реЗрдмрд▓ рдФрд░ рдЧреЛрдЯреЛ рдХреЗ рдмрд░рд╛рдмрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд░реИрдЦрд┐рдХ рд╕рдордп рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорд╛рдиреНрдп рд╣реИред

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

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

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

рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореИрдВрдиреЗ рдЕрдкрдиреА рдирд╛рдХ рдпрд╣рд╛рдБ рдкрд░ рдЕрдЯрдХреА рд╣реБрдИ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд░реНрд╖реЛрдВ рдкрд╣рд▓реЗ, рдореИрдВ WASM рдХреЗ рд▓рд┐рдП рдПрдХ TinyCC рдкреЛрд░реНрдЯ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рддрд╛рдХрд┐ рдореИрдВ ESP8266 рдкрд░ ESP8266 рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реБрдП рдПрдХ рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд▓рд╛ рд╕рдХреВрдВред рдореЗрд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ ~ 4 рдПрдордмреА рд╕реНрдЯреЛрд░реЗрдЬ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд░реА-рд▓реВрдкрд░ рдФрд░ рдПрдПрд╕рдЯреА рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдХрдИ рдЕрдиреНрдп рдмрджрд▓рд╛рд╡ рд╕рд╡рд╛рд▓ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИрдВред (рд╕рд╛рдЗрдб-рдиреЛрдЯ: рд░рд┐рд▓реЛрдкрд░ рдХреЗрд╡рд▓ рд░рд┐рд▓реВрдкрд░ рдХреА рддрд░рд╣ рд╣реА рдХреИрд╕реЗ рд╣реИ? рдпрд╣ рдмрд╣реБрдд рднрдпрд╛рдирдХ рд╣реИ рдФрд░ рдХрд┐рд╕реА рдиреЗ рдЙрд╕ рдЪреВрд╕рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рд╕реА рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИ?) рднрд▓реЗ рд╣реА рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдпрд╣ рд╕рдВрднрд╡ рд╣реЛ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореИрдВ рдПрдХ рдЯрд┐рдиреАрд╕реАрд╕реА рд▓рдХреНрд╖реНрдп рд▓рд┐рдЦреВрдВрдЧрд╛ рдпрд╛ рдирд╣реАрдВ WASM рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдм рдореЗрд░реЗ рд▓рд┐рдП рдЙрддрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдзрд╛рдЧрд╛ред рдкрд╡рд┐рддреНрд░ рдЧрд╛рдп рдЗрд╕ рдзрд╛рдЧреЗ рдиреЗ рдореБрдЭреЗ рдЗрддрдирд╛ рдЕрд╕реНрддрд┐рддреНрд╡рдЧрдд рдЖрдирдВрдж рджрд┐рдпрд╛ рд╣реИред рд▓реЛрдХрддрдВрддреНрд░ рдпрд╛ рдЧрдгрддрдВрддреНрд░, рдпрд╛ рдзрд░реНрдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдорд╛рдирд╡рддрд╛ рдореЗрдВ рд╡рд┐рднрд╛рдЬрди рдХреЛ рдЧрд╣рд░рд╛рдИ рд╕реЗ рджреЗрдЦрдирд╛ред рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕реЗ рдХрднреА рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдЧрд░ рдП рдмреА рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдЖ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдмреА рдП рдХреЗ рджрд╛рд╡реЗ рдХреЛ рдорд╛рдиреНрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдЕрдкрдирд╛ рд╕реНрдерд╛рди рд╣реИ ... рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╡рд┐рд╢реНрд╡ рд╢рд╛рдВрддрд┐ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХреНрдпрд╛ V8 рдХрд╛ рдкреНрд░рднрд╛рд░реА рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд╡рд┐рд░реБрджреНрдз рд╡рд┐рд░реЛрдз V8 рдХреЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реИ?

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

рдЦреИрд░, рдпрд╣ рдЬрд┐рддрдирд╛ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИ, рдЕрдм рддрдХ рдореМрдЬреВрдж рдореМрдЬреВрджрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрддрдиреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ рдХрд┐ рднрд╡рд┐рд╖реНрдп (рд╕рдВрднрд╡рддрдГ рдЕрддреАрдд рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓рдВрдмрд╛) рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рдореИрдВ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ # 1202 рдкрд░, рдХреБрдЫ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕реНрдерд┐рд░рддрд╛ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рднреНрд░рдо рдореЗрдВ рд╣реВрдВред рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХрд╛ рд╕реМрднрд╛рдЧреНрдп рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдХреБрдЫ рд╡рд┐рдХрд╛рд╕ рдирд┐рд░реНрдгрдп рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕рддреНрдп рдХрд╛ рдЧрдарди рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдпрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕рд╣реА рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣ рдзрд╛рдЧрд╛ W3C рдХреЛрдпрд▓рд╛ рдЦрджрд╛рди рдореЗрдВ рдПрдХ рдХреИрдирд░реА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрдИ W3C рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдорди рдореЗрдВ рдмрд╣реБрдд рд╕рдореНрдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдХреНрдорд╛ рдЗрдВрдЯрд░рдиреЗрд╢рдирд▓ рдХреЛ рд╕реМрдВрдкрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп, рдФрд░ W3C рдХреЛ рдирд╣реАрдВ, рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ рдХреЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

@cnlohr рдХреА рддрд░рд╣, рдореБрдЭреЗ TCC wasm рдкреЛрд░реНрдЯ рдХреА рдЙрдореНрдореАрдж рдереА, рдФрд░ рдЕрдЪреНрдЫреЗ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП;

"Wasm рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЛрд░реНрдЯреЗрдмрд▓ рд╕рдВрдХрд▓рди рд▓рдХреНрд╖реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╡реЗрдм рдкрд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЛ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред" - webassembly.org

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХреЛрдИ рднреА рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ goto [INSERT JARGON] рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рд░рд╛рдп рдкрд░ рдорд╛рдирдХреЛрдВ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрддреЗ рд╣реИрдВред рд╣рдо рд╕рднреА рд╕рд╣рдордд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ POSIX C рдПрдХ рдЕрдЪреНрдЫрд╛ рдЖрдзрд╛рд░рднреВрдд рд▓рдХреНрд╖реНрдп рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЖрдЬ рдХреЗ рд▓реИрдВрдЧреНрд╕ рдпрд╛ рддреЛ C рд╕реЗ рдЧрдврд╝реЗ рдЧрдП рд╣реИрдВ рдпрд╛ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХрд┐рдП рдЧрдП рд╣реИрдВ рдФрд░ WASM рдХрд╛ рд╣реЛрдордкреЗрдЬ рд╣реЗрдбрд▓рд╛рдЗрди рдЦреБрдж рдХреЛ рд▓реИрдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЛрд░реНрдЯреЗрдмрд▓ рд╕рдВрдХрд▓рди рд▓рдХреНрд╖реНрдп рдмрддрд╛рддрд╛ рд╣реИред рдЬрд╝рд░реВрд░, рдХреБрдЫ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдереНрд░реЗрдб рдФрд░ рд╕рд┐рдо рдХреА рддрд░рд╣ рд░реЛрдбрдореИрдк рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди, goto рд░реВрдк рдореЗрдВ рдореМрд▓рд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╡рд╣реЗрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рд░реЛрдбрдореИрдкрд┐рдВрдЧ рдХреА рд╢рд╛рд▓реАрдирддрд╛ рднреА рдирд╣реАрдВ рджреЗрдирд╛, WASM рдХреЗ рдШреЛрд╖рд┐рдд рдЙрджреНрджреЗрд╢реНрдп рдФрд░ рдорд╛рдирдХреАрдХрд░рдг рдирд┐рдХрд╛рдп рдХреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рд░реБрдЦ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИ рдЬреЛ <marquee> рдХреЛ рд╣рд░рд╛ рджреЗрддрд╛ рд╣реИред рдкреАрд▓рд╛рдкрди рд╕реЗ рдкрд░реЗ рд╣реИред

SEI CERT C рдХреЛрдбрд┐рдВрдЧ рд╕реНрдЯреИрдВрдбрд░реНрдб Rec рдХреЗ рдЕрдиреБрд╕рд╛рд░ред "рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдФрд░ рдЬрд╛рд░реА рдХрд░рддреЗ рд╕рдордп рддреНрд░реБрдЯрд┐ рдкрд░ рдлрд╝рдВрдХреНрд╢рди рдЫреЛрдбрд╝рддреЗ рд╕рдордп рдЧреЛрдЯреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ" ;

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

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

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

рд╕реА рдореЗрдВ рднреА рдХрд╛рд░реНрдп рд╢реВрдиреНрдп рд▓рд╛рдЧрдд рдирд╣реАрдВ рд╣реИрдВред рдЕрдЧрд░ рдХреЛрдИ рдЧреЛрдЯреЛ рдФрд░ рд▓реЗрдмрд▓ рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдХреИрдирд┐рд╣рд╛рдЬ! рдЕрдЧрд░ рдХреЛрдИ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдпрд╣ рдХреИрд╕реЗ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛? рдЬрдм рдкреНрд░рджрд░реНрд╢рди рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ goto рд╣рдореЗрдВ рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рд╕реЗ рдмрд╣рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЕрддрд┐рд░рд┐рдХреНрдд, рдХрдард┐рди рджреЗ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рднрд╛рд╖рд╛ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдмрд╛рдж рд╕реЗ рдореМрдЬреВрдж рдкреНрд░рджрд░реНрд╢рдирдХрд╛рд░реА, рдЖрд╕рд╛рдиреА рд╕реЗ рдЧреНрд░реЛрдХ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

goto рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдХреЗ рдмрд┐рдирд╛, WASM рдПрдХ рдЦрд┐рд▓реМрдирд╛ рд╕рдВрдХрд▓рди рд▓рдХреНрд╖реНрдп рд╣реИ, рдФрд░ рдпрд╣ рдареАрдХ рд╣реИ, рд╢рд╛рдпрдж W3C рд╡реЗрдм рдХреЛ рдЗрд╕реА рддрд░рд╣ рджреЗрдЦрддрд╛ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ WASM рдПрдХ рдорд╛рдирдХ рдХреЗ рд░реВрдк рдореЗрдВ 32 рдмрд┐рдЯ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдореЗрдВ рд╕реЗ рдЙрдЪреНрдЪ рддрдХ рдкрд╣реБрдВрдЪ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд╕рдВрдХрд▓рди рджреМрдбрд╝ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░реЗрдЧрд╛ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдкреНрд░рд╡рдЪрди "рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ ..." рд╕реЗ рджреВрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЬреАрд╕реАрд╕реА рд╕реА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬреИрд╕реЗ рд▓реЗрдмрд▓ рдХреЛ рд╡реИрд▓реНрдпреВ рдХреЗ рд░реВрдк рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХреНрдпреЛрдВрдХрд┐ рдбрдмреНрд▓реНрдпреВрдПрдПрд╕рдПрдо рдЕрджреНрднреБрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдирд┐рдЬреА рддреМрд░ рдкрд░, рдЯреАрд╕реАрд╕реА рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдХрд╛рдлреА рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдФрд░ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реИ, рдмрд┐рдирд╛ рд╕рднреА рд╡реНрдпрд░реНрде рдкреЙрдиреНрдЯреАрдлрд┐рдХреЗрд╢рди рдХреЗ, рд╣рд┐рдкреНрд╕реНрдЯрд░ рд▓реИрдВрдбрд┐рдВрдЧ рдкреГрд╖реНрда рдФрд░ рдЪрдордХрджрд╛рд░ рд▓реЛрдЧреЛ рдХреЗ рдмрд┐рдирд╛ред

@d4tocchini :

SEI CERT C рдХреЛрдбрд┐рдВрдЧ рд╕реНрдЯреИрдВрдбрд░реНрдб Rec рдХреЗ рдЕрдиреБрд╕рд╛рд░ред "рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдФрд░ рдЬрд╛рд░реА рдХрд░рддреЗ рд╕рдордп рддреНрд░реБрдЯрд┐ рдкрд░ рдлрд╝рдВрдХреНрд╢рди рдЫреЛрдбрд╝рддреЗ рд╕рдордп рдЧреЛрдЯреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ" ;

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

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

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

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

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

рдХреНрдпрд╛ рдХреЛрдИ рдРрд╕реА рднрд╛рд╖рд╛ рд╣реИ рдЬрд┐рд╕реЗ C рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? C рдХреЛ рдПрдХ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ WASM рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдЬ рдХреЗ WASM рдХреЗ рд╕рд╛рде POSIX C рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХрд╛ рдЙрдЪрд┐рдд рд░реЛрдбрдореИрдк рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддрд░реНрдХ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдЫрд╛рдпрд╛ рдирд╣реАрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рддрд░реНрдХ рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЧрд▓рддрд┐рдпрд╛рдБ рдпрд╣рд╛рдБ рдФрд░ рд╡рд╣рд╛рдБ рджреБрдмрдХреА рд╣реБрдИ рд╣реИрдВ:

рдкрд╛рдпрдерди рдиреЗ рдмреНрд░реЗрдХ рдХрд╛ рд▓реЗрдмрд▓ рд▓рдЧрд╛рдпрд╛ рд╣реИ

рдХреНрдпрд╛ рдЖрдк рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдордЭрд╛ рд╕рдХрддреЗ рд╣реИрдВ? (рдЙрд░реНрдл: рдкрд╛рдпрдерди рдореЗрдВ рд▓реЗрдмрд▓ рдмреНрд░реЗрдХ рдирд╣реАрдВ рд╣реИрдВред)

@pfalcon , рд╣рд╛рдБ рдореЗрд░рд╛ рдмреБрд░рд╛, рдореИрдВрдиреЗ рдкрд╛рдЗрдерди рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд▓реЗрдмрд▓ рдмреНрд░реЗрдХ/рдЬрд╛рд░реА рд░рдЦрдиреЗ рдФрд░ рдЗрд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгреА рд╕рдВрдкрд╛рджрд┐рдд рдХреА

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

1) рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рддрдирд╛ musl libc рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рд╕реАрдзреЗ emscripten рдореЗрдВ рдирд╣реАрдВред (рджреВрд╕рд░рд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдкрд░реАрдХреНрд╖рдг/рдерд░реНрдб_рдкрд╛рд░реНрдЯреА)
2) рд╕реНрд░реЛрдд рд╕реНрддрд░ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдмрд╛рдЗрдЯрдХреЛрдб рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВ
3) Emscripten, wasm рдорд╛рдирдХ рдХреЗ рд╕рдорд╛рди рдЕрдореВрд░реНрддрддрд╛ рдХреЗ рд╕реНрддрд░ рдкрд░ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдирд╣реАрдВ, рдЙрд╕ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕ рдкрд░ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣ рдЖрдЬ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ libc рд╕реЗ рдЧреЛрдЯреЛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рдП, рдХреНрдпреЛрдВрдХрд┐ рддрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд░рд┐рдгрд╛рдореА cfg рдкрд░ рдЕрдзрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рд╣реЛрдЧрд╛, рдЬреЛ рдЗрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП relooper/cfgstackify рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛ред рд╣рдордиреЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдорд╕рд▓ рд╕реЗ рдмреЗрддрд╣рд╛рд╢рд╛ рднрд┐рдиреНрди рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдПрдХ рдЧреИрд░-рддреБрдЪреНрдЫ рд░рд╛рд╢рд┐ рд╣реИред

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

рдорд╛рдирдХреАрдХрд░рдг рдирд┐рдХрд╛рдп рдХреА рдУрд░ рд╕реЗ рдРрд╕рд╛ рд░реБрдЦ рд╣реИ рдХрд┐ <marquee> рдХреЛ рд╣рд░рд╛ рд░рдВрдЧ рдлреАрдХрд╛ рд╕реЗ рдкрд░реЗ рд╣реИред

рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрд╕рд┐рди рдХрдерди рд╣реИред

1) рд╣рдо-рд╡реНрдпрд╛рдкрдХ-рдЗрдВрдЯрд░рдиреЗрдЯ рдЙрд╕ рдирд┐рд░реНрдгрдп рдХреЛ рд▓реЗрдиреЗ рд╕реЗ рдПрдХ рджрд╢рдХ рд╕реЗ рдЕрдзрд┐рдХ рджреВрд░ рд╣реИрдВ
2) We-the-wasm-CG рдЙрд╕ рдЯреИрдЧ рдХреЗ рд▓реЛрдЧреЛрдВ рдХрд╛ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ (рд▓рдЧрднрдЧ?) рдЕрд▓рдЧ рд╕рдореВрд╣ рд╣реИ, рдФрд░ рд╕рдВрднрд╡рдд: рд╕реНрдкрд╖реНрдЯ рдкрд┐рдЫрд▓реА рдЧрд▓рддрд┐рдпреЛрдВ рд╕реЗ рднреА рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдирд╛рд░рд╛рдЬ рд╣реИрдВред

рд╣рд┐рдкреНрд╕реНрдЯрд░ рд▓реИрдВрдбрд┐рдВрдЧ рдкреГрд╖реНрда рдФрд░ рдЪрдордХрджрд╛рд░ рд▓реЛрдЧреЛ рдХреЗ рдмрд┐рдирд╛, рд╕рднреА рд╡реНрдпрд░реНрде pontificating рдХреЗ рдмрд┐рдирд╛ред

рдЯреЛрди рдореБрджреНрджреЛрдВ рдореЗрдВ рднрд╛рдЧреЗ рдмрд┐рдирд╛ рдЗрд╕реЗ "рдореИрдВ рдирд┐рд░рд╛рд╢ рд╣реВрдВ" рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ред

рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдзрд╛рдЧрд╛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдпреЗ рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк рдХрд╛рдлреА рдХрдард┐рди рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рд╣реИред

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдзрд╛рдЧрд╛ рдЙрддреНрдкрд╛рджрдХ рд╣реЛрдиреЗ рд╕реЗ рдмрд╣реБрдд рдЖрдЧреЗ рдмрдврд╝ рдЧрдпрд╛ рд╣реИ - рдпрд╣ рдЕрдм рдЪрд╛рд░ рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ goto s рдХреЗ рд▓рд┐рдП рдФрд░ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рд╣рд░ рд╕рдВрднрд╡ рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣рд╛рдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ; рдпрд╣ рднреА рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рддрд░реНрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдирдпрд╛ рдирд╣реАрдВ рд╣реИ;)

рдРрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рд░рдирдЯрд╛рдЗрдо рд╣реИрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдХреВрджрдиреЗ рд╡рд╛рд▓реЗ рд▓реЗрдмрд▓ рдирд╣реАрдВ рдЪреБрдирд╛ рд╣реИ, рдЬреЛ рдЙрдирдХреЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдРрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╣реИрдВ рдЬрд╣рд╛рдВ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдХреВрджрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ рдФрд░ рд╡реЗ рдЕрдЪреНрдЫрд╛ рднреА рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЕрдВрдд рдореЗрдВ, рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓реЗрдЦрдХ рдбрд┐рдЬрд╛рдЗрди рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рд╕рдордп рд╣реА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╡рд┐рдХрд▓реНрдк рд╕рдлрд▓ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред

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

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

@penzn рдлрд╝рдВрдХрд▓реЗрдЯ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреНрдпреЛрдВ рдЕрдЯрдХрд╛ рд╣реБрдЖ рд╣реИ? рдпрд╣ рдЕрдХреНрдЯреВрдмрд░ 2018 рд╕реЗ рдореМрдЬреВрдж рд╣реИ рдФрд░ рдЕрднреА рднреА рдЪрд░рдг 0 рдореЗрдВ рд╣реИред

рдЕрдЧрд░ рд╣рдо рдПрдХ рд░рди-рдСрдл-рдж-рдорд┐рд▓ рдУрдкрди-рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣реЗ рдереЗ, рддреЛ рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдВрдЯрд╛ рдФрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдо рдпрд╣рд╛рдВ рдПрдХ рджреВрд░рдЧрд╛рдореА рдПрдХрд╛рдзрд┐рдХрд╛рд░ рдорд╛рдирдХ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЬреЛрд░рджрд╛рд░ рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд┐рдХрд╕рд┐рдд рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдкрд░рд╡рд╛рд╣ рдХрд░рддреЗ рд╣реИрдВред

@J0eCool

  1. рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рддрдирд╛ musl libc рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рд╕реАрдзреЗ emscripten рдореЗрдВ рдирд╣реАрдВред (рджреВрд╕рд░рд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдкрд░реАрдХреНрд╖рдг/рдерд░реНрдб_рдкрд╛рд░реНрдЯреА)

рд╣рд╛рдВ, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рд╕реА рдореЗрдВ рдЗрд╕рдХрд╛ рдХрд┐рддрдирд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рдХреА рдордВрдЬреВрд░реА рдереАред

  1. рд╕реНрд░реЛрдд рд╕реНрддрд░ рдХреА рд╕рдВрд░рдЪрдирд╛рдПрдВ рдмрд╛рдЗрдЯрдХреЛрдб рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВ

рдмреЗрд╢рдХ, рд╣рдо рдЬрд┐рд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдПрдХ рдЖрдВрддрд░рд┐рдХ рдЪрд┐рдВрддрд╛ рд╣реИ рдЬреЛ рд╕реНрд░реЛрдд рд╕реНрддрд░ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИред рдпрд╣ рдирд┐рд░рд╛рд╢рд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдмреНрд▓реИрдХ рдмреЙрдХреНрд╕ рдХреЛ рдЕрдкрдиреА рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рд▓реАрдХ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

  1. Emscripten, wasm рдорд╛рдирдХ рдХреЗ рд╕рдорд╛рди рдЕрдореВрд░реНрддрддрд╛ рдХреЗ рд╕реНрддрд░ рдкрд░ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдирд╣реАрдВ, рдЙрд╕ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕ рдкрд░ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣ рдЖрдЬ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ libc рд╕реЗ рдЧреЛрдЯреЛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рдП, рдХреНрдпреЛрдВрдХрд┐ рддрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд░рд┐рдгрд╛рдореА cfg рдкрд░ рдЕрдзрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рд╣реЛрдЧрд╛, рдЬреЛ рдЗрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП relooper/cfgstackify рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛ред

рдпрд╣ рдЧреЛрд▓рд╛рдХрд╛рд░ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдХрдИ рд▓реЛрдЧреЛрдВ рдиреЗ рдРрд╕реА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреА рдЕрдЪреВрдХрддрд╛ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЧрдВрднреАрд░ рдЕрдиреБрддреНрддрд░рд┐рдд рдкреНрд░рд╢реНрди рдЙрдард╛рдП рд╣реИрдВред

рд╣рдордиреЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдорд╕рд▓ рд╕реЗ рдмреЗрддрд╣рд╛рд╢рд╛ рднрд┐рдиреНрди рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдПрдХ рдЧреИрд░-рддреБрдЪреНрдЫ рд░рд╛рд╢рд┐ рд╣реИред

рдЧреЛрдЯреЛ рдХреЛ рд╣рдЯрд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдХрд╣рд╛ рдерд╛, рдпрд╣ рдХрд╛рдо рдХреА рдЧреИрд░- рддреБрдЪреНрдЫ

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

рдЖрд╢рд╛ рдХреА рдПрдХ рдХрд┐рд░рдг! рдореБрдЭреЗ рд╕рдВрддреБрд╖реНрдЯрд┐ рд╣реЛрдЧреА рдЕрдЧрд░ рдЧреЛрдЯреЛ/рд▓реЗрдмрд▓ рд╕рдорд░реНрдерди рдХреЛ рд░реЛрдбрдореИрдк рдЖрдЗрдЯрдо рдХреЗ рд╕рд╛рде рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ + рдЧреЗрдВрдж рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдирд┐рдордВрддреНрд░рдг, рднрд▓реЗ рд╣реА рд╕рд╛рд▓ рдмрд╛рд╣рд░ рд╣реЛред

рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрд╕рд┐рди рдХрдерди рд╣реИред

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

"рдХреНрдпрд╛ V8 рдХрд╛ рдХреЛрдИ рдкреНрд░рднрд╛рд░реА рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдХрдВрдЯреНрд░реЛрд▓ рдлреНрд▓реЛ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╡рд┐рд░реЛрдз V8 рдХреЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реИ?

рдореИрдВ рдкреВрдЫ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣реА рдореБрдЭреЗ рд╕рдмрд╕реЗ рдЬреНрдпрд╛рджрд╛ рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИред [...]

рдЕрдЧрд░ рдЖрдк рд▓реЛрдЧ рдХрд┐рд╕реА рдХрд╛рдо рдХреА рдмрд╛рдд рд╕реБрдирддреЗ рд╣реИрдВ, рддреЛ Go 1.11 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ @neelance рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рджрд┐рд▓ рд╕реЗ рд▓реЗрдВред рдЗрд╕рд╕реЗ рдмрд╣рд╕ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рдо рд╕рднреА рдЧреЛрдЯреЛ рдХреА рдЧреИрд░-рддреБрдЪреНрдЫ рдбрд╕реНрдЯрд┐рдВрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рд╣рдо рдПрдХ рдЧрдВрднреАрд░ рдкреВрд░реНрдг рд╣рд┐рдЯ рд▓реЗрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдХреЗрд╡рд▓ рдЧреЛрдЯреЛ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

рдпрд╣рд╛рдБ рдПрдХ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХрд╛ рдореБрджреНрджрд╛ рд╣реИ рдЬреЛ рдЧреБрдо рдЧреЛрдЯреЛ/funclets рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ: https://github.com/golang/go/issues/42979

рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП, рдЧреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ 18,000 рдиреЗрд╕реНрдЯреЗрдб block s рдХреЗ рд╕рд╛рде рдПрдХ wasm рдмрд╛рдЗрдирд░реА рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред wasm рдмрд╛рдЗрдирд░реА рдХрд╛ рдЖрдХрд╛рд░ рд╕реНрд╡рдпрдВ 2.7MB рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдЗрд╕реЗ wasm2wat рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ 4.7GB .wat рдлрд╝рд╛рдЗрд▓ рдорд┐рд▓рддреА рд╣реИред рдореИрдВ

рдореИрдВ рдЧреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдХреБрдЫ рдЕрдиреБрдорд╛рдиреА рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рдерд╛ рддрд╛рдХрд┐ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдХреВрдж рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдмрдЬрд╛рдп рдпрд╣ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдмрд╛рдЗрдирд░реА рдкреЗрдбрд╝ рдмрдирд╛ рд╕рдХреЗ рдФрд░ рдлрд┐рд░ рдХрдИ рдмрд╛рд░ рдХреВрдж рд▓рдХреНрд╖реНрдп рдЪрд░ рдХреЛ рджреЗрдЦ рд╕рдХреЗред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╛рд╕рдо рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?

рдореИрдВ рдпрд╣ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдХреИрд╕реЗ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдареАрдХ рд╣реИ рдЕрдЧрд░ рдХреЗрд╡рд▓ рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ (рдПрдореНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯрди [1]) рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ WebAssembly рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдореБрдЭреЗ рдХреБрдЫ рд╣рдж рддрдХ рд▓рд┐рдмреЛрдкрд╕ рд╕реНрдерд┐рддрд┐ рдХреА рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИ (рдПрдХ рдорд╛рдирдХ рдЬреЛ рдорд╛рдирдХ рд░реВрдк рд╕реЗ рдХреЙрдкреАрд░рд╛рдЗрдЯ рдХреЛрдб рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ)ред

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

рд╢рд╛рдпрдж рдпрд╣ WebAssembly рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ WebEmscripten (WebScripten?) рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ @ d4tocchini рдиреЗ рдХрд╣рд╛ рдерд╛, рдЕрдЧрд░ рдпрд╣ WebAssembly (рдЖрд╡рд╢реНрдпрдХ, рдорд╛рдирдХреАрдХрд░рдг рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдХрд╛рд░рдг) рдПрдХрд╛рдзрд┐рдХрд╛рд░ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдерд╛, рддреЛ рд╕рдВрднрд╡рддрдГ рдЗрд╕реЗ рдЕрдм рддрдХ рдлреЛрд░реНрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдХрд┐ рд╕рдВрдХрд▓рдХ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдФрд░ рдирд╣реАрдВ, "рдмрд╕ рдПрдорд╕реНрдХреНрд░рд┐рдкреНрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ" рдПрдХ рд╡реИрдз рдкреНрд░рддрд┐рд╡рд╛рдж рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдорд╛рдирдХ рдХреЛ рдПрдХ рдПрдХрд▓ рд╕рдВрдХрд▓рдХ рд╡рд┐рдХреНрд░реЗрддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЖрдкрдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдмреБрд░рд╛ рдХреНрдпреЛрдВ рд╣реИред

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

рдпрд╣рд╛рдВ рдПрдХ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХрд╛ рдореБрджреНрджрд╛ рд╣реИ рдЬреЛ рдЧреБрдо рдЧреЛрдЯреЛ/рдлрдВрдХрд▓реЗрдЯреНрд╕ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ: рдЧреЛрд▓рдВрдЧ/рдЧреЛ#42979

рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП, рдЧреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ 18,000 рдиреЗрд╕реНрдЯреЗрдб block s рдХреЗ рд╕рд╛рде рдПрдХ wasm рдмрд╛рдЗрдирд░реА рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред wasm рдмрд╛рдЗрдирд░реА рдХрд╛ рдЖрдХрд╛рд░ рд╕реНрд╡рдпрдВ 2.7MB рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдЗрд╕реЗ wasm2wat рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ 4.7GB .wat рдлрд╝рд╛рдЗрд▓ рдорд┐рд▓рддреА рд╣реИред рдореИрдВ

рдореИрдВ рдЧреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдХреБрдЫ рдЕрдиреБрдорд╛рдиреА рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рдерд╛ рддрд╛рдХрд┐ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдХреВрдж рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдмрдЬрд╛рдп рдпрд╣ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдмрд╛рдЗрдирд░реА рдкреЗрдбрд╝ рдмрдирд╛ рд╕рдХреЗ рдФрд░ рдлрд┐рд░ рдХрдИ рдмрд╛рд░ рдХреВрдж рд▓рдХреНрд╖реНрдп рдЪрд░ рдХреЛ рджреЗрдЦ рд╕рдХреЗред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╛рд╕рдо рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?

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

рдФрд░ рдирд╣реАрдВ, "рдмрд╕ emscripten рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ" рдПрдХ рд╡реИрдз рдкреНрд░рддрд┐рд╡рд╛рдж рдирд╣реАрдВ рд╣реИ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдирд╕ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рддрд┐рд╡рд╛рдж рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдПрдХ рдЕрдиреНрдп рд╕рдВрдХрд▓рдХ рдЬреЛ рд╡рд╛рд╕рдо рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рд╡рд╣ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд░рд┐рд▓реЛрдкрд░-рдЬреИрд╕реЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕рдо рдХреЗ рдкрд╛рд╕ рдЕрдВрддрддрдГ рдПрдХ рдорд▓реНрдЯреА-рдмреЙрдбреА рд▓реВрдк (рдлрд╝рдВрдХрд▓реЗрдЯреНрд╕ рдХреЗ рдХрд░реАрдм) рдпрд╛ рдРрд╕рд╛ рд╣реА рдХреБрдЫ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ goto рд▓рд┐рдП рдПрдХ рдкреНрд░рд╛рдХреГрддрд┐рдХ рд▓рдХреНрд╖реНрдп рд╣реЛред

@ рдХреЙрдирд░рд╛рдб-рд╡рд╛рдЯ рдРрд╕реЗ рдХрдИ рдХрд╛рд░рдХ рд╣реИрдВ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЛ CFG рдореЗрдВ рдХрдИ рдмреБрдирд┐рдпрд╛рджреА рдмреНрд▓реЙрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреЗ рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рд╕реНрд▓рд╛рдЗрд╕ рдкрд░ рд▓рдВрдмрд╛рдИ рдХреА рдЬрд╛рдВрдЪ рд╣реЛрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рд▓рдВрдмрд╛рдИ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЖрдо рддреМрд░ рдкрд░ рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рд╕рдВрдХрд▓рдХ рдмреБрдирд┐рдпрд╛рджреА рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд╕реНрддреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕рдо рдХреЗ рд╕рд╛рде рд╡реЗ рдХреБрдЫ рд╣рдж рддрдХ рдорд╣рдВрдЧреЗ рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВред

@neelance рд╕рдВрд╢реЛрдзрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЬрд╣рд╛рдВ рдХреЛрдб рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИ, (рд░рдирдЯрд╛рдЗрдо/рд╕рдВрдХрд▓рди) рдореЗрдореЛрд░реА рдУрд╡рд░рд╣реЗрдб рдмрд╣реБрдд рдХрдо рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреНрдпрд╛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрдо рдмреНрд▓реЙрдХ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рдпрд╛ рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрдВрдЬрди рдЬреАрд╕реА рдЕрдзрд┐рдХ рдмрд╛рд░реАрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

@ рдХреЙрдирд░рд╛рдб-рд╡рд╛рдЯ рдпрд╣ рдЧреЛ рдХреЛрдб рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди WebAssembly рд╣реЛрд╕реНрдЯ: рдЬрдм рдореИрдВ рдХреНрд░реЛрдо 86 рдХреЗ рд╕рд╛рде рд╡рд╛рд╕рдо рдмрд╛рдЗрдирд░реА рдХреЛ рдЗрдВрд╕реНрдЯреЗрдВрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореЗрд░рд╛ рд╕реАрдкреАрдпреВ 2 рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП 100% рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЯреИрдм рдХрд╛ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдЪрд░рдо рдкрд░ рд╣реЛрддрд╛ рд╣реИ 11.3 рдЬреАрдмреАред рдЗрд╕ рд╕реЗ рдкрд╣рд▓реЗ Wasm рджреНрд╡рд┐рдЖрдзрд╛рд░реА / рдЧреЛ рдХреЛрдб рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реИред рдпрд╣ wasm рдмрд╛рдЗрдирд░реА рдХрд╛ рдЖрдХрд╛рд░ рд╣реИ рдЬреЛ рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдпрд╣ рддреЛ рдореЗрд░реА рд╕рдордЭ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдереАред рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдВрдХрд▓рди/рддрддреНрдХрд╛рд▓ рдХреЗ рджреМрд░рд╛рди рдореЗрдореЛрд░реА рдУрд╡рд░рд╣реЗрдб рдХрд╛ рдХрд╛рд░рдг рдмрдирдиреЗ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмреНрд▓реЙрдХ/рдЯрд╛рдЗрдк рдПрдиреЛрдЯреЗрд╢рди рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реВрдВред

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

рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рднрд╛рдЬрд┐рдд рдХреЛрдб рдХрд╛ рдкрд░рд┐рдгрд╛рдо (рдореЛрдЯреЗ рддреМрд░ рдкрд░) рдмреНрд▓реЙрдХреЛрдВ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдЕрд▓рдЧ рд╕реЗ JIT рд╕рдВрдХрд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдореЗрдЯрд╛рдбреЗрдЯрд╛/IR рдЕрдзрд┐рдХ рдЙрддреНрд╕реБрдХрддрд╛ рд╕реЗ Wasm рдЗрдВрдЬрди рджреНрд╡рд╛рд░рд╛ GC'd рд╣реЛ рд╕рдХрддрд╛ рд╣реИ . рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ V8 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд╣реБрдИ рдереА рдЬрдм рдмрдбрд╝реЗ asm.js рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕/рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд╛рд╕рдо рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдиреЗрд╕реНрдЯреЗрдб block s рдХреА рдЧрд╣рд░рд╛рдИ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХреНрд░реЛрдо рдХреЗ wasm рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдХреБрдЫ рдШрд╛рддреАрдп рдЬрдЯрд┐рд▓рддрд╛ рд╡реГрджреНрдзрд┐ рд╣реБрдИ рд╣реИред рд╡рд┐рднрд╛рдЬрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕рдорд╛рди рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмреНрд▓реЙрдХ рд╣реИрдВ рд▓реЗрдХрд┐рди рдПрдХ рдЫреЛрдЯреА рдЕрдзрд┐рдХрддрдо рдЧрд╣рд░рд╛рдИ рд╣реИред

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд╛рд╕рдо рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдиреЗрд╕реНрдЯреЗрдб рдмреНрд▓реЙрдХ рдХреА рдЧрд╣рд░рд╛рдИ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХреНрд░реЛрдо рдХреЗ wasm рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдХреБрдЫ рдШрд╛рддреАрдп рдЬрдЯрд┐рд▓рддрд╛ рд╡реГрджреНрдзрд┐ рд╣реБрдИ рд╣реИред рд╡рд┐рднрд╛рдЬрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕рдорд╛рди рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмреНрд▓реЙрдХ рд╣реИрдВ рд▓реЗрдХрд┐рди рдПрдХ рдЫреЛрдЯреА рдЕрдзрд┐рдХрддрдо рдЧрд╣рд░рд╛рдИ рд╣реИред

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

рдпрджрд┐ рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдХрд╛ рдЕрдВрддрд░ рдЙрд╕рд╕реЗ рдХрдо рд╣реИ, рддреЛ рдореЗрд░рд╛ рдЭреБрдХрд╛рд╡ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ V8 рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреА рд▓рдЧрднрдЧ рдХреЛрдИ GC'ing рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ _during_ рдПрдХ рдПрдХрд▓ Wasm рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╕рдВрдХрд▓рди, рдЗрд╕рд▓рд┐рдП рднрд▓реЗ рд╣реА рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╢реБрд░реВ рд╕реЗ рд╣реА рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рдЯреНрд╡реАрдХреНрдб рдлрд╝рдВрдХрд▓реЗрдЯ рдкреНрд░рд╕реНрддрд╛рд╡ рдЬреИрд╕рд╛ рдХреБрдЫ рд╣реЛ , рд╡рд╣реА рдУрд╡рд░рд╣реЗрдбреНрд╕ рдЕрднреА рднреА рдЙрдирдХреЗ рдмрд┐рдирд╛ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк GC рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХрд┐рдП рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗред

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

рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдпрд╣рд╛рдВ рдЕрдзрд┐рдХ рдкреНрд░рд╛рдХреГрддрд┐рдХ рд▓рдХреНрд╖реНрдп рд░рдЦрдирд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ (рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рддрдХрдиреАрдХреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ)ред

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

рджреВрд╕рд░реА рддрд░рдл: рдкрд╣рд▓рд╛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдШреЛрдВрд╕рд▓рд╛ рд╣реИ, рдЖрдЦрд┐рд░реА рдирд╣реАрдВред рдиреЗрд╕реНрдЯреЗрдб block s рдФрд░ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдПрдХрд▓ br_table рдпрд╣ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдПрдХ рдкрд╛рд░рдВрдкрд░рд┐рдХ switch рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ wasm рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЬрдВрдк рдЯреЗрдмрд▓ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИред рдХреЛрдИ 3000 рдиреЗрд╕реНрдЯреЗрдб рд▓реВрдк рдирд╣реАрдВ рд╣реИрдВред

рдпрджрд┐ рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдХрд╛ рдЕрдВрддрд░ рдЙрд╕рд╕реЗ рдХрдо рд╣реИ, рддреЛ рдореЗрд░рд╛ рдЭреБрдХрд╛рд╡ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ V8 рдПрдХ рдПрдХрд▓ Wasm рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреА рд▓рдЧрднрдЧ рдХреЛрдИ GC'ing рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рднрд▓реЗ рд╣реА рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╢реБрд░реБрдЖрдд рд╕реЗ рд╣реА рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рдЯреНрд╡реАрдХ рдХрд┐рдП рдЧрдП funclets рдкреНрд░рд╕реНрддрд╛рд╡ рдЬреИрд╕рд╛ рдХреБрдЫ рд╣реЛред , рд╡рд╣реА рдУрд╡рд░рд╣реЗрдбреНрд╕ рдЕрднреА рднреА рдЙрдирдХреЗ рдмрд┐рдирд╛ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк GC рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХрд┐рдП рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗред

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

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

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

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

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

рддреБрдореНрд╣рд╛рд░реА рдмрд╛рдд рд╕рд╣реА рд╣реИред

рдореИрдВ рдЕрдм рднреА рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдмреБрдирд┐рдпрд╛рджреА рдмреНрд▓реЙрдХреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЬрдВрдк рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдЬрдВрдк рд╡реЗрд░рд┐рдПрдмрд▓ рдФрд░ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдЬрдВрдк рдЯреЗрдмрд▓/рдиреЗрд╕реНрдЯреЗрдб рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдмреНрд▓реЙрдХреЛрдВ рдХреА рд╕рд░рд▓ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрдХреНрдд рдХрд░рдирд╛ рд╣реИред рдЗрд╕рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдУрд╡рд░рд╣реЗрдб рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдореБрджреНрджреЛрдВ рдХрд╛ рдЬреЛрдЦрд┐рдо рд╣реЛрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рд╣рдордиреЗ рдпрд╣рд╛рдВ рджреЗрдЦрд╛ рдерд╛ред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЬрдЯрд┐рд▓ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рд░рд▓ рдкреНрд░рдгрд╛рд▓рд┐рдпрд╛рдВ рдмреЗрд╣рддрд░ рдФрд░ рдЕрдзрд┐рдХ рдордЬрдмреВрдд рд╣реЛрддреА рд╣реИрдВред рдореИрдВрдиреЗ рдЕрднреА рднреА рдРрд╕реЗ рддрд░реНрдХ рдирд╣реАрдВ рджреЗрдЦреЗ рд╣реИрдВ рдЬреЛ рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рджрд┐рд▓рд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╕рд░рд▓ рдкреНрд░рдгрд╛рд▓реА рдПрдХ рдЦрд░рд╛рдм рд╡рд┐рдХрд▓реНрдк рд╣реИред рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдпрд╣ рд╕реБрдирд╛ рд╣реИ рдХрд┐ V8 рдХреЛ рдордирдорд╛рдиреЗ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдХрдард┐рди рд╕рдордп рд╣реЛрдЧрд╛ рдФрд░ рдореЗрд░рд╛ рдЦреБрд▓рд╛ рдкреНрд░рд╢реНрди рдореБрдЭреЗ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХрдерди рдЧрд▓рдд рд╣реИ (https://github.com/WebAssembly/design/issues/796#issuecomment-623431527) рдирд╣реАрдВ рд╣реИ рдЕрднреА рддрдХ рдЙрддреНрддрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

@рдиреАрд▓рд╛рдВрд╕

рдЧрд╣рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдХреНрд░реЛрдо рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмреЗрд╕рд▓рд╛рдЗрди рдХрдВрдкрд╛рдЗрд▓рд░ рд▓рд┐рдлреНрдЯрдСрдлрд╝ рдареАрдХ рд╣реИ, рдФрд░ рд╕рдорд╕реНрдпрд╛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд┐рдВрдЧ рдХрдВрдкрд╛рдЗрд▓рд░ TurboFan рдореЗрдВ рд╣реИред рдХреГрдкрдпрд╛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рджрд░реНрдЬ рдХрд░реЗрдВ, рдпрд╛ рдХреГрдкрдпрд╛ рдПрдХ рдЯреЗрд╕реНрдЯрдХреЗрд╕ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ рдФрд░ рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдореИрдВ рдПрдХ рдлрд╛рдЗрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

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

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

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

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

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

@kripken рдЖрдкрдХреА рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдкреЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмреЗрд╕рд▓рд╛рдЗрди рдХрдВрдкрд╛рдЗрд▓рд░ рд▓рд┐рдлреНрдЯрдСрдлрд╝ рдареАрдХ рд╣реИ, рдФрд░ рд╕рдорд╕реНрдпрд╛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд┐рдВрдЧ рдХрдВрдкрд╛рдЗрд▓рд░ TurboFan рдореЗрдВ рд╣реИред рдХреГрдкрдпрд╛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рджрд░реНрдЬ рдХрд░реЗрдВ, рдпрд╛ рдХреГрдкрдпрд╛ рдПрдХ рдЯреЗрд╕реНрдЯрдХреЗрд╕ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ рдФрд░ рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдореИрдВ рдПрдХ рдлрд╛рдЗрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдпрд╣рд╛рдБ рдПрдХ wasm рдмрд╛рдЗрдирд░реА рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк wasm_exec.html рдХреЗ рд╕рд╛рде рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ wasm рд╕реНрдЯреИрдХ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдпреЛрдЬрдирд╛рдПрдБ рдЧреЛ рдХреЗ рдЧреЛрд░реЛрдЗрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреА?

рд╣рд╛рдВ, рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдорджрдж рдорд┐рд▓реЗрдЧреАред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ wasm рд╕рдВрд░рдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ + Asyncify рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрдЪреНрдЫреЗ рдкрд░рд┐рдгрд╛рдо рд╣реИрдВред

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

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдПрд▓рдПрд▓рд╡реАрдПрдо рдХрд╛ рд╕реНрдЯреИрдХрд┐рдлрд╛рдпрд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЖрд╕рд╛рди/рдмреЗрд╣рддрд░ рд╣реИ: https://medium.com/leaningtech/solving-the-structured-control-flow-problem-once-and-for-all-5123117b1ee2

рдореИрдВрдиреЗ рдЧреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡ рджрд╛рдпрд░ рдХрд┐рдпрд╛ рд╣реИ: https://github.com/golang/go/issues/43033

@neelance , @kripken рдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЛ рджреЗрдЦрдХрд░ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ , рдЧреЛрд▓рдВрдЧ + wasm рдХреЗ рд╕рд╛рде рдереЛрдбрд╝реА рдорджрдж рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдЧреЛрдЯреЛ/рд▓реЗрдмрд▓ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬреЛ рд╕реНрдЯреИрдХ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ Asyncify рд╕реНрдЯреИрдХ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдЬрд╛рд░реА рд╣реЛрдиреЗ рддрдХ Asyncify рдХреЗ рд╕рд╛рде рдирдП рдбреАрдкреАрдПрд╕/рд╡рд┐рд╢реЗрд╖ рдЖрд╡рд░рдг рдмрдирд╛рддрд╛ рд╣реИ, рдЖрджрд┐ - рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╛ рдЗрд╖реНрдЯрддрдо рд╢рдорди рд╕реЗ рдХрдо рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВрдЧреЗ? рдпрджрд┐ рдЧреЛрдЯреЛ рдирд┐рд░реНрджреЗрд╢ рдЙрдкрд▓рдмреНрдз рдереЗ рддреЛ рдпрд╣ рдЕрдиреБрдорд╛рдирд┐рдд рд▓рд╛рднреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИ?

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

рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рдкрдврд╝ рд░рд╣рд╛ рд╣реВрдВ рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рд╕реБрдзрд╛рд░реЗрдВ, рд▓реЗрдХрд┐рди рдЙрдард╛рдП рдЧрдП рдХреБрдЫ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдореВрд▓реА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рд░рдЦрд░рдЦрд╛рд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдиреЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдкрд░ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯрддрд╛ рдирд╣реАрдВ рджреА рд╣реИ рдФрд░ рди рд╣реА рдХрдард┐рди рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрддреНрддрд░ рджрд┐рдпрд╛ рд╣реИред рдкреВрд░реЗ рд╕рдореНрдорд╛рди рдХреЗ рд╕рд╛рде, рдХреНрдпрд╛ рдпрд╣ рд╕реБрд╕реНрдд ossification рдХреИрд▓рд╕ рдХреЙрд░рдкреЛрд░реЗрдЯ рдкреЙрд▓рд┐рдЯрд┐рдХреНрд╕ рдХреА рдкрд╣рдЪрд╛рди рдирд╣реАрдВ рд╣реИ? рдЕрдЧрд░ рдРрд╕рд╛ рд╣реИ, рддреЛ рдореИрдВ рджреБрд░реНрджрд╢рд╛ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ... рдЙрди рд╕рднреА рднрд╛рд╖рд╛рдУрдВ/рд╕рдВрдХрд▓рдХреЛрдВ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рд╡рд╛рд╕рдо рдХрд╛ рдмреНрд░рд╛рдВрдб рд╕рдорд░реНрдерди рдХрд╛ рджрд╛рд╡рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдХреЗрд╡рд▓ рдПрдПрдирдПрд╕рдЖрдИ рд╕реА рдПрдХ рдХрдВрдкреИрдЯ рд▓рд┐рдЯрдорд╕ рдЯреЗрд╕реНрдЯ рд╣реЛрддрд╛!

@neelance @darkuranium @d4tocchini рд╕рднреА Wasm рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЧреЛрдЯреЛ рдХреА рдХрдореА рд╕рд╣реА рдмрд╛рдд рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ Wasm рдХреА # 1 рдбрд┐рдЬрд╝рд╛рдЗрди рдЧрд▓рддреА рдХреЗ рд░реВрдк рдореЗрдВ рд░реЗрдЯ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд┐рд▓реНрдХреБрд▓ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВ (рдпрд╛ рддреЛ рдлрдВрдХрд▓реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╛ рд╕реАрдзреЗ)ред

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

  1. рд╡рд╛рд╕рдо рд╕реАрдЬреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВред
  2. рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЧреЛрдЯреЛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд╛ рдЪреИрдВрдкрд┐рдпрди рдмрдирдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рд▓рдЧрд╛рддрд╛ рд╣реИред рдореИрдВ рдореМрдЬреВрджрд╛ funclets рдкреНрд░рд╕реНрддрд╛рд╡ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА @sunfishcode рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрддрдорд╛рди рдЗрдВрдЬрдиреЛрдВ рдФрд░ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП "рдХрдо рд╕реЗ рдХрдо рдШреБрд╕рдкреИрда" рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реЛрдЪрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдмреНрд▓реЙрдХ рд╕рдВрд░рдЪрдирд╛ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдореЗрдВ рдХрдЪреНрдЪреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдлрд▓ рд╣реЛрдиреЗ рдХрд╛ рдПрдХ рдЙрдЪреНрдЪ рдореМрдХрд╛ рд╣реИред рдХреЗ рд▓рд┐рдП рдЬрд╛рдУред
  3. 4 рдкреНрд░рд╕реНрддрд╛рд╡ рдЪрд░рдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдХрд░реЗрдВред рдЗрд╕рдореЗрдВ рдЖрдкрдХреЗ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рднреА рдЖрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреЗ рдбрд┐рдЬрд╛рдЗрди рдмрдирд╛рдирд╛, рдЪрд░реНрдЪрд╛ рд╢реБрд░реВ рдХрд░рдирд╛, рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд▓реЛрдЧреЛрдВ рдХреЛ рдЦреБрд╢ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ рдХрд┐ рдЪрд░рдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдкрд░ рдЖрдкрдХреЛ рдмрд╣реБрдордд рдХреЗ рд╡реЛрдЯ рдорд┐рд▓рддреЗ рд╣реИрдВред

@ d4tocchini рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕реБрдЭрд╛рдП рдЧрдП рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ "рджрд┐рдП рдЧрдП рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдмрджрд▓ рдирд╣реАрдВ рд╕рдХрддрд╛" рдЙрд░реНрдл тАЛтАЛтАЛтАЛ"рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб" рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реВрдВред рдореИрдВ рдЕрднреА рднреА рдЬрдВрдк/рдЧреЛрдЯреЛ рдирд┐рд░реНрджреЗрд╢ (рдпрд╛ funclets) рдХреЛ рд╕рд░рд▓ рддрд░реАрдХрд╛ рдорд╛рдирддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдмреЗрд╣рддрд░ рд╣реИред (рдлрд┐рд░ рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

@aardappel рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ, @sunfishcode рдиреЗ funclets рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдЕрд╕рдлрд▓ рд░рд╣рд╛ред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрд▓рдЧ рдХреНрдпреЛрдВ рд╣реЛрдЧрд╛?

@neelance рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ @sunfishcode рдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдирд┐рд░реНрдорд╛рдг рд╕реЗ рдкрд░реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдордп рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ "рд╡рд┐рдлрд▓" рдХреЗ рдмрдЬрд╛рдп "рд░реБрдХрд╛ рд╣реБрдЖ" рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛, рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рднреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд▓рд┐рдП рдирд┐рд░рдВрддрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреИрдВрдкрд┐рдпрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

@рдиреАрд▓рд╛рдВрд╕

рдЯреЗрд╕реНрдЯрдХреЗрд╕ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдореИрдВрдиреЗ https://bugs.chromium.org/p/v8/issues/detail?id=11237 . рджрд╛рдпрд░ рдХрд┐рдпрд╛

рд╣рдореЗрдВ рдЧреЛ [..] рдореЗрдВ рд░рд┐рд▓реВрдкрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдЕрдЧрд░ рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛, рддреЛ рд╣рдо рдПрдХ рд╕реА рдлрд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╛рдЗрдирд░реАрди рдХрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╢рд╛рдпрдж рдпрд╣ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ?

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

@taralx

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдПрд▓рдПрд▓рд╡реАрдПрдо рдХрд╛ рд╕реНрдЯреИрдХрд┐рдлрд╛рдпрд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЖрд╕рд╛рди/рдмреЗрд╣рддрд░ рд╣реИ,

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд╣ рд▓рд┐рдВрдХ рдЕрдкрд╕реНрдЯреНрд░реАрдо LLVM рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд╡рд╣ Cheerp рдХрдВрдкрд╛рдЗрд▓рд░ рд╣реИ (рдЬреЛ LLVM рдХрд╛ рдПрдХ рдХрд╛рдВрдЯрд╛ рд╣реИ)ред рдЙрдирдХреЗ рд╕реНрдЯреИрдХрд┐рдлрд╛рдпрд░ рдХрд╛ рдирд╛рдо рдПрд▓рдПрд▓рд╡реАрдПрдо рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрд▓рдЧ рд╣реИред

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

@kripken рдореБрджреНрджрд╛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдЕрдЧрд░ рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛, рддреЛ рд╣рдо рдПрдХ рд╕реА рдлрд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╛рдЗрдирд░реАрди рдХрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╢рд╛рдпрдж рдпрд╣ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ?

рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рдЧреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рд╢реБрджреНрдз рдЧреЛ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реА рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рд╣реЛрдЧрд╛ред

рдпрд╣рд╛рдБ рдлрд╝рдВрдХрд▓реЗрдЯ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╣реИ: рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЕрдЧрд▓рд╛ рдЪрд░рдг рдЪрд░рдг 1 рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдЬреА рд╡реЛрдЯ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИред

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

рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рдЧреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рд╢реБрджреНрдз рдЧреЛ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реА рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рд╣реЛрдЧрд╛ред

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

@ рд╡реБрд░рд┐рдЦ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЧреЛрдЯреЛ рдХреЛ рд╡рд╛рд╕рдо рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдорд╛рдорд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдХреЛрдб рд╕реЗ рд╕рдореНрдореЛрд╣рдХ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЧрдВрднреАрд░ рдкреЗрд░реНрдл рдХреНрд▓рд┐рдл рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИред рдореИрдВрдиреЗ рдЦреБрдж рдРрд╕рд╛ рдбреЗрдЯрд╛ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИред "рдиреЙрдЯ рд╕реЛ рдлрд╝рд╛рд╕реНрдЯ: рдПрдирд╛рд▓рд┐рд╕рд┐рд╕ рдж рдкрд░рдлреЙрд░реНрдореЗрдВрд╕ рдСрдлрд╝ рд╡реЗрдмрдЕрд╕реЗрдВрдмрд▓реА рдмрдирд╛рдо рдиреЗрдЯрд┐рд╡ рдХреЛрдб" (2019) рдЬреИрд╕реЗ рд╡рд╛рд╕реНрдо рдкрд░рдл рдбреЗрдлрд┐рд╕рд┐рдЯ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдп рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░рдХ рд╣реЛрдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ (рд╡реЗ рд╢рд╛рдЦрд╛ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдХреЛ рдиреЛрдЯ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдирд╣реАрдВ рд╣реИрдВ рд╕рдВрд░рдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЗ рдХрд╛рд░рдг - рдмрд▓реНрдХрд┐ рдпрд╣ рд╕реБрд░рдХреНрд╖рд╛ рдЬрд╛рдВрдЪ рдХреЗ рдХрд╛рд░рдг рд╣реИ)ред

@kripken рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдХреЛрдИ рдЗрд╕ рддрд░рд╣ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реЗ рдПрдХрддреНрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдХреЛрдИ рдХреИрд╕реЗ рджрд┐рдЦрд╛рдПрдЧрд╛ рдХрд┐ рд╕рдВрд░рдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЗ рдХрд╛рд░рдг рдПрдХ рдкреВрд░реНрдг рдШрд╛рдЯрд╛ рд╣реИ?

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

рдореИрдВ рдХреБрдЫ рд╣рдж рддрдХ рд╣реИрд░рд╛рди рд╣реВрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рддрдХ рдПрдХ рд╕реНрд╡рд┐рдЪ рдХреЗрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рдлрдВрдХрд▓реЗрдЯреНрд╕ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

@рдиреАрд▓рд╛рдВрд╕

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

рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣рд╛рде рд╕реЗ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдорд╢реАрди рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЙрд╕ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдкреЗрдкрд░ рдореЗрдВ рдХрд┐рдпрд╛ рдерд╛ред

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

@taralx

рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдХреНрдпрд╛ рдореБрдЭреЗ рд╕рдВрдХрд▓рди рд╕рдордп рдпрд╛ рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдпрд╛рдж рдЖрдпрд╛? рд╕рдВрд░рдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╣рд╛рдВ рдмреЗрд╣рддрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╕реАрдПрдлрдЬреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрд╕рдПрд╕рдП рдлреЙрд░реНрдо рдореЗрдВ рдЬрд╛рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрди рдХрд╛рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдерд╛ рдЬреЛ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рд╕рдВрд░рдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд╕рд╛рде рдЧрдП рдереЗред рдЗрд╕реЗ рднреА рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡реЗрдм рдкрд░ рд▓реЛрдб рд╕рдордп рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред

(рдпрд╛ рдЖрдкрдХрд╛ рдорддрд▓рдм рдбреЗрд╡рд▓рдкрд░ рдХреА рдорд╢реАрди рдкрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдкреНрд░рджрд░реНрд╢рди рд╣реИ? рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ wasm рд╡рд╣рд╛рдВ рдЕрдзрд┐рдХ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдЭреБрдХрддрд╛ рд╣реИ, рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдХрдоред)

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

@taralx

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

@рдХреНрд░рд┐рдкрдХреЗрди

рд╕рдВрд░рдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╣рд╛рдВ рдмреЗрд╣рддрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╕реАрдПрдлрдЬреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрд╕рдПрд╕рдП рдлреЙрд░реНрдо рдореЗрдВ рдЬрд╛рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрди рдХрд╛рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдерд╛ рдЬреЛ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рд╕рдВрд░рдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд╕рд╛рде рдЧрдП рдереЗред рдЗрд╕реЗ рднреА рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡реЗрдм рдкрд░ рд▓реЛрдб рд╕рдордп рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдмрд╣реБрдд рд╣реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рд╢реНрди, рдмрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ: рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рд╡рд╛рд╕рдо рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИ - "рдмрд╣реБрдд рд╕рд░рд▓" "рд╕рдВрд░рдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣" рд╕реЗ рдПрд╕рдПрд╕рдП рдлреЙрд░реНрдо рдореЗрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рддреНрд╡рд░рд┐рдд рдирдЬрд╝рд░ рд╕реЗ, Wasm рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ (рдкреВрд░реА рддрд░рд╣ рд╕реЗ/рдЕрдВрддрддрдГ) рд╕рдВрд░рдЪрд┐рдд рдирд╣реАрдВ рд╣реИред рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрд░рдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рд╡рд╣ рд╣реИ рдЬрд╣рд╛рдВ рдХреЛрдИ break s, continue s, return s (рдореЛрдЯреЗ рддреМрд░ рдкрд░, рдпреЛрдЬрдирд╛ рдХрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдореЙрдбрд▓, рдХреЙрд▓/рд╕реАрд╕реА рдЬреИрд╕реЗ рдЬрд╛рджреВ рдХреЗ рдмрд┐рдирд╛) рдирд╣реАрдВ рд╣реИред рдЬрдм рд╡реЗ рдореМрдЬреВрдж рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдРрд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдореЛрдЯреЗ рддреМрд░ рдкрд░ "рдЕрд░реНрдз-рд╕рдВрд░рдЪрд┐рдд" рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрд░рдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╕рд┐рджреНрдз рдПрд╕рдПрд╕рдП рдПрд▓реНрдЧреЛ рд╣реИ: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.45.4503 ред рдЕрд░реНрдз-рд╕рдВрд░рдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдХрд╣рдирд╛ рд╣реИ:

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

OTOH, рдПрдХ рдФрд░ рдкреНрд░рд╕рд┐рджреНрдз рдПрд▓реНрдЧреЛрд░рд┐рдердо рд╣реИ, https://pp.info.uni-karlsruhe.de/uploads/publikationen/braun13cc.pdf рдЬреЛ рдпрдХреАрдирди рд╕рд┐рдВрдЧрд▓-рдкрд╛рд╕ рднреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рди рдХреЗрд╡рд▓ рдЧреИрд░-рд╕рдВрд░рдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ рдкреНрд░рд╡рд╛рд╣, рд▓реЗрдХрд┐рди рдЗрд░реЗрдбреНрдпреВрд╕рдмрд▓ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд╕рд╛рде рднреА (рдпрджреНрдпрдкрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЗрд╖реНрдЯрддрдо рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ)ред

рддреЛ, рд╕рд╡рд╛рд▓ рдлрд┐рд░ рд╕реЗ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреБрдЫ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреНрд░реИрдВрдбрд┐рд╕/рдореЛрд╕реЗрдирдмреЙрдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдкрд░реЗрд╢рд╛рдиреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛, рдФрд░ рдмреНрд░реМрди рдПрдЯ рдЕрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЙрд╕ рдорд╛рд░реНрдЧ рдкрд░ рдареЛрд╕ рд▓рд╛рдн рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ред рдПрд▓реНрдЧреЛрд░рд┐рдердо (рдПрдХ рд╕рд╛рдЗрдб рдиреЛрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рдореЗрд░рд╛ рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд рдЭреБрдХрд╛рд╡ рдпрд╣ рд╣реИ рдХрд┐ рдмреНрд░реМрди рдПрд▓реНрдЧреЛ рдмрд┐рд▓реНрдХреБрд▓ "рдКрдкрд░реА рдмрд╛рдЙрдВрдб" рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдФрдкрдЪрд╛рд░рд┐рдХ рд╕рдмреВрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╣ рдЦреБрдж рдХреЛ рд╕рд╣рдЬ рд░реВрдк рд╕реЗ рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЧреВрдВрдЧрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╣реИ - рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд рдЭреБрдХрд╛рд╡ )

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

рд╕рдВрд░рдЪрд┐рдд CFG рдХреЗ рд▓рд┐рдП SSA рдЙрддреНрдкрд╛рджрди рдХреА рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╕реБрдЧрдорддрд╛ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ (рдФрд░ Wasm CFGs рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдФрдкрдЪрд╛рд░рд┐рдХ рдЕрд░реНрдереЛрдВ рдореЗрдВ рд╕рдВрд░рдЪрд┐рдд рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ) рдХрд┐рд╕реА рддрд░рд╣ рдКрдкрд░ рдХреА рд╕реНрдкрд╖реНрдЯ рддрд╕реНрд╡реАрд░ рдХреЛ рдмрд╛рджрд▓ рджреЗрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВ рдкреВрдЫ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдРрд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрджрд░реНрдн рд╣реИрдВ рдХрд┐ рдПрд╕рдПрд╕рдП рдирд┐рд░реНрдорд╛рдг рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╡рд╛рд╕реНрдо рд╕реАрдПрдлрдЬреА рдлреЙрд░реНрдо рд╕реЗ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛрддрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рджред

@kripken рдореИрдВ рдЕрднреА рдереЛрдбрд╝рд╛ рднреНрд░рдорд┐рдд рд╣реВрдВ рдФрд░ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реВрдВред рдореИрдВ рд╕реНрдерд┐рддрд┐ рдХреЛ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ рдФрд░ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ:


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

рдпрджрд┐ CFG рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдо рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рддреЛ рд╕рдм рдареАрдХ рд╣реИ рдФрд░ wasm VM рдЗрд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХреЛрдИ рднреА рдЕрдиреБрд╡рд╛рдж рдкрд╛рд╕ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдорд╛рдорд▓рд╛ рд╣реИ рдФрд░ рддреНрд╡рд░рд┐рдд рдХрд╛рд░реНрдп рдХрд░реЗрдВред рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рд╕реАрдПрдлрдЬреА рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рд╕реЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрдореА рдирд╣реАрдВ рдЖрдиреА рдЪрд╛рд╣рд┐рдПред

рдпрджрд┐ CFG рдХрдо рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ, рддреЛ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:

  • рдХрдВрдкрд╛рдЗрд▓рд░ рдЗрд╕реЗ рдХрдо рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрдВрдк рдЯреЗрдмрд▓ рдкреЗрд╢ рдХрд░рдХреЗред рдпрд╣ рдХрджрдо рдЬрд╛рдирдХрд╛рд░реА рдЦреЛ рджреЗрддрд╛ рд╣реИред рдмрд╛рдЗрдирд░реА рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдП рдмрд┐рдирд╛ рдореВрд▓ CFG рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдХрдард┐рди рд╣реИред рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЗрд╕ рдиреБрдХрд╕рд╛рди рдХреЗ рдХрд╛рд░рдг, рдЙрддреНрдкрдиреНрди рдХреЛрдИ рднреА рдорд╢реАрди рдХреЛрдб рдкреНрд░рд╛рд░рдВрднрд┐рдХ CFG рд╕реЗ рдЙрддреНрдкрдиреНрди рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреБрдЫ рдзреАрдорд╛ рд╣реЛрдЧрд╛ред рд╣рдо рдЗрд╕ рдорд╢реАрди рдХреЛрдб рдХреЛ рд╕рд┐рдВрдЧрд▓ рдкрд╛рд╕ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЗ рд╕рд╛рде рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реВрдЪрдирд╛ рд╣рд╛рдирд┐ рдХреА рдХреАрдордд рдкрд░ рд╣реИред [1]

  • рд╣рдо рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдПрдХ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ CFG рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред VM рдХреЛ рдЗрд╕реЗ рдХрдо рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд▓реЛрдб рд╕рдордп рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рд╕реАрдПрдлрдЬреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдо рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдкрд╛рд╕ рд▓реЛрдб рдЯрд╛рдЗрдо рдкрд░рдлреЙрд░реНрдореЗрдВрд╕ рдпрд╛ рд░рди рдЯрд╛рдЗрдо рдкрд░рдлреЙрд░реНрдореЗрдВрд╕ рдХреЗ рд▓рд┐рдП рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрддрд╛ рд╣реИред

[1] рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рд╣реИ рдЕрдЧрд░ рдСрдкрд░реЗрд╢рди рдХреЛ рдЙрд▓рдЯрдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХрд╛ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред


рдореЗрд░реА рд╕реЛрдЪ рдореЗрдВ рджреЛрд╖ рдХрд╣рд╛рдБ рд╣реИ?

@pfalcon

рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рд╡рд╛рд╕рдо рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИ - "рдмрд╣реБрдд рд╕рд░рд▓" "рд╕рдВрд░рдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣" рд╕реЗ рдПрд╕рдПрд╕рдП рдлреЙрд░реНрдо рдореЗрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

VMs рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: рдореИрдВ рд╕реАрдзреЗ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ред рд▓реЗрдХрд┐рди IIRC рдиреЗ рдЙрд╕ рджрд┐рди @titzer рдФрд░ @lukewagner рдиреЗ рдХрд╣рд╛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдерд╛ - рд╢рд╛рдпрдж рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд░реЗрдбреНрдпреВрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рд╡рд╣рд╛рдВ рдкреВрд░рд╛ рдореБрджреНрджрд╛ рдерд╛ рдпрд╛ рдирд╣реАрдВред рдФрд░ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЙрди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ рдЬрд┐рдирдХрд╛ рдЖрдк рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред

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

@рдиреАрд▓рд╛рдВрд╕

рдпрджрд┐ CFG рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдо рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рддреЛ рд╕рдм рдареАрдХ рд╣реИ рдФрд░ wasm VM рдЗрд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХреЛрдИ рднреА рдЕрдиреБрд╡рд╛рдж рдкрд╛рд╕ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдорд╛рдорд▓рд╛ рд╣реИ рдФрд░ рддреНрд╡рд░рд┐рдд рдХрд╛рд░реНрдп рдХрд░реЗрдВред рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рд╕реАрдПрдлрдЬреА рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рд╕реЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрдореА рдирд╣реАрдВ рдЖрдиреА рдЪрд╛рд╣рд┐рдПред

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

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

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рд╕реАрдПрдлрдЬреА рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рд╕реЗ рддреЗрдЬреА рд╕реЗ рдорд╛рдорд▓рд╛ рдзреАрдорд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдЗрд░реЗрдбреНрдпреВрд╕рд┐рдмрд▓ рд╡рд╛рд▓реЗ рдХреЛ рдПрдХ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдПрдиреНрдХреЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬреИрд╕реЗ рдХрд┐ рдлрдВрдХрд▓реЗрдЯреНрд╕ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ)ред

@рдХреНрд░рд┐рдкрдХреЗрди

рдЖрдкрдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдпреЗ рдзрдиреНрдпрд╡рд╛рджред

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

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

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

@рдиреАрд▓рд╛рдВрд╕

рд╣рд╛рдВ, рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рд╣рдо рдПрдХ рдирдпрд╛ рдирд┐рд░реНрдорд╛рдг рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ - рдЬреИрд╕реЗ рдлрдВрдХрд▓реЗрдЯ - рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рд╕реЗ, рдпрд╣ рдореМрдЬреВрджрд╛ рдорд╛рдорд▓реЗ рдХреЛ рдзреАрдорд╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

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

рдХреБрдЫ wasm рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗрд╡рд▓ рдЧрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ, рдЬреИрд╕реЗ GC (рдЬреЛ JS рдХреЗ рд╕рд╛рде рд╕рд╛рдЗрдХрд┐рд▓ рд╕рдВрдЧреНрд░рд╣ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ)ред рд▓реЗрдХрд┐рди рдЧрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП, рдлрд╝рдВрдХрд▓реЗрдЯреНрд╕ рдХреА рддрд░рд╣, рд╣рдореЗрдВ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдЧрддрд┐ рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рд╕рд╣реА рдард╣рд░рд╛рддреА рд╣реИред рд╣рдордиреЗ SIMD рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣ рдмрд╣рд╕ рдХреА рдереА рдЬреЛ рдЧрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рд╣реИ, рдФрд░ рдпрд╣ рддрдп рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЛрдб (2x рдпрд╛ рдЙрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ) рдкрд░ рдмрд╣реБрдд рдмрдбрд╝реЗ рд╕реНрдкреАрдбрдЕрдк рдХреЛ рдордЬрд╝рдмреВрддреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

(рд╕рд╛рдорд╛рдиреНрдп CFG рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЧрддрд┐ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рд▓рд╛рдн рд╣реИрдВ, рдореИрдВ рд╕рд╣рдордд рд╣реВрдБ, рдЬреИрд╕реЗ рдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдХреЗ рд▓рд┐рдП wasm рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдирд╛ред рд▓реЗрдХрд┐рди рд╣рдо wasm VMs рдореЗрдВ рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдЬреЛрдбрд╝реЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА LLVM рдФрд░ Binaryen рдореЗрдВ рдордирдорд╛рдиреЗ CFG рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред , рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ рдХреЛ CFGs рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рд╕рдВрд░рдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо - рдЙрдкрдХрд░рдг рд▓реЛрдЧреЛрдВ рдХрд╛ рдорддрд▓рдм рд╣реИ, рдореЗрд░реЗ рд╕рд╣рд┐рдд - рдФрд░ рдЕрдзрд┐рдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред)

Funclet рдХреА рдЧрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрддрдирд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рд╡реЗ рдЧреИрд░-рддреБрдЪреНрдЫ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рд╡рд╛рд▓реА рднрд╛рд╖рд╛рдУрдВ рдХреЛ WebAssembly рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИрдВ, рд╕реА рдФрд░ рдЧреЛ рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИрдВ рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрд╕рд┐рдВрдХ/рдкреНрд░рддреАрдХреНрд╖рд╛ рд╣реЛрддреА рд╣реИред рд╕рд╛рде рд╣реА, рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рд░рдЦрдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ VMs рдореЗрдВ _more_ рдмрдЧ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рддрдереНрдп рд╕реЗ рдкреНрд░рдорд╛рдгрд┐рдд рд╣реИ рдХрд┐ V8 рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╕рднреА Wasm рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ CFG рдореЗрдВ рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЛ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рддреЗ рд╣реИрдВред CFG рдореЗрдВ EBB, Wasm рдФрд░ рдЕрдзрд┐рдХ рдореЗрдВ рдХрдИ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдирд┐рд░реНрдорд╛рдг рд╣реЛрдиреЗ рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдо рдмрдЧ рд╣реЛрддреЗ рд╣реИрдВред

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд▓рд╛рдЗрдЯрдмреАрдо, рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓, рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХрдВрдкрд╛рдЗрд▓рд░, рдиреЗ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдиреБрд╡рд╛рдж рдЪрд░рдг рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рдЧрд▓рдд рд╕рдВрдХрд▓рди рдмрдЧ рдореЗрдВ рднрд╛рд░реА рдХрдореА рджреЗрдЦреА, рдЬрд┐рд╕рдиреЗ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЛ рд╕реАрдПрдлрдЬреА рдореЗрдВ рд╡рд┐рдШрдЯрд┐рдд рдХрд░ рджрд┐рдпрд╛ред рдпрд╣ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреВрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рд▓рд┐рдП рджреЛрдЧреБрдирд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ - Relooper рдлрдВрдХрд▓реЗрдЯ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рддреНрд░реБрдЯрд┐-рдкреНрд░рд╡рдг рд╣реИ, рдФрд░ рдореБрдЭреЗ LLVM рдХреЗ рд▓рд┐рдП Wasm рдмреИрдХрдПрдВрдб рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рдЕрдиреНрдп рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ funclets рдереЗ, рд╡реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░реЗрдВрдЧреЗ рдХреЛрдбрдЬреЗрди рдХреА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдФрд░ рд╕рд░рд▓рддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдХреЗрд▓реЗ рдлрдВрдХрд▓реЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред Wasm рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХрдВрдкрд╛рдЗрд▓рд░ EBB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, Wasm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ EBB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдлрд╝рдВрдХрд▓реЗрдЯ рдпрд╛ CFG рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реАрдХреЗ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдмрд╕ рдмреАрдЪ рдореЗрдВ рдПрдХ рд╣рд╛рдирд┐рдХрд╛рд░рдХ рдХрджрдо рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ рдЬреЛ V8 рдЯреАрдо рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рд╕рднреА рдкрдХреНрд╖реЛрдВ рдХреЛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛рддрд╛ рд╣реИред .

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

@ рд╡реБрд░рд┐рдЦ

рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рддрд┐рдмрдВрдз рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдлрдВрдХрд▓реЗрдЯреНрд╕ рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХрдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдорд╛рдореВрд▓реА рдирд╣реАрдВ рд╣реИ - рд╡реАрдПрдо рдХреЛ рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рд░реИрдЦрд┐рдХ рдкрд╛рд╕ рдореЗрдВ рд╕рдВрднрд╡ рд╣реИ, рдЬреЛ рдмреЗрд╕рд▓рд╛рдЗрди рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреА, рдЬреЛ рдЕрдм рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡реАрдПрдо рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВред (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЗрд╡рд▓ рд▓реВрдк рдмреИрдХреЗрдЬ рдвреВрдВрдврдирд╛ - рдЬреЛ рдПрдХ рдЖрд╕рд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдФрд░ рдЕрдиреНрдп рдХрд╛рд░рдгреЛрдВ рд╕реЗ рднреА рдЬрд░реВрд░реА рд╣реИ - рдПрдХ рдлреЙрд░рд╡рд░реНрдб рдкрд╛рд╕ рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣реИ рдирд╛?)

V8 рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╕рднреА Wasm рдХрдВрдкрд╛рдЗрд▓рд░ рд╡реИрд╕реЗ рднреА CFG рдореЗрдВ рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЛ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдЖрдк TurboFan рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ "рд╕реА рдСрдл рдиреЛрдбреНрд╕" рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдореИрдВ рдЙрд╕ рдкрд░ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд╣реАрдВ рд╣реВрдВ рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рджреВрд╕рд░реЛрдВ рдХреЛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ред

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

рдлрд╝рдВрдХрд▓реЗрдЯ рдХреА рдЧрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрддрдирд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рд╡реЗ рдЧреИрд░-рддреБрдЪреНрдЫ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рд╡рд╛рд▓реА рднрд╛рд╖рд╛рдУрдВ рдХреЛ WebAssembly [..] рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИрдВ

рдореИрдВ рдЯреВрд▓ рд╕рд╛рдЗрдб рдкрд░ 100% рд╕рд╣рдордд рд╣реВрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рд╕реЗ рд╕рдВрд░рдЪрд┐рдд рдХреЛрдб рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдирд╛ рдХрдард┐рди рд╣реИ! рд▓реЗрдХрд┐рди рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╡реАрдПрдо рдкрдХреНрд╖ рдкрд░ рдЗрд╕реЗ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣реА рд╡рд╣ рд╣реИ рдЬрд┐рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕реЗ, рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдбрд╛рдЙрдирд╕рд╛рдЗрдбреНрд╕ рд╕рд╣рд┐рдд рдЯреНрд░реЗрдбрдСрдлрд╝ рд╣реИрдВред

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

рдпрд╣ рд╕рдм рджреЗрдЦрддреЗ рд╣реБрдП, рд░рдЪрдирд╛рддреНрдордХ рд╣реЛрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реБрдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдореМрдЬреВрджрд╛ рдореБрджреНрджреЛрдВ рдХреЛ рдЯреВрд▓ рд╕рд╛рдЗрдб рдкрд░ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдкрдХрд░рдг рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд, рдмрд╣реБрдд рдХрдо рдмрд╛рд░ рд╣реИред рджреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд╕реБрдЭрд╛рд╡:

  • рдореИрдВ рдмрд╛рдЗрдирд░реА рд╕реАрдПрдлрдЬреА рдХреЛрдб рдХреЛ рдЧреЛ рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЕрдЧрд░ рдЗрд╕рд╕реЗ рдЧреЛ рдХрдВрдкрд╛рдЗрд▓рд░ - @neelance рдХреЛ рдорджрдж рдорд┐рд▓реЗрдЧреА?
  • рд╣рдо рдлрд╝рдВрдХрд▓реЗрдЯ рдпрд╛ рдЙрдирдХреЗ рдЬреИрд╕реЗ рдХреБрдЫ рдХреЛ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдЯреВрд▓ рд╕рд╛рдЗрдб рдкрд░ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрд░реНрдерд╛рддреН, рд╣рдо рдЖрдЬ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рдЗрдирд░реА рдкреНрд░рд╛рд░реВрдк рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред (wasm рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ, рдЯреВрд▓ рд╕рд╛рдЗрдб рдкрд░ wasm рдмрд╛рдЗрдирд░реА рдлреЙрд░реНрдореЗрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд┐рд╕рд╛рд▓ рд╣реИред)

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

рдпрджрд┐ рдЗрд╕ рдкрд░ рдХреЛрдИ рдареЛрд╕ рдХрд╛рд░реНрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ (AFAIU) рдЗрд╕реЗ рд╡рд╛рд╕рдо рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рддрд░реАрдХрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ @rossberg рдиреЗ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рд╣реИ ) рдмреНрд▓реЙрдХ рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдкреЗрд╢ рдХрд░рдирд╛ рд╣реЛрдЧрд╛

рдорд▓реНрдЯреАрд▓реВрдк (t in ) _n_ t out (_instr_* end ) _n_

рдЬреЛ n рд▓реЗрдмрд▓ рд╡рд╛рд▓реЗ рдирд┐рдХрд╛рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ (n рдЗрдирдкреБрдЯ рдкреНрд░рдХрд╛рд░ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдЕрдЧреНрд░реЗрд╖рд┐рдд рдШреЛрд╖рд┐рдд)ред рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ br рдкрд░рд┐рд╡рд╛рд░ рдХреЛ рддрдм рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдорд▓реНрдЯреАрд▓реВрдк рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рднреА рд▓реЗрдмрд▓ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдХрд╛рдп рдХреЗ рднреАрддрд░ рдЗрди-рд╕реНрдХреЛрдк рд╣реЛрдВ, рдХреНрд░рдо рдореЗрдВ (рдЬреИрд╕рд╛ рдХрд┐, рдХрд┐рд╕реА рднреА рдирд┐рдХрд╛рдп рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдирд┐рдХрд╛рдп рдХреЗ рднреАрддрд░ рд╕реЗ рдорд▓реНрдЯреАрд▓реВрдк рдмреЙрдбреА рдХреЛ

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

рдпрд╣ рдлрд╝рдВрдХрд▓реЗрдЯреНрд╕ рдХреЗ рд╕рдорд╛рди рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рд╕реНрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдирд┐рдпрдВрддреНрд░рдг рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдПрдХ рдирдП рд╕реНрдерд╛рди рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЧрд░ рдлрдВрдХрд▓реЗрдЯреНрд╕ рдХреЛ рдФрд░ рдЖрдЧреЗ рдмрдврд╝рд╛рдпрд╛ рдЧрдпрд╛ рд╣реЛрддрд╛ рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрджрд▓ рдЧрдпрд╛ рд╣реЛрддрд╛ред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдлреЙрд▓-рдереНрд░реВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЯреНрд╡реАрд╡ рдХрд░рдирд╛ рдФрдкрдЪрд╛рд░рд┐рдХ рдЕрд░реНрдерд╢рд╛рд╕реНрддреНрд░ рдХреЛ рдорд╛рдореВрд▓реА рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж

рдЗрдВрдЬрдиреЛрдВ рдХреЛ рд╕рд░рд▓/рддреЗрдЬрд╝ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдСрдлрд╝рд▓реЛрдбрд┐рдВрдЧ рдХрд╛рд░реНрдп рдХрд╛ рд╡рд╛рд╕рдо рдбрд┐рдЬрд╝рд╛рдЗрди рд╕рд┐рджреНрдзрд╛рдВрдд рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдФрд░ рдпрд╣ рдмрд╣реБрдд рдлрд╛рдпрджреЗрдордВрдж рд░рд╣реЗрдЧрд╛ред

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

рдлрд╝рдВрдХрд▓реЗрдЯ (рдпрд╛ рдорд▓реНрдЯреАрд▓реВрдк) рдЬреИрд╕рд╛ рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЙрдбреНрдпреВрд▓рд░ рд╣реИ: рдпрджрд┐ рдХрд┐рд╕реА рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рддреЛ рдЪреАрдЬреЗрдВ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░реЗрдВрдЧреАред рдпрджрд┐ рдХреЛрдИ рдЗрдВрдЬрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдордирдорд╛рдиреЗ CFG рд╕реЗ рдирд┐рдкрдЯ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдлрд┐рд▓рд╣рд╛рд▓ рд╡реЗ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рдПрдХ loop + br_table рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реЛ, рдФрд░ рдХреЗрд╡рд▓ рд╡реЗ рдЬреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рд╡реЗ рдХреАрдордд рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░рддреЗ рд╣реИрдВ . рдлрд┐рд░, "рдмрд╛рдЬрд╛рд░ рдлреИрд╕рд▓рд╛ рдХрд░рддрд╛ рд╣реИ" рдФрд░ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЗрдВрдЬрдиреЛрдВ рдкрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдХреЛрдб рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рджрдмрд╛рд╡ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдХреБрдЫ рдореБрдЭреЗ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд╛рд╕рдо рдХреЛрдб рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдлрдВрдХрд▓реЗрдЯреНрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрдВрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдирдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдХреЛрдб рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЖрдкрджрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдбрд╝рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рд▓рдЧрддрд╛ рд╣реИред

рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдорд╛рдореВрд▓реА рдирд╣реАрдВ рд╣реИ - рд╡реАрдПрдо рдХреЛ рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рд░реИрдЦрд┐рдХ рдкрд╛рд╕ рдореЗрдВ рд╕рдВрднрд╡ рд╣реИ, рдЬреЛ рдмреЗрд╕рд▓рд╛рдЗрди рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреА, рдЬреЛ рдЕрдм рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡реАрдПрдо рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдмреЗрд╕рд▓рд╛рдЗрди рдХрдВрдкрд╛рдЗрд▓рд░ рдХреА рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЧрд▓рдд рд╕рдордЭ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдХреНрдпреЛрдВ рдкрд░рд╡рд╛рд╣ рдХрд░реЗрдВрдЧреЗ? рдпрджрд┐ рдЖрдк рдПрдХ рдЧреЛрдЯреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдЬрдВрдк рдирд┐рд░реНрджреЗрд╢ рдбрд╛рд▓реЗрдВред

рдореИрдВ рдЯреВрд▓ рд╕рд╛рдЗрдб рдкрд░ 100% рд╕рд╣рдордд рд╣реВрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рд╕реЗ рд╕рдВрд░рдЪрд┐рдд рдХреЛрдб рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдирд╛ рдХрдард┐рди рд╣реИ! рд▓реЗрдХрд┐рди рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╡реАрдПрдо рдкрдХреНрд╖ рдкрд░ рдЗрд╕реЗ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣реА рд╡рд╣ рд╣реИ рдЬрд┐рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕реЗ, рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдбрд╛рдЙрдирд╕рд╛рдЗрдбреНрд╕ рд╕рд╣рд┐рдд рдЯреНрд░реЗрдбрдСрдлрд╝ рд╣реИрдВред

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

рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдорд╛рдореВрд▓реА рдирд╣реАрдВ рд╣реИ - рд╡реАрдПрдо рдХреЛ рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рд░реИрдЦрд┐рдХ рдкрд╛рд╕ рдореЗрдВ рд╕рдВрднрд╡ рд╣реИ, рдЬреЛ рдмреЗрд╕рд▓рд╛рдЗрди рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреА, рдЬреЛ рдЕрдм рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡реАрдПрдо рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВред (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЗрд╡рд▓ рд▓реВрдк рдмреИрдХреЗрдЬ рдвреВрдВрдврдирд╛ - рдЬреЛ рдПрдХ рдЖрд╕рд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдФрд░ рдЕрдиреНрдп рдХрд╛рд░рдгреЛрдВ рд╕реЗ рднреА рдЬрд░реВрд░реА рд╣реИ - рдПрдХ рдлреЙрд░рд╡рд░реНрдб рдкрд╛рд╕ рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣реИ рдирд╛?)

рдареАрдХ рд╣реИ, рдпрд╣рд╛рдБ рдмрд╛рдд рд╣реИ, рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░рд╛ рдЬреНрдЮрд╛рди рдкреВрд░реНрдг рдирд┐рд╢реНрдЪрд┐рддрддрд╛ рдХреЗ рд╕рд╛рде рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдордЬрдмреВрдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдХрдВрдЯреНрд░реЛрд▓ рдлреНрд▓реЛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╕рддреНрдпрд╛рдкрди рд╕рдВрдХрд▓рди рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рдЬреЛ рди рддреЛ рдЖрдк рдФрд░ рди рд╣реА рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд╣реАрдВ рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЖрдк рдПрдХ рдЧреИрд░-рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ (рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ) рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдЕрдирдВрдд рд▓реВрдк рдХреА рддрд░рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рдЦрд░рд╛рдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рд╕рдВрдХрд▓рди рдХреЛ рд╕рдордп-рд╕рдордп рдкрд░ рд╕рдорд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░/рдпрд╛ рд╕рдВрдХрд▓рди рдереНрд░реЗрдб рдХреЛ рд░рджреНрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдорд╛рдирдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ рдХрд┐ рдРрд╕рд╛ рд╣реЛрдЧрд╛ред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдмреЗрд╕рд▓рд╛рдЗрди рдХрдВрдкрд╛рдЗрд▓рд░ рдХреА рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЧрд▓рдд рд╕рдордЭ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдХреНрдпреЛрдВ рдкрд░рд╡рд╛рд╣ рдХрд░реЗрдВрдЧреЗ? рдпрджрд┐ рдЖрдк рдПрдХ рдЧреЛрдЯреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдЬрдВрдк рдирд┐рд░реНрджреЗрд╢ рдбрд╛рд▓реЗрдВред

рднреМрддрд┐рдХ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЗ рд╕реАрдорд┐рдд рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╡рд╛рд╕рдо рдХреА рдЕрдирдВрдд рд░рдЬрд┐рд╕реНрдЯрд░ рдорд╢реАрди (рдирд╣реАрдВ, рдпрд╣ рдПрдХ рд╕реНрдЯреИрдХ рдорд╢реАрди рдирд╣реАрдВ рд╣реИ ) рдХреЛ рдореИрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдХрд╛рд░рдг рдпрд╣ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рднреА рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдСрд░реНрдереЛрдЧреЛрдирд▓ рд╣реИ CFG рдмрдирд╛рдо рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ред

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

рдХреЛрдИ рднреА рдорд╛рдорд▓рд╛ рдЬрд┐рд╕рдореЗрдВ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд┐рдЦрдирд╛ рдХрдард┐рди рдмрдирд╛ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдореИрдВ рдХрд┐рд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪ рд╕рдХрддрд╛, рдмрд╕ рд╕реНрдЯрдм рдЖрдЙрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдкрдХреЛ 100% рдирд┐рд╢реНрдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ, рдЧреИрд░-рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдлреНрд▓реЛ рдЗрд░реЗрдбреНрдпреВрд╕рд┐рдмрд▓ рд╣реИ (рдЗрд╕рд▓рд┐рдП рдЖрдк рдЧрд▓рддреА рд╕реЗ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдХрдВрдЯреНрд░реЛрд▓ рдлреНрд▓реЛ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ) рддреЛ рд╡рд╣ рдмреЗрд╕рд▓рд╛рдЗрди рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реЗ рд╣реА рдЕрд▓рдЧ рд╕реЗ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╡рд╣ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рдЕрдзрд┐рдХрд╛рд░ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдмрдЪреВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдШрд╕реАрдЯрд╛ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ) рдХрд┐ рдПрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореМрдЬреВрдж рд╣реИ рдПрдХ CFG рдХреА рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рдореИрдВ рдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ рдХрд┐ рдпрд╣ рд╕рдЪ рд╣реИред

@oridb

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдмреЗрд╕рд▓рд╛рдЗрди рдХрдВрдкрд╛рдЗрд▓рд░ рдХреА рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЧрд▓рдд рд╕рдордЭ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдХреНрдпреЛрдВ рдкрд░рд╡рд╛рд╣ рдХрд░реЗрдВрдЧреЗ? рдпрджрд┐ рдЖрдк рдПрдХ рдЧреЛрдЯреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдЬрдВрдк рдирд┐рд░реНрджреЗрд╢ рдбрд╛рд▓реЗрдВред

рдмреЗрд╕рд▓рд╛рдЗрди рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ рдХреЛ рдЕрднреА рднреА рд▓реВрдк рдмреИрдХреЗрдЬ рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдЪреЗрдХ рдбрд╛рд▓рдиреЗ рдЬреИрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ (рдЗрд╕ рддрд░рд╣ рд╡реЗрдм рдкрд░ рдПрдХ рд▓рдЯрдХрддрд╛ рд╣реБрдЖ рдкреГрд╖реНрда рдЕрдВрддрддрдГ рдзреАрдореА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрд╡рд╛рдж рджрд┐рдЦрд╛рдПрдЧрд╛), рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рд╛рде рд╣реА, рд╡реЗ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреБрд╢рд▓ рд░рдЬрд┐рд╕реНрдЯрд░ рдЖрд╡рдВрдЯрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ (рдмреЗрд╕рд▓рд╛рдЗрди рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ рдЕрдХреНрд╕рд░ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд┐рдВрдЧ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреА рдЧрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ 1/2 рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ - рдЬреЛ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕рд┐рдВрдЧрд▓-рдкрд╛рд╕ рд╣реИрдВ!) рдЬреБрдбрд╝рдиреЗ рдФрд░ рд╡рд┐рднрд╛рдЬрди рд╕рд╣рд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреА рд╕рдВрд░рдЪрдирд╛ рд╣реЛрдиреЗ рд╕реЗ рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

@gwvo

рдЙрд╕ рдиреЗ рдХрд╣рд╛, рд╕рдм рдХреБрдЫ рдЧреИрд░-рддреБрдЪреНрдЫ рдХреА рддрд░рд╣, рдпрд╣ рдПрдХ рд╡реНрдпрд╛рдкрд╛рд░-рдмрдВрдж рд╣реИ, рдХрд╛рд▓рд╛ рдФрд░ рд╕рдлреЗрдж рдирд╣реАрдВред [..] рд╣рдо рдмрд╣реБрдд рдЕрдзрд┐рдХ рд▓рд╛рдн рдХреЗ рд▓рд┐рдП рджреБрдирд┐рдпрд╛ рдХреЛ рд╣реБрдкреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдЫрд╛рд▓ рд░рд╣реЗ рд╣реИрдВред

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

рдлрд┐рд░, "рдмрд╛рдЬрд╛рд░ рдлреИрд╕рд▓рд╛ рдХрд░рддрд╛ рд╣реИ" рдФрд░ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЗрдВрдЬрдиреЛрдВ рдкрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдХреЛрдб рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рджрдмрд╛рд╡ рд╣реИ рдпрд╛ рдирд╣реАрдВред

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

@ рд╡реБрд░рд┐рдЦ

рдореИрдВрдиреЗ рдмреЗрд╕рд▓рд╛рдЗрди рдХрдВрдкрд╛рдЗрд▓рд░ рдкрд░ рдПрдХ рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рдореЗрд░рд╛ рдЬреАрд╡рди рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ рдФрд░ рдПрдХ рдЕрдВрддрд░рд┐рдо рдХрджрдо рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХреЛрдб рддреЗрдЬ рд╣реЛ рдЧрдпрд╛ рдЬрд┐рд╕рдиреЗ рд╡рд╛рд╕рдо рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЛ рд╕реАрдПрдлрдЬреА рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ред

рдмрд╣реБрдд рд╣реА рд░реЛрдЪрдХ! рд╡рд╣ рдХреМрди рд╕рд╛ рд╡реАрдПрдо рдерд╛?

рдореИрдВ рднреА рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрддреНрд╕реБрдХ рд╣реЛрддрд╛ рдЕрдЧрд░ рдпрд╣ рдПрдХ рд╕рд┐рдВрдЧрд▓-рдкрд╛рд╕/рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдерд╛ рдпрд╛ рдирд╣реАрдВ (рдпрджрд┐ рдРрд╕рд╛ рдерд╛, рддреЛ рдпрд╣ рд▓реВрдк рдмреИрдХреЗрдЬ рдЗрдВрд╕реНрдЯреНрд░реБрдореЗрдВрдЯреЗрд╢рди рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ?), рдФрд░ рдпрд╣ рдЖрд╡рдВрдЯрди рдХреИрд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред

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

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

рд░рдЬрд┐рд╕реНрдЯрд░ рдЖрд╡рдВрдЯрди рдХреЗ рд▓рд┐рдП: рдпрд╣ рд╕рд┐рд░реНрдл рдорд╛рдирдХ рд░реИрдЦрд┐рдХ рд╕реНрдХреИрди рд░рдЬрд┐рд╕реНрдЯрд░ рдЖрд╡рдВрдЯрди рд╣реИ ред рд░рдЬрд┐рд╕реНрдЯрд░ рдЖрд╡рдВрдЯрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрд░ рдХрд╛ рдЬреАрд╡рдирдХрд╛рд▓ рдЪрд░ рдХреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рд╕реЗ рд▓реЗрдХрд░ рдЕрдВрддрд┐рдо рдЙрд▓реНрд▓реЗрдЦ рддрдХ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдмреНрд▓реЙрдХ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдмреАрдЪ рдореЗрдВ рд░реИрдЦрд┐рдХ рд░реВрдк рд╕реЗ рд╣реЛрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрджрд┐ рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рдЗрдзрд░-рдЙрдзрд░ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдЕрдзрд┐рдХ рдЬреАрд╡рдирдХрд╛рд▓ рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЪреАрдЬреЛрдВ рдХреЛ рдвреЗрд░ рдореЗрдВ рдЧрд┐рд░рд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХрдорд╛рддреНрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЧрдд рдкреНрд░рддреНрдпреЗрдХ рдЪрд░ рдХреЗ рдкрд╣рд▓реЗ рдФрд░ рдЕрдВрддрд┐рдо рдЙрд▓реНрд▓реЗрдЦ рдХреЛ рдЯреНрд░реИрдХ рдХрд░ рд░рд╣реА рд╣реИ, рдЬреЛ рдПрдХ рдПрдХрд▓ рд░реИрдЦрд┐рдХ рд╕реНрдХреИрди рдХреЗ рд╕рд╛рде рд╕рднреА рдЪрд░ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред (wasm рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "рдЪрд░" рдпрд╛ рддреЛ рд╕реНрдерд╛рдиреАрдп рдпрд╛ рд╕реНрдЯреИрдХ рд╕реНрд▓реЙрдЯ рд╣реИред)

@рдХреНрд░рд┐рдкрдХреЗрди

рдореИрдВ рдмрд╛рдЗрдирд░реА рд╕реАрдПрдлрдЬреА рдХреЛрдб рдХреЛ рдЧреЛ рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЕрдЧрд░ рдЗрд╕рд╕реЗ рдЧреЛ рдХрдВрдкрд╛рдЗрд▓рд░ - @neelance рдХреЛ рдорджрдж рдорд┐рд▓реЗрдЧреА?

Asyncify рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП? рдХреГрдкрдпрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВред

@comex

рдЕрдЪреНрдЫреЗ рдЕрдВрдХ!

рдПрдХрдорд╛рддреНрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЧрдд рдкреНрд░рддреНрдпреЗрдХ рдЪрд░ рдХреЗ рдкрд╣рд▓реЗ рдФрд░ рдЕрдВрддрд┐рдо рдЙрд▓реНрд▓реЗрдЦ рдХреЛ рдЯреНрд░реИрдХ рдХрд░ рд░рд╣реА рд╣реИ

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

рдЖрд╡рдВрдЯрди рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП V8 рдХрд╛ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрдм рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рд░реВрдк рд╕реЗ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛рддреА рд╣реИ (рдЬреИрд╕реЗ рдХрд┐ https://github.com/WebAssembly/design/issues/796#issuecomment-742690194), рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдПрдХрдорд╛рддреНрд░ рдЬреАрд╡рдирдХрд╛рд▓ рд╕реЗ рдирд┐рдкрдЯрддреЗ рд╣реИрдВ рдПрдХ рд╣реА рдмреНрд▓реЙрдХ (рд╕реНрдЯреИрдХ) рдХреЗ рднреАрддрд░ рдмрдВрдзреЗ рд╣реИрдВ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди-рд╡рд╛рдЗрдб (рд╕реНрдерд╛рдиреАрдп) рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

IIUC ( рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ) V8 рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдореБрджреНрджрд╛ CFG рдХреЗ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ рдЬрд┐рд╕реЗ Turbofan рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

@рдХреНрд░рд┐рдкрдХреЗрди

рд╣рдордиреЗ VM рдкрд░ wasm рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЬрдЯрд┐рд▓ рдЕрдиреБрдХреВрд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдПрд▓рдПрд▓рд╡реАрдПрдо (рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдорд╛рд░реЗ # 1 рд╡рд╛рд╕рдо рдирд┐рд░реНрдорд╛рддрд╛) рдлрд╝рдВрдХрд▓реЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдЖрд╢реНрд╡рд╕реНрдд рди рд╣реЛ рдХрд┐ рдпрд╣ рдкреНрд░рдореБрдЦ рдЗрдВрдЬрдиреЛрдВ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рддрд┐рдЧрдорди рдирд╣реАрдВ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж @Vurich , рджрд┐рд▓рдЪрд╕реНрдкред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЗ рд▓рд┐рдП рд▓реЗрдХрд┐рди рдереНрд░реВрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдкрд░ рдкреВрд░реНрдг рд╕рдВрдЦреНрдпрд╛ рджреЗрдЦрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг V8 рдФрд░ рд╕реНрдкрд╛рдЗрдбрд░рдореЛрдиреНрдХреА рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдП рдЧрдП рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдзреАрд░реЗ-рдзреАрд░реЗ рд╕рдВрдХрд▓рд┐рдд рд╣реЛрдЧрд╛, рдЬрдмрдХрд┐ рддреЗрдЬрд╝ рдХреЛрдб рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░реЗрдЧрд╛ред рддреЛ рдпрд╣ рдЗрд╕ рд╕реНрдкреЗрд╕ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдЯреНрд░реЗрдбрдСрдл рд╣реИред рдпрд╣ рдкреНрд░рд╢рдВрд╕рдиреАрдп рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг wasm рдХреЗ рд╕рдВрд░рдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рд╕реЗ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдХрд╣рд╛, рдЬрдмрдХрд┐ рдЙрдирдХрд╛ рдХрд░рддрд╛ рд╣реИред

рдирд╣реАрдВ, рдпрд╣ рдПрдХ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХрдВрдкрд╛рдЗрд▓рд░ рд╣реИ рдФрд░ рдЙрди рджреЛ рдЗрдВрдЬрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдХреЛрдб рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдРрд╕реЗ рдЦрд░рд╛рдм рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬреЛ рдЙрд╕ рд╕рдордп рддрдп рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рдереЗ рдЬрдм рдореИрдВрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЫреЛрдбрд╝рд╛ рдерд╛)ред рдЬрдмрдХрд┐ рдореИрдВрдиреЗ рддреЗрдЬреА рд╕реЗ рдХреЛрдб рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдкреВрд░реА рдХреЛрд╢рд┐рд╢ рдХреА, рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдорд╛рдзреНрдпрдорд┐рдХ рдЪрд┐рдВрддрд╛ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреА рджрдХреНрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдХреЛрдб рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд▓рд╛рдЧрдд, рдореЗрд░реЗ рдЬреНрдЮрд╛рди рдХреЗ рд▓рд┐рдП, рд╢реВрдиреНрдп рд╣реИ (рд╡рд╛рд╕реНрдордЯрд╛рдЗрдо рдХреА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд▓рд╛рдЧрдд рд╕реЗ рдКрдкрд░ рдЬреЛ рдмреИрдХрдПрдВрдб рдХреЗ рдмреАрдЪ рд╕рд╛рдЭрд╛ рдХреА рдЬрд╛рддреА рд╣реИ) рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдЕрдирд┐рдпрдорд┐рдд рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рдФрд░ рд╕рдВрдХрд▓рди рдирд┐рд░реНрджреЗрд╢-рджрд░-рдирд┐рд░реНрджреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдмрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ V8 рдпрд╛ рд╕реНрдкрд╛рдЗрдбрд░рдореЛрдиреНрдХреА рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдЦреНрдпрд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдХреНрд░реЗрдирд▓рд┐рдлреНрдЯ (wasmtime рдореЗрдВ рдкреНрд░рд╛рдердорд┐рдХ рдЗрдВрдЬрди) рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдЦреНрдпрд╛рдПрдВ рд╣реИрдВред рд╡реЗ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдХрдИ рдорд╣реАрдиреЗ рдкреБрд░рд╛рдиреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рди рдХреЗрд╡рд▓ рдХреНрд░реЗрдирд▓рд┐рдлреНрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдХреЛрдб рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдпрд╣ рдХреНрд░реЗрдирд▓рд┐рдлреНрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬ рдХреЛрдб рднреА рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрд╕ рд╕рдордп, рдпрд╣ рд╕реНрдкрд╛рдЗрдбрд░рдореЙрдиреНрдХреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬрд╝ рдХреЛрдб рднреА рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рддрд╛ рдерд╛, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдореЗрд░реА рдмрд╛рдд рдорд╛рдирдиреА рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдореБрдЭ рдкрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдореИрдВ рдЖрдкрдХреЛ рджреЛрд╖ рдирд╣реАрдВ рджреВрдБрдЧрд╛ред рдЬрдмрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рд╣рд╛рде рдореЗрдВ рд╣рд╛рд▓ рдХреЗ рдирдВрдмрд░ рдирд╣реАрдВ рд╣реИрдВ, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдЕрдм рд░рд╛рдЬреНрдп рдпрд╣ рд╣реИ рдХрд┐ рдХреНрд░реЗрдирд▓рд┐рдлреНрдЯ рдФрд░ рд╕реНрдкрд╛рдЗрдбрд░рдореЛрдиреНрдХреА рджреЛрдиреЛрдВ рдиреЗ рдЫреЛрдЯреЗ рдореБрдЯреНрдареА рднрд░ рдмрдЧреЛрдВ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдЬреЛ рд▓рд╛рдЗрдЯрдмреАрдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрди рдорд╛рдЗрдХреНрд░реЛрдмреЗрдВрдЪрдорд╛рд░реНрдХ рдореЗрдВ рдЙрдирдХреЗ рдХрдо рдкреНрд░рджрд░реНрд╢рди рд╡рд╛рд▓реЗ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдореБрдЦреНрдп рд╕реНрд░реЛрдд рдереЗред рд▓реЗрдХрд┐рди рд╕рдВрдХрд▓рди рдЧрддрд┐ рдЕрдВрддрд░ рдЙрд╕ рдкреВрд░реЗ рд╕рдордп рдореЗрдВ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрдм рдореИрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдХрд▓рдХ рдЕрднреА рднреА рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдорд╛рди рд╣реИ, рдФрд░ рдпрд╣ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╣реИ рдЬреЛ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрддрд░реЛрдВ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рдЬрдмрдХрд┐ рдореИрдВ рдЖрдкрдХреА рдЕрдЯрдХрд▓реЛрдВ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЖрдкрдХреА рдпрд╣ рдзрд╛рд░рдгрд╛ рдХрд╣рд╛рдВ рд╕реЗ рдЖрдИ рд╣реИ рдХрд┐ рдЬрд┐рд╕ рд╡рд┐рдзрд┐ рдХреЛ рдореИрдВрдиреЗ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рдзреАрдореА рд╣реЛрдЧреАред

рдпрд╣рд╛рдВ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╣реИрдВ, ::compile рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╕рдВрдХрд▓рди рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рд╣реИрдВ рдФрд░ ::run рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдорд╢реАрди рдХреЛрдб рдЖрдЙрдЯрдкреБрдЯ рдХреА рдирд┐рд╖реНрдкрд╛рджрди рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рд╣реИрдВред https://gist.github.com/Vurich/8696e67180aa3c93b4548fb1f298c29e

рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рдпрд╣рд╛рдВ рд╣реИ, рдЖрдк рдЗрд╕реЗ рдХреНрд▓реЛрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдкреАрдЖрд░ рд╕рдВрднрд╡рддрдГ wasmtime рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрдд рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЙрд╕ рд╕рдордп рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛ рджрд┐рдЦрд╛рдПрдЧрд╛ рдЬрдм рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдерд╛ред рдЬрдирд╕рдВрдкрд░реНрдХ https://github.com/bytecodealliance/wasmtime/pull/1660

рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдореЗрд░рд╛ рддрд░реНрдХ _not_ рд╣реИ рдХрд┐ CFG рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧреА рдЖрдВрддрд░рд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИред рдореЗрд░рд╛ рддрд░реНрдХ рдпрд╣ рд╣реИ рдХрд┐ CFG рдХрд┐рд╕реА рднреА рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдирдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрд╕ рд╕реНрддрд░ рддрдХ рдирд╣реАрдВ рдЬреЛ GCC рдФрд░ Go рдЯреАрдореЛрдВ рдХреЛ WebAssembly рдХреЗ рдЙрддреНрдкрд╛рджрди рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓реЙрдХ рдХрд░рдиреЗ рдХрд╛ рдФрдЪрд┐рддреНрдп рд╕рд╛рдмрд┐рдд рдХрд░реЗрдЧрд╛ред рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рдиреЗ рднреА рдлрдВрдХрд▓реЗрдЯреНрд╕ рдпрд╛ рд╡рд╛рд╕рдо рдХреЗ рд╕рдорд╛рди рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдЦрд┐рд▓рд╛рдл рдмрд╣рд╕ рдХрд░рддреЗ рд╣реБрдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдЬрд┐рдирдХрд╛ рджрд╛рд╡рд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рд╕реЗ рдирдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрдВрдЧреЗред рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдЕрдиреБрднрд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдореВрд▓реНрдпрд╡рд╛рди рдЗрдирдкреБрдЯ рдХрд╛ рдХреБрдЫ рд╕реНрддрд░ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдмрд╛рдЗрдХрд╢реЗрдб рдХреЗ рд░рдВрдЧ рдкрд░ рдПрдХ рдЕрд▓рдЧ рд░рд╛рдп рд░рдЦрдиреЗ рдФрд░ рдмрдирд╛рдиреЗ рдХреЗ рдмреАрдЪ рдПрдХ рд░реЗрдЦрд╛ рд╣реИ рдмреЗрдХрд╛рд░ рдХреА рдЕрдЯрдХрд▓реЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдФрд░ рдХреБрдЫ рдирд╣реАрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рджрд╛рд╡реЗред

@ рд╡реБрд░рд┐рдЦ

рдирд╣реАрдВ, рдпрд╣ рдПрдХ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХрдВрдкрд╛рдЗрд▓рд░ рд╣реИ рдФрд░ рдЙрди рджреЛ рдЗрдВрдЬрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдХреЛрдб рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдРрд╕реЗ рдЦрд░рд╛рдм рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдХрднреА рддрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдерд╛)ред

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

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

рд▓реЗрдХрд┐рди рдХреГрдкрдпрд╛ рдЙрди рдмреЗрд╕рд▓рд╛рдЗрди рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ рдХреЗ рдЦрд┐рд▓рд╛рдл рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХрд░реЗрдВ! рдореБрдЭреЗ рдпрд╣ рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ рдХрд┐ рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рдЧрд▓рдд рд╣реИ, рдФрд░ рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рд╡реА 8 рдФрд░ рд╕реНрдкрд╛рдЗрдбрд░рдореЛрдиреНрдХреА рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдХреЛ рднреА рдРрд╕рд╛ рд╣реА рд╣реЛрдЧрд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдкрдХреЛ рдПрдХ рдмреЗрд╣рддрд░ рдбрд┐рдЬрд╝рд╛рдЗрди рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЕрдкрдирд╛рдиреЗ рдкрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

V8 рдХреЗ рдЦрд┐рд▓рд╛рдл рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк d8 --liftoff --no-wasm-tier-up рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕реНрдкрд╛рдЗрдбрд░рдореЛрдиреНрдХреА рдХреЗ рд▓рд┐рдП рдЖрдк sm --wasm-compiler=baseline рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред

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

рдореЗрд░рд╛ рдЕрдВрддрд░реНрдЬреНрдЮрд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдмреЗрд╕рд▓рд╛рдЗрди рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ рдХреЛ funclets/ multiloop рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╕рдВрдХрд▓рди рд░рдгрдиреАрддрд┐ рдХреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ @kripken рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд "рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреА рд╕рдВрд░рдЪрдирд╛, рдЬрд┐рд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдФрд░ рд╡рд┐рднрд╛рдЬрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ" рдкрд░ рднрд░реЛрд╕рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рд░реВрдк рд╕реЗ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЗрдирдкреБрдЯ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рд╣реЛрддрд╛ рд╣реИ (рдЬреЛ рд╡реИрд╕реЗ рднреА рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╡рд┐рдХрд▓реНрдк рд▓рдЧрддрд╛ рд╣реИ) . рд▓рд╛рдЗрдЯрдмреАрдо/рд╡рд╛рд╕рдордЯрд╛рдЗрдо рдЗрдВрдЬрди рдмреЗрд╕рд▓рд╛рдЗрди рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ рдХреЛ рд╣рд░рд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛; рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЗрдВрдЬрди рдмреЗрд╕рд▓рд╛рдЗрди рдХрдореНрдкрд╛рдЗрд▓рд░ рдЙрддрдиреЗ рд╣реА рддреЗрдЬ рд░рд╣ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рддрдиреЗ рдЕрднреА рд╣реИрдВред

рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдореБрдЭреЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕реАрдЬреА рдореАрдЯрд┐рдВрдЧ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рд▓рд╛рдП рдЧрдП рдЗрд╕ рдлреАрдЪрд░ рдХреЛ рджреЗрдЦрдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреА, рдФрд░ рдореИрдВ @Vurich рд╕реЗ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд╕рд╣рдордд рдкреНрд░реЙрдкрд░ рдЯреЗрд▓ рдХреЙрд▓реНрд╕ рдЧрд╛рдерд╛ рдХреЗ WebAssembly рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдмрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП)ред рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВ рдЕрдкрдирд╛ (рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдмрд╣реБрдд рджреЗрд░ рд╕реЗ) рдереАрд╕рд┐рд╕ рд╕рдмрдорд┐рд╢рди рд╕рдорд╛рдкреНрдд рдХрд░ рд▓реЗрддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдирдП рд╕рд╛рд▓ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реАрдЬреА рдЪрд░реНрдЪрд╛ рдкрд░ рдкрд╣рд▓рд╛ рдХрджрдо рдЙрдард╛рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

@рдХреНрд░рд┐рдкрдХреЗрди

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

рд╡рд╛рд╣, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред

рджреВрд╕рд░реА рдУрд░ ... рд╡рд╣ рд╡рд┐рд╢реЗрд╖ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрддрдирд╛ рд╕рд░рд▓ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрд░рдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЗ рдХрд┐рд╕реА рднреА рдЧрд╣рд░реЗ рдЧреБрдг рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдмрдореБрд╢реНрдХрд┐рд▓ рд╕рдВрд░рдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЗ рдЙрдерд▓реЗ рдЧреБрдгреЛрдВ рдкрд░ рднреА рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

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

рдирд┐рд╢реНрдЪрд┐рдд рдПрдмреАрдЖрдИ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ (x86 рдкрд░):

  • рдпрджрд┐ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдПрдХ рдЧреИрд░-рд╢реВрдиреНрдп рд╕рдВрдЦреНрдпрд╛ рд╣реИ (рдмреНрд▓реЙрдХ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреЗ рд╕рдордп) рдпрд╛ рд░рд┐рдЯрд░реНрди (рдмреНрд▓реЙрдХ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдкрд░), рддреЛ рд╡рд╛рд╕реНрдо рд╕реНрдЯреИрдХ рдХрд╛ рд╢реАрд░реНрд╖ rax рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╢реЗрд╖ рд╡рд╛рд╕реНрдо рд╕реНрдЯреИрдХ x86 рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рдвреЗрд░ред
  • рдЕрдиреНрдпрдерд╛, рд╕рдВрдкреВрд░реНрдг wasm рд╕реНрдЯреИрдХ x86 рд╕реНрдЯреИрдХ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред

рдпрд╣ рдХреНрдпреЛрдВ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ?

рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдмрд╣реБрдд рдХрдо рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рд╡рд┐рдЪрд╛рд░ рдкреНрд░рдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ, WebAssembly рдХреЗ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ-рдмреНрд░рд╣реНрдорд╛рдВрдб рд╕рдВрд╕реНрдХрд░рдг рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдХреЛрдИ рд╕рдВрд░рдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдирд┐рд░реНрджреЗрд╢ рдирд╣реАрдВ рдереЗ, рдмрд╕ рджреЗрд╢реА рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд╕рдорд╛рди рдирд┐рд░реНрджреЗрд╢ рдХреВрджреЗрдВред рдЗрд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд░реНрдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛: рдпрд╣ рдмрддрд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдХрд┐ рдХреМрди рд╕реЗ рдирд┐рд░реНрджреЗрд╢ рдЫрд▓рд╛рдВрдЧ рдХреЗ рд▓рдХреНрд╖реНрдп рд╣реИрдВред

рддрдм рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдмрд╕ рд╣реЛрдЧрд╛: рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░реИрдЦрд┐рдХ рд░реВрдк рд╕реЗ рдЬрд╛рдирд╛; рдХреВрджрдиреЗ рдФрд░ рдХреВрджрдиреЗ рдХреЗ рд▓рдХреНрд╖реНрдп рд╕реЗ рдкрд╣рд▓реЗ, рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рдПрдмреАрдЖрдИ рдореЗрдВ рдлреНрд▓рд╢ рдХрд░реЗрдВред

рдПрдХ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдПрдмреАрдЖрдИ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рджреЛ рдирд╣реАрдВред рдпрд╣ рдЯреЙрдк-рдСрдл-рд╕реНрдЯреИрдХ рдорд╛рди рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛, рдЕрд░реНрдерд╛рддреН рдЫрд▓рд╛рдВрдЧ рдХрд╛ 'рдкрд░рд┐рдгрд╛рдо', рдмрдирд╛рдо рдХреЗрд╡рд▓ рдмрд╛рд╣рд░реА рдмреНрд▓реЙрдХ рд╕реЗ рд╕реНрдЯреИрдХ рдкрд░ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рддреЛ рдЗрд╕реЗ рдмрд┐рдирд╛ рд╢рд░реНрдд рдЯреЙрдк-рдСрдл-рд╕реНрдЯреИрдХ рдХреЛ rax рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред

рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдХреЛрдИ рдорд╛рдкрдиреАрдп рд▓рд╛рдЧрдд рд╣реЛрдЧреА; рдЕрдЧрд░ рдХреБрдЫ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рд╕реБрдзрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

(рд╕рддреНрдпрд╛рдкрди рднреА рдЕрд▓рдЧ рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд╕рд┐рдВрдЧрд▓-рдкрд╛рд╕ рд╣реЛрдЧрд╛ред)

рдареАрдХ рд╣реИ, рдЖрдЧреЗ рдХреА рдЪреЗрддрд╛рд╡рдиреА:

  1. рдпрд╣ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдмреНрд░рд╣реНрдорд╛рдВрдб рдирд╣реАрдВ рд╣реИ; рд╣рдо рдореМрдЬреВрджрд╛ WebAssembly рдореЗрдВ рдмреИрдХрд╡рд░реНрдб-рд╕рдВрдЧрдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдиреЗ рдореЗрдВ рдлрдВрд╕ рдЧрдП рд╣реИрдВред
  2. рд╕реНрдкрд╛рдЗрдбрд░рдореЛрдиреНрдХреА рдХрд╛ рдмреЗрд╕рд▓рд╛рдЗрди рдХрдВрдкрд╛рдЗрд▓рд░ рд╕рд┐рд░реНрдл рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ, рдФрд░ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдпрд╣ рдЖрд╡рдВрдЯрди рдкрдВрдЬреАрдХрд░рдг рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЙрдк-рдЕрдиреБрдХреВрд▓ рд╣реИ: рдХрд┐ рдЕрдЧрд░ рдпрд╣ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╣реЛрд╢рд┐рдпрд╛рд░ рд╣реЛрддрд╛, рддреЛ рд░рдирдЯрд╛рдЗрдо рд▓рд╛рдн рд╕рдВрдХрд▓рди-рд╕рдордп рдХреА рд▓рд╛рдЧрдд рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЬрд╛рддрд╛ред
  3. рднрд▓реЗ рд╣реА рдмреЗрд╕рд▓рд╛рдЗрди рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ, рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд┐рдВрдЧ рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ рдХреЛ рддреЗрдЬрд╝ SSA рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

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

@ рдХреЙрдирд░рд╛рдб-рд╡рд╛рдЯ @comex

рд╡реЗ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рдЕрдВрдХ рд╣реИрдВ! рдмреЗрд╕рд▓рд╛рдЗрди рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░рд╛ рдЕрдВрддрд░реНрдЬреНрдЮрд╛рди рддрдм рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдФрд░ @comex - рд╣рд╛рдБ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдХрд╣рд╛, рдпрд╣ рдЪрд░реНрдЪрд╛ рдЙрди рдкрд╣рд▓реЗ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рд▓рд┐рдВрдХ

рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рдЕрдиреБрд╕рд╛рд░, WebAssembly рдХреЛрдб рдХреЛ TurboFan рдХреЗ IR (SSA-рдирд┐рд░реНрдорд╛рдг рд╕рд╣рд┐рдд) рдореЗрдВ рд╕реАрдзреЗ рд╕рд┐рдВрдЧрд▓ рдкрд╛рд╕ рдореЗрдВ рдмрджрд▓рдирд╛ рдмрд╣реБрдд рд╣реА рдХреБрд╢рд▓ рд╣реИ, рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ WebAssembly рдХреЗ рд╕рдВрд░рдЪрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЗ рдХрд╛рд░рдгред

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

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

"рдХреЗ рд▓рд┐рдП" рдкрдХреНрд╖ рдкрд░, рдпрд╣ рдЬрд╛рдирдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реИ рдХрд┐ рдХрд┐рди рдмреНрд▓реЙрдХреЛрдВ рдореЗрдВ рдмреИрдХреЗрдЬ рд╣реИрдВред рдПрдХ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рд╕рдВрдХрд▓рдХ рдЧреБрдг (рдЬреИрд╕реЗ рд╕реНрдерд╛рдиреАрдп рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХ WebAssembly рдХреЗ рдкреНрд░рдХрд╛рд░ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ i рд╣реИ рд╕реНрдерд╛рдиреАрдп рдореЗрдВ рд╕рд░рдгреА рдХреА рд╕реАрдорд╛ рдХреЗ рднреАрддрд░ arr )ред рдЖрдЧреЗ рдХреВрджрддреЗ рд╕рдордп, рд▓рдХреНрд╖реНрдп рдХреЛ рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рдореМрдЬреВрдж рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдиреЛрдЯреЗрдЯ рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдЬрдм рдХреЛрдИ рд▓реЗрдмрд▓ рдкрд╣реБрдВрдЪ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рдмреНрд▓реЙрдХ рдХреЛ рдЙрди рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╕рднреА рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рд╣реЛрддреЗ рд╣реИрдВ, рд╕рд░рдгреА-рд╕реАрдорд╛ рдЬрд╛рдВрдЪ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХрд┐рд╕реА рд▓реЗрдмрд▓ рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЕрдЬреНрдЮрд╛рдд рдмреИрдХрдПрдЬ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЙрд╕рдХреЗ рдмреНрд▓реЙрдХ рдХреЛ рдЗрд╕ рдЬреНрдЮрд╛рди рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдПрдХ рдЧреИрд░-рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреБрдЫ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓реВрдк-рдЗрдирд╡реЗрд░рд┐рдПрдВрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред (рдкрдХреНрд╖ рд╡рд┐рдЪрд╛рд░: @Vurich рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕реНрдерд╛рдиреАрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг WebAssembly рдПрдХ рд╕реНрдЯреИрдХ рдорд╢реАрди рдирд╣реАрдВ рд╣реИред #1381 рдореЗрдВ рдореИрдВрдиреЗ рд╕реНрдерд╛рдиреАрдп рд▓реЛрдЧреЛрдВ рдкрд░ рдХрдо рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдЯреИрдХ рд╕рдВрдЪрд╛рд▓рди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдХреБрдЫ рдХрд╛рд░рдг рдмрддрд╛рдПред рд░рдЬрд┐рд╕реНрдЯрд░ рдЖрд╡рдВрдЯрди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдирд╛ рдПрдХ рдФрд░ рдХрд╛рд░рдг рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рд╡рд╣ рджрд┐рд╢рд╛ред)

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

(рдореИрдВ рд╡реАрдПрдо рд▓реЛрдЧреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ +1 рдореЗрдВ рдлреЗрдВрдХрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рднрд▓реЗ рд╣реА рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @kripken рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред)

рдЬрдм рдореИрдВ рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд▓рд╛рдЗрдЯрдмреАрдо рдПрдХ рдЖрдВрддрд░рд┐рдХ рдЖрдИрдЖрд░ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдлреА рднреНрд░рд╛рдордХ рд╣реИ рдФрд░ рдореБрдЭреЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред рдореИрдВ рдХреБрдЫ рд╕рдордп рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдХрднреА-рдХрднреА рдЖрдкрдХреЛ рдЯрдирд▓ рд╡рд┐рдЬрди рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ, рд▓рд╛рдЗрдЯрдмреАрдо рдирд┐рд░реНрджреЗрд╢ рджреНрд╡рд╛рд░рд╛ рдЗрдирдкреБрдЯ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рдЗрд╕рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдзрд┐рдХрддрдо рдПрдХ-рдирд┐рд░реНрджреЗрд╢ рд▓реБрдХрд╣реЗрдб рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ), рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд▓рд╕реА рдФрд░ рдирд┐рд░рдВрддрд░ рд╕реНрдерд╛рди рдкрд░, рдХрдИ рдЖрдВрддрд░рд┐рдХ рдЖрдИрдЖрд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддрд┐ Wasm рдирд┐рд░реНрджреЗрд╢ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рд╕реНрдерд┐рд░ рдФрд░ рдЫреЛрдЯреА рд╣реИ, рдХреБрдЫ 6 рдХреА рддрд░рд╣ред рдпрд╣ рдкреВрд░реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП IR рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдмрдлрд░ рдирд╣реАрдВ рдмрдирд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЙрд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдлрд┐рд░, рдпрд╣ рдЙрди IR рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдкрдврд╝рддрд╛ рд╣реИред рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╛рд╕рдо рдирд┐рд░реНрджреЗрд╢ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдореИрдВ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдЖрдИрдЖрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдПрдХ рдЕрд▓рдЧ рдореЙрдбрд▓ рдХреИрд╕реЗ рд╣реИред рдпрд╣ рд╕рдВрднрд╡рдд: V8 рдпрд╛ рд╕реНрдкрд╛рдЗрдбрд░рдореЛрдиреНрдХреА рдХреЗ рдмреЗрд╕рд▓рд╛рдЗрди рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдХреЛрдб рдХрд╛ рдЙрддреНрдкрд╛рджрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рд░реВрдк рд╕реЗ рдХрдореА рд╣реИред рдореЗрд░рд╛ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╡рд╛рд╕рдо рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдореЙрдбрд▓ рдХрд░рддрд╛ рд╣реВрдВ рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рдПрдХ рд╕реАрдПрдлрдЬреА рдерд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрд▓рдПрд▓рд╡реАрдПрдо рдпрд╛ рдХреНрд░реЗрдирд▓рд┐рдлреНрдЯ рдХреА рддрд░рд╣ рд╕реНрдореГрддрд┐ рдореЗрдВ рдЖрдИрдЖрд░ рдХреЗ рдмрдлрд░ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдпред

рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдпрд╣ рд╣реИ рдХрд┐ рд╡рд╛рд╕рдо рдХреЛ рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдЬреЛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рд╕рдВрд░рдЪрдирд╛ рдХреЛ "рдкреВрд░реНрд╡рд╡рдд рдХрд░реЗрдВ"ред рдПрд▓рдПрд▓рд╡реАрдПрдо рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдПрд▓рдПрд▓рд╡реАрдПрдо (рдЬреИрд╕реЗ рдбрдмреНрд▓реНрдпреВрдПрд╡реАрдПрдо рдпрд╛ рд╡рд╛рд╕рдорд░) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡реАрдПрдо рдореЗрдВ рдпрд╛ рд╡рд╛рд╕рдордмреЙрдХреНрд╕рд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╛рд╕рдо рдЪрд▓рд╛рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

@kripken рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, LLVM рдЕрднреА рддрдХ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкреВрд░реНрд╡рд╡рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред рдЬрдВрдк рдереНрд░реЗрдбрд┐рдВрдЧ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдкрд╛рд╕ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдЗрд╕ рдкреИрдЯрд░реНрди рдХреЛ рдирд╣реАрдВ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдХреБрдЫ C++ рдХреЛрдб рджрд┐рдЦрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдирдХрд▓ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ relooper рдПрд▓реНрдЧреЛрд░рд┐рдердо CFG рдХреЛ рд▓реВрдк+рд╕реНрд╡рд┐рдЪ рдореЗрдВ рдмрджрд▓ рджреЗрдЧрд╛ред GCC рдЗрд╕реЗ "dereloop" рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрд▓реИрдВрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: https://godbolt.org/z/GGM9rP

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

@comex

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

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

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

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

@RossTate

рдлрд┐рд░ рд╕реЗ funclets/gotos, рдореИрдВрдиреЗ рджреВрд╕рд░реЗ рджрд┐рди funclet spec рдХреЛ рд╕реНрдХрд┐рдо рдХрд┐рдпрд╛ рдФрд░ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдПрдХ-рдкрд╛рд╕ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╕рд░рд▓ рд░реАрдЧреИрд▓реЛрдХ рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдирд╣реАрдВред рд▓реЗрдХрд┐рди рдПрдХ рдмреЗрд╣рддрд░ рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рднреА рдпрд╣ рдареАрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: рдПрдХ рдЬреЙрдЗрди рдкреЙрдЗрдВрдЯ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╡рд╛рд▓реЗ рдкрд╣рд▓реЗ рдХрд┐рдирд╛рд░реЗ рдХреЛ рдпрд╣ рддрдп рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд░рдЬрд┐рд╕реНрдЯрд░ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреНрдпрд╛ рд╣реИ, рдФрд░ рдЕрдиреНрдп рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рдЕрдиреБрд░реВрдк рд╣реЛрдирд╛ рд╣реЛрдЧрд╛ред

@ рдХреЙрдирд░рд╛рдб-рд╡рд╛рдЯ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдЕрднреА рд╕реАрдЬреА рдореАрдЯрд┐рдВрдЧ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдорд▓реНрдЯреА-рд▓реВрдк рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╡рд░рдг рджреЗрдЦрдиреЗ рдореЗрдВ рд╣рдореЗрдВ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреАред

@aardappel рд╣рд╛рдБ, рдЬреАрд╡рди рдореБрдЭ рдкрд░ рддреЗрдЬреА рд╕реЗ рдЖрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЗрд╕реЗ рдЕрдЧрд▓реА рдмреИрдардХ рдореЗрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдмрд╕ рдЗрд╕ рдмрд╛рдд рдкрд░ рдЬреЛрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдореЗрд░рд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ @rossberg рдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ

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

рд╣рдордиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЬреА рдореЗрдВ рдХреБрдЫ рдЪрд░реНрдЪрд╛ рд╕рддреНрд░ рдХрд┐рдП рд╣реИрдВ, рдФрд░ рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рд░рд╛рдВрд╢ рдФрд░ рдЕрдиреБрд╡рд░реНрддреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд▓рд┐рдЦрд╛ рд╣реИред рд▓рдВрдмрд╛рдИ рдХреЗ рдХрд╛рд░рдг рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рд╕рд╛рд░ рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИред

https://gist.github.com/conrad-watt/6a620cb8b7d8f0191296e3eb24dffdef

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреЛ рддрддреНрдХрд╛рд▓ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдпреЛрдЧреНрдп рдкреНрд░рд╢реНрди (рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╡рд░реНрддреА рдЕрдиреБрднрд╛рдЧ рджреЗрдЦреЗрдВ) рд╣реИрдВ:

  • рдХреНрдпрд╛ рд╣рдо "рдЬрдВрдЧрд▓реА" рдкреНрд░реЛрдЧреНрд░рд╛рдо рдвреВрдВрдв рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреАрдбрд╝рд┐рдд рд╣реИрдВ рдФрд░ multiloop рд╕реЗ рдкреНрд░рджрд░реНрд╢рди-рд╡рд╛рд░ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛрдВрдЧреЗ? рдпреЗ рдРрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдПрд▓рдПрд▓рд╡реАрдПрдо рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдореЗрд╢рди рдЗрд░реЗрдбреНрдпреВрд╕рдмрд▓ рдХрдВрдЯреНрд░реЛрд▓ рдлреНрд▓реЛ рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдореМрдЬреВрдж рди рд╣реЛред
  • рдХреНрдпрд╛ рдХреЛрдИ рдРрд╕реА рджреБрдирд┐рдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ multiloop рдХреЛ "рд╡реЗрдм" Wasm рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд▓рд┐рдВрдХрд┐рдВрдЧ/рдЕрдиреБрд╡рд╛рдж рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдкрд░рдд рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рдирд┐рд░реНрдорд╛рддрд╛-рдкрдХреНрд╖ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

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

рдЪреВрдБрдХрд┐ рдпреЗ рдЪрд░реНрдЪрд╛рдПрдБ рдХреБрдЫ рд╣рдж рддрдХ рд╢рд╛рдЦрд╛рдмрджреНрдз рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдмрджрд▓рдирд╛ рдЙрдЪрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдкреНрд░рдЧрддрд┐ рджреЗрдЦрдХрд░ рдмрд╣реБрдд рдЦреБрд╢ рд╣реВрдВред рд╢рд╛рдорд┐рд▓ рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреЛ рдПрдХ рдмрдбрд╝рд╛ "рдзрдиреНрдпрд╡рд╛рдж"!

рдХреНрдпрд╛ рд╣рдо "рдЬрдВрдЧрд▓реА" рдкреНрд░реЛрдЧреНрд░рд╛рдо рдвреВрдВрдв рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреАрдбрд╝рд┐рдд рд╣реИрдВ рдФрд░ рдорд▓реНрдЯреАрд▓реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рди-рд╡рд╛рд░ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛрдВрдЧреЗ? рдпреЗ рдРрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдПрд▓рдПрд▓рд╡реАрдПрдо рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдореЗрд╢рди рдЗрд░реЗрдбреНрдпреВрд╕рдмрд▓ рдХрдВрдЯреНрд░реЛрд▓ рдлреНрд▓реЛ рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдореМрдЬреВрдж рди рд╣реЛред

рдореИрдВ рд╕рд░реНрдХреБрд▓рд░ рд░реАрдЬрдирд┐рдВрдЧ рдХреЗ рдЦрд┐рд▓рд╛рдл рдереЛрдбрд╝рд╛ рд╕рд╛рд╡рдзрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ: рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЦрд░рд╛рдм рдкреНрд░рджрд░реНрд╢рди рд╡рд╛рд▓реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ "рдЬрдВрдЧрд▓реА рдореЗрдВ" рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЧреЛ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рд╕реЗ рдмрд╣реБрдд рд▓рд╛рдн рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЧреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдпрд╛ рддреЛ WebAssembly coroutines рдпрд╛ multiloop рд╣реЛрддреА рд╣реИ, рдЬреЛ рдХрд┐ Go рдХреЗ goroutines рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреБрд╢рд▓ рдХреЛрдб рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛред

рдкреНрд░реАрдХрдВрдкреАрд▓реНрдб рд░реЗрдЧреБрд▓рд░-рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдореИрдЪрд░реНрд╕, рдЕрдиреНрдп рдкреНрд░реАрдХрдВрдкреАрд▓реНрдб рд╕реНрдЯреЗрдЯ рдорд╢реАрдиреЛрдВ рдХреЗ рд╕рд╛рде, рдЕрдХреНрд╕рд░ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдХрдВрдЯреНрд░реЛрд▓ рдлреНрд▓реЛ рдореЗрдВ рдкрд░рд┐рдгрдд рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рдХрд╣рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП "рдлрд╝реНрдпреВрдЬрд╝рди" рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рд╣реЛрдЧрд╛ рдпрд╛ рдирд╣реАрдВред

  • рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ funclets (рдпрд╛ рдПрдХ рдирдпрд╛) рд░реЗрдкреЛ рдХреЗ рдореБрджреНрджреЛрдВ рдкрд░ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
  • рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдПрд▓рдПрд▓рд╡реАрдПрдо (рдФрд░ рдЧреЛ, рдФрд░ рдЕрдиреНрдп) рдХреЗ рдмрд┐рдирд╛ рдЗрд╕рд╕реЗ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЦреЛрдЬрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдмрд╕реЗ рдЗрд╖реНрдЯрддрдо рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ (рдЬреЛ рдХрд┐ рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рддрд╛ рд╣реИред FixIrreducibleControlFlow рдФрд░ рджреЛрд╕реНрддреЛрдВ рдХреА рд╡рдЬрд╣ рд╕реЗ рдЕрдХреНрд╖рдорддрд╛ рдПрдХ рдмрдбрд╝реЗ рдмрд╛рдЗрдирд░реА рдореЗрдВ "рд╣рдЬрд╛рд░ рдХрдЯ рд╕реЗ рдореМрдд" рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
  • рдЬрдмрдХрд┐ рдореИрдВ рдЗрд╕ рдЪрд░реНрдЪрд╛ рд╕реЗ рдирд┐рдХрд▓рдиреЗ рд╡рд╛рд▓реА рдкреВрд░реНрдг рдиреНрдпреВрдирддрдо рдкреНрд░рдЧрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЗрд╡рд▓ рдЯреВрд▓-рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╣ рдЕрднреА рднреА рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЙрддреНрдкрд╛рджрдХреЛрдВ рдХреЗ рдкрд╛рд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХрдард┐рди рд╡рд┐рдХрд▓реНрдк рд╣реИ (рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рддрд┐рдЧрдорди рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ/ рдХреНрд▓рд┐рдлреНрд╕), рдпрд╛ рдЪреАрдЬреЛрдВ рдХреЛ рдЕрдиреБрдорд╛рдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдорд╛рдирдХ рд╡рд╛рд╕рдо рддрдХ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдбрд╝реА рдореЗрд╣рдирдд рдХрд░рддреЗ рд╣реИрдВред
  • рдпрджрд┐ рдпрд╣ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдХрд┐ "рдЧреЛрдЯреЛрд╕" рдХреЗрд╡рд▓ рдПрдХ рдЯреВрд▓-рдХреЗрд╡рд▓ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ, рддреЛ рдореИрдВ рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рдЖрдк рд╢рд╛рдпрдж рдорд▓реНрдЯреАрд▓реВрдк рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рд╕рд░рд▓ рд╕реБрд╡рд┐рдзрд╛ рд╕реЗ рджреВрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдирд┐рд░реНрдорд╛рддрд╛ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдкрд░рд╡рд╛рд╣ рд╣реИред рдкреВрд░реНрдг рдиреНрдпреВрдирддрдо рдкрд░, рдПрдХ goto <function_byte_offset> рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рд╣реЛрдЧреА рдЬрд┐рд╕реЗ рдирд┐рдпрдорд┐рдд Wasm рдлрд╝рдВрдХреНрд╢рди рдирд┐рдХрд╛рдпреЛрдВ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рддрд╛рдХрд┐ WABT рдпрд╛ Binaryen рдХреЛ рдЗрд╕реЗ рдХрд╛рдиреВрдиреА Wasm рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓ рд╕рдХреЗред рдЯрд╛рдЗрдк рд╕рд┐рдЧреНрдиреЗрдЪрд░ рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрддреА рд╣реИрдВ рдпрджрд┐ рдЗрдВрдЬрди рдХреЛ рдПрдХ рдорд▓реНрдЯреАрд▓реВрдк рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдпрд╣ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдЙрдкрдХрд░рдг рд╣реИ, рддреЛ рдпрд╣ рдЙрддреНрд╕рд░реНрдЬрди рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред

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

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

рдЕрдзрд┐рдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕реЗ C/C++ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░рдХ рдирд╣реАрдВ рдкрд╛рдпрд╛ред рдЗрд░реЗрдбреНрдпреВрд╕реЗрдмрд▓ рдХрдВрдЯреНрд░реЛрд▓ рдлреНрд▓реЛ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрд╕рдХрд╛ C/C++ рд╕реЗ рдЕрдзрд┐рдХ рд▓реЗрдирд╛-рджреЗрдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред (рдореИрдВ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ред) рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @neelance рдХреЗ рдкрд╛рд╕ рдпрд╣

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрдИ рдкрд╣рд▓реВ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХрд╛ рдХрдИ рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рд╕рдорд╛рдзрд╛рди рдХрд░рдирд╛ рд╕рд╛рд░реНрдердХ рд╣реИред

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

рджреВрд╕рд░рд╛, рд╣рдо рдЗрд╕ рдмрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ "pre" -WebAssembly рдХреА рдХреМрди рд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╕реАрдзреЗ "рд╕рддреНрдп" WebAssembly рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИрдВред рд╣рдо рдЗрд╕реЗ рдПрдХ рд╕реВрдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ "рдкреНрд░реА" -рд╡реЗрдмрдЕрд╕реЗрдВрдмрд▓реА рдореЙрдбреНрдпреВрд▓ рд╣реЛрдВрдЧреЗ рдЬрд┐рдирдХрд╛ рд╣рдо рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╡реЗ "рд╕рдЪреНрдЪреЗ" рд╡реЗрдмрдЕрд╕реЗрдВрдмрд▓реА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдмрджрд▓ рдЧрдП рд╣реЛрдВред

рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рднрд╛рд╖рд╛ (https://github.com/ciao-lang/ciao) рдХреЗ рд▓рд┐рдП webassembly рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдмрд╛рдЗрдЯрдХреЛрдб рдПрдореБрд▓реЗрдЯрд░ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдЗрд╖реНрдЯрддрдо рд╕реЗ рдмрд╣реБрдд рджреВрд░ рдерд╛ (рдХрднреА-рдХрднреА рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 10 рдЧреБрдирд╛ рдзреАрдорд╛)ред рдореБрдЦреНрдп рдирд┐рд╖реНрдкрд╛рджрди рд▓реВрдк рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдмрд╛рдЗрдЯрдХреЛрдб рдкреНрд░реЗрд╖рдг рд╕реНрд╡рд┐рдЪ рдерд╛, рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЬрди рдХреЛ рджрд╢рдХреЛрдВ рддрдХ рдмрд╛рд░реАрдХ рд░реВрдк рд╕реЗ рдЯреНрдпреВрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд╣рдо рд▓реЗрдмрд▓ рдФрд░ рдЧреЛрдЯреЛ рдХрд╛ рднрд╛рд░реА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЛ рдЗрд░реЗрдбреНрдпреВрд╕реАрдмрд▓ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд╕рдорд░реНрдерди рд╕реЗ рд▓рд╛рдн рд╣реЛрдЧрд╛ рдпрд╛ рдпрджрд┐ рд╕рдорд╕реНрдпрд╛ рдПрдХ рдФрд░ рдереАред рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдЧреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЪреАрдЬреЗрдВ рдмреЗрд╣рддрд░ рд╣реБрдИ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред рдмреЗрд╢рдХ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╡реАрдПрдо рд╕реЗ рд╡рд╛рд╕рдо рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рдореБрдЦреНрдп рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рдЬрд╛рдирдХрд░ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЕрдВрддрддрдГ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдмрд╛рдЗрдирд░реА рдЬреЛ рд╣рд░ рдЬрдЧрд╣ рдХреБрд╢рд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЪрд▓рддреА рд╣реИрдВ, рд╡рд╛рджрд╛ рдХрд┐рдП рдЧрдП рд▓рд╛рднреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдореА рдерд╛ред (рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдпрджрд┐ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рд╖рдп рдкрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдореБрджреНрджреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИ)

@jfmc рдореЗрд░реА рд╕рдордЭ рдпрд╣ рд╣реИ рдХрд┐, рдпрджрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдпрдерд╛рд░реНрдерд╡рд╛рджреА рд╣реИ (рдЕрд░реНрдерд╛рдд рдкреИрдереЛрд▓реЙрдЬрд┐рдХрд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдФрд░ рдЖрдк рдЗрд╕рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡реИрдз рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред WebAssembly рдХрд╛ рд▓рдХреНрд╖реНрдп рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рд╛рдорд╛рдиреНрдп-рдЙрджреНрджреЗрд╢реНрдп рд▓рдХреНрд╖реНрдп рд╣реЛрдирд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдордЭрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдкрдиреЗ рдЗрддрдиреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдордВрджреА рдХреНрдпреЛрдВ рджреЗрдЦреАред рдпрджрд┐ рдРрд╕рд╛ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдореЗрдВ рдпрд╣ рдЬрд╛рдирдирд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рдпрджрд┐ рдпрд╣ рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЬрд╛рдирдирд╛ рдЕрднреА рднреА рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ WebAssembly рдХреЛ рдХреИрд╕реЗ рдмреЗрд╣рддрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред

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

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

Artur-A picture Artur-A  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

arunetm picture arunetm  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

frehberg picture frehberg  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

spidoche picture spidoche  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bobOnGitHub picture bobOnGitHub  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ