Xterm.js: рдЯрд░реНрдорд┐рдирд▓ рд╕рд╣реА рд░рдВрдЧ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 16 рдЬрдире░ 2017  ┬╖  20рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: xtermjs/xterm.js

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

рдирдорд╕реНрддреЗред рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ? рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ ЁЯШГ

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

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

рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ https://github.com/sourcelair/xterm.js/blob/365a9f949cc1acfb6c4649ee1d85da3bbc60f928/src/InputHandler.ts#L1276 рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдореБрд╢реНрдХрд┐рд▓ рд╣рд┐рд╕реНрд╕рд╛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ рд╣рдо рд╡рд░реНрдгреЛрдВ рдХреЗ рд╡рд┐рд░реБрджреНрдз рд░рдВрдЧреЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдХреИрд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВ (рд╢рд╛рдпрдж рдЗрдирд▓рд╛рдЗрди style рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ)ред https://github.com/sourcelair/xterm.js/pull/450 рдЬреИрд╕рд╛ рдХреБрдЫ рд╢рд╛рдпрдж рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЛ рд╕рд░рд▓ рдмрдирд╛ рджреЗрдЧрд╛ред

рдЬрдм рдореБрдЭреЗ рдХреБрдЫ рд╕рдордп рдорд┐рд▓рддрд╛ рд╣реИ рддреЛ рдореИрдВ рдЗрд╕реЗ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ рдХрд┐ рдореИрдВ рдирд┐рдпрдВрддреНрд░рдг рджреГрд╢реНрдпреЛрдВ рд╕реЗ рдмрд╣реБрдд рдкрд░рд┐рдЪрд┐рдд рд╣реВрдВред

рдореИрдВрдиреЗ http://invisible-island.net/xterm/ctlseqs/ctlseqs.html рдкрд░ рдПрдХ рдирдЬрд╝рд░

@cnsumner xterm рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рд╣реА рд░рдВрдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдПрд╕реНрдХреЗрдк рдЕрдиреБрдХреНрд░рдореЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реИред рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣рд╛рдБ рдФрд░ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ: https://gist.github.com/XVilka/8346728
BTW рдпрд╣ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ ECMA-48 рдорд╛рдирдХ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИред

рд╣рдореЗрдВ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдмреЗрд╣рддрд░ рд╡рд┐рдЪрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдПрдХ рдЧрдиреНрджрд╛ рд╕рдмреВрдд рдПрдХ рд╕рд╛рде рд░рдЦреЗрдВ https://github.com/Tyriar/xterm.js/tree/484_truecolor

image

рдЪреАрдЬреЗрдВ рдЬреЛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

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

    [attribute, character, width]
    
    • attribute : рдПрдХ 32-рдмрд┐рдЯ рдкреВрд░реНрдгрд╛рдВрдХ рдЬрд┐рд╕рдореЗрдВ ascii fg, ascii bg рдФрд░ рдлрд╝реНрд▓реИрдЧреНрд╕ (рдмреЛрд▓реНрдб, рдЕрдВрдбрд░рд▓рд╛рдЗрди, рдмреНрд▓рд┐рдВрдХ, рдЙрд▓рдЯрд╛, рдЕрджреГрд╢реНрдп) рд╣реЛрддреЗ рд╣реИрдВ, рд╕рднреА рдмрд┐рдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
    • char : рдпрд╛ рддреЛ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ (0 рдЪреМрдбрд╝рд╛рдИ рд╡рд╛рд▓реЗ рд╡рд░реНрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЪреМрдбрд╝реЗ рд╡рд░реНрдгреЛрдВ рдХреЛ рдкреИрдб рдХрд░рддреЗ рд╣реИрдВ) рдпрд╛ рдПрдХрд▓ рд╡рд░реНрдг рдпреВрдирд┐рдХреЛрдб рд╕реНрдЯреНрд░рд┐рдВрдЧ
    • width : рдЪрд╛рд░ рдХреА рдЪреМрдбрд╝рд╛рдИ, рд╡рд░реНрддрдорд╛рди рдореЗрдВ 0, 1 рдпрд╛ 2 рд╣реЛ рд╕рдХрддреА рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдЯреИрдм рдХреЛ рдареАрдХ рд╕реЗ рд╕рдорд░реНрдерди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ https://github.com/sourcelair/xterm.js/issues/734
  • рдЕрдВрддрд┐рдо рд╕рдорд╛рдзрд╛рди рдореЗрдореЛрд░реА рдХреЗ рд▓рд┐рдП рдХреЙрдореНрдкреИрдХреНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреНрд╡рд░рд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдПрдХ рд╕рд░рдгреА рдХреЗ рд╕рд╛рде рдЪрд┐рдкрдХреЗ рд░рд╣рдирд╛, рдмрд╛рдЗрдирд░реА рдлреНрд▓реИрдЧ рдФрд░ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдмрд┐рдЯ рд╢рд┐рдлреНрдЯрд┐рдВрдЧ рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред

@ рдЯрд╛рдпрд░рд┐рдпрд╛рд░
рд╣рд╛рдБ рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╡рд┐рд╕реНрдлреЛрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рдЗрд╕реЗ рдХрдо рдЦрдкрдд рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ width рд╕рд╛рде рдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ 16 рд╕реЗ рдЕрдзрд┐рдХ рдХреЗрд╡рд▓ 4 рдмрд╛рдЗрдЯреНрд╕ рдЦрдкрдд рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ (рдЯреИрдм рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ 4 рдпрд╛ 8 рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ)ред рдпрд╣ рдПрдХ рдЖрд░рдЬреАрдмреА рдкрд░рд┐рднрд╛рд╖рд╛ * рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ (рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ width рдПрдХ 32 рдмрд┐рдЯ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИ)ред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ attribute рдореЗрдВ рдХрд┐рддрдиреЗ рдмрд┐рдЯ рдирд┐рдГрд╢реБрд▓реНрдХ рд╣реИрдВ, рд╢рд╛рдпрдж рджреВрд╕рд░реА рдЖрд░рдЬреАрдмреА рдкрд░рд┐рднрд╛рд╖рд╛ рдЬрд╛ рд╕рдХрддреА рд╣реИ ред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╡рд░реНрддрдорд╛рди рдореЗрдВ bg рдХреЗ рд▓рд┐рдП 9 рдмрд╛рдЗрдЯреНрд╕, bg рдХреЗ рд▓рд┐рдП 9 рдмрд╛рдЗрдЯреНрд╕ рдФрд░ рдлрд╝реНрд▓реИрдЧ рдХреЗ рд▓рд┐рдП 5 рдмрд╛рдЗрдЯреНрд╕ рдХреА рдЦрдкрдд рдХрд░рддреА рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЕрдВрдд рдореЗрдВ рдЪреМрдбрд╝рд╛рдИ рдХреЛ рдирд┐рдЪреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдорд┐рд▓рддрд╛ рд╣реИред RGB рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ 24 рдмрд╛рдЗрдЯреНрд╕ (8*3) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдпрд╣рд╛рдБ (рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓) рдЕрдВрддрд░рд┐рдХреНрд╖ рдмрдЪрдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣реЗ рд╣реИрдВ:

[char, attr1, attr2]

рдЬрд╣рд╛рдВ attr1 (29 рдмрд┐рдЯ) рд╣реИ:

  • рдЪреМрдбрд╝рд╛рдИ: 4 рдмрд┐рдЯ
  • 256 рд░рдВрдЧ рдпрд╛ рд╕рдЪреНрдЪреЗ рд░рдВрдЧ рдХрд╛ рдЭрдВрдбрд╛ рд╣реИ: 1 рдмрд┐рдЯ
  • рдмреАрдЬреА рд░рдВрдЧ: 24 рдмрд┐рдЯ

рдФрд░ attr2 (30 рдмрд┐рдЯ) рд╣реИ:

  • рдЭрдВрдбреЗ: 5 рдмрд┐рдЯ
  • 256 рд░рдВрдЧ рдпрд╛ рд╕рдЪреНрдЪреЗ рд░рдВрдЧ рдХрд╛ рдЭрдВрдбрд╛ рд╣реИ: 1 рдмрд┐рдЯ
  • рдПрдлрдЬреА рд░рдВрдЧ: 24 рдмрд┐рдЯ

рдПрдХ рд╕рд░рд▓ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛:

[char, attr, truecolorBg, truecolorFg]

рдПрдЯреАрдЖрд░ рдХрд╣рд╛рдВ рд╣реИ:

  • рдЪреМрдбрд╝рд╛рдИ: 4 рдмрд╛рдЗрдЯреНрд╕
  • рдЭрдВрдбреЗ: 5 рдмрд╛рдЗрдЯреНрд╕
  • 256 рдмреАрдЬреА рд░рдВрдЧ: 9 рдмрд╛рдЗрдЯреНрд╕
  • 256 fg рд░рдВрдЧ: 9 рдмрд╛рдЗрдЯреНрд╕

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

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

рд╕реНрдореГрддрд┐ рдмрдЪрдд рдкрд░ рдХреБрдЫ рдФрд░ рд╡рд┐рдЪрд╛рд░:

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

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

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

@jerch рджрд┐рд▓рдЪрд╕реНрдк, рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА https://github.com/sourcelair/xterm.js/pull/756 рдореЗрдВ рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП 4 рдирдВрдмрд░ рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ

рддреЛ рдпрд╣рд╛рдВ рд╕реНрдореГрддрд┐ рд▓рдЧрднрдЧ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ: 5 * (1000 рд╕реНрдХреНрд░реЙрд▓рдмреИрдХ) * (64-рдмрд┐рдЯ рдорд╢реАрди рдкрд░ 8 рдмрд╛рдЗрдЯреНрд╕) * 80 = 3.2 рдПрдордмреА (рдЬреЗрдПрд╕ рд╕рд░рдгреА рдХреЗ рдУрд╡рд░рд╣реЗрдб рд╕реЗ рдкрд╣рд▓реЗ)ред рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡реАрдПрд╕ рдХреЛрдб рдЯрд░реНрдорд┐рдирд▓ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЪреМрдбрд╝рд╛рдИ рдЙрд╕ рдбрдмрд▓ рдХреЛ рджреЗрдЦреЗрдЧреА рдпрджрд┐ рд╣рдо рд╡рд░реНрддрдорд╛рди рдкреНрд░рд╛рд░реВрдк рд░рдЦрддреЗ рд╣реИрдВред рдЕрдм рдЬрдм рдореИрдВ рдЗрд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдмрд╣реБрдд рдХрдард┐рди рд▓рдЧрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдкрд╛рд╕ рдЕрдХреНрд╕рд░ 1000 рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрдХреНрд░реЙрд▓рдмреИрдХ рдФрд░ рдХрдИ рд╕рдХреНрд░рд┐рдп рдЯрд░реНрдорд┐рдирд▓ рд╣реЛрдВрдЧреЗред рдкрд┐рдЫрд▓реА рд╕рдлреЗрдж рдЬрдЧрд╣ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рдЬреЛрдбрд╝рддреА рд╣реИ рдФрд░ рдЬрд┐рддрдиреА рдЖрд╕рд╛рдиреА рд╕реЗ рд╢реВрдиреНрдп рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬреЛ рд╢рд╛рдпрдж рдПрдХ рдмрд╣реБрдд рдмрдбрд╝реА рдЬреАрдд рд╣реЛрдЧреАред

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

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

рд╣рд╛рдБ рдФрд░ рдЗрдВрдЬрди рдУрд╡рд░рд╣реЗрдб рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдпрд╣ рдФрд░ рднреА рдмрдбрд╝рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ - рдПрдХ рд╕рд░рдгреА рдпрд╛ рд╡рд╕реНрддреБ рдореЗрдВ рд╕рдм рдХреБрдЫ рдПрдХ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХред рдШрдиреЗ рдЬреЗрдПрд╕-рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдпрд╣рд╛рдВ рдереЛрдбрд╝рд╛ рд╕рд╛ рдлрд╛рдпрджрд╛ рд╣реИ, рд╡реЗ рдкрде рдХреЗ рдиреАрдЪреЗ рдХрд╣реАрдВ рд╕реА рдХреА рддрд░рд╣ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирддреЗ рд╣реИрдВ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ ArrayLists)ред рд╕рдВрдкрддреНрддрд┐ рд╕рдВрдХрд▓реНрдк рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреЗрдбрд╝ рдЬрд╛рджреВ рдХреЗ рд╕рд╛рде рд╕реНрдкреИрд╕ рд╕рд░рдгреА рдФрд░ рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рддреЛ 64 рдмрд┐рдЯ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рдЪреАрдЬрд╝ рдкреНрд░рддрд┐ рд╕реЗрд▓ 5 * 8 рдФрд░ рдмрд╛рдЗрдЯ рдЬреЛрдбрд╝рддреА рд╣реИ (рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдЖрдкрдХреА рдЧрдгрдирд╛ рдХреЛ рджреЛрдЧреБрдирд╛ рдХрд░ рджреЗрддреА рд╣реИ - 6.4 рдПрдордмреА)ред рд╕рд╛рдордЧреНрд░реА "рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рд╛рдордЧреНрд░реА" рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдФрд░ рднреА рдмрд╛рдЗрдЯ рдЬреЛрдбрд╝ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрдВрдЯреАрдЬрд░ рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред

рд╢рд╛рдпрдж рдПрдХ TypedArray рдЗрд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╡рд╣рд╛рдВ рдкреВрд░реНрдгрд╛рдВрдХ рд╕рд╛рдордЧреНрд░реА рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрдХреЗрдд рдХреЗ рд╕реНрдореГрддрд┐ рдореЗрдВ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╕реНрдерд┐рддрд┐ рдкрд░ рд╕реАрдзреЗ рд░рд╣ рд╕рдХрддреА рд╣реИред asm.js рдореВрд▓ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдЙрдиреНрд╣реАрдВ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдирд┐рд░реНрдорд╛рдг рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рд▓рд┐рдП TypedArray рдФрд░ js-Array рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдПрдХ рддреНрд╡рд░рд┐рдд рдорд╛рдЗрдХреНрд░реЛ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╣реИ: http://jsbench.github.io/#af3ea1056a70df2aa6775699d174df0d

TypedArray рдореЗрд░реА рдорд╢реАрди рдкрд░ FF рдФрд░ Chrome рдХреЗ рд╕рд╛рде 10 рдЧреБрдирд╛ рддреЗрдЬ рдЪрд▓рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░реАрд▓реЛрдХреЗрд╢рди рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рдЬреЗрдПрд╕-рдПрд░реЗ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдирд┐рд░рд╛рд╢ рд╣реИред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЬреЗрдЖрдИрдЯреА рдЗрд╕ рддрдереНрдп рдХреЛ рдЦреЛрдЬрддреЗ рд╣реИрдВ, рдХрд┐ рдореВрд▓реНрдп рд╣рд░ 8 рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ 1 рд╕реЗ рдмрдврд╝рддрд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЗрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рднреА рдХрд░рддрд╛ рд╣реИред рддрдм рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдмрд┐рд▓реНрдХреБрд▓ рдмреЗрдХрд╛рд░ рд╣реИред

TypedArray рдХреЗ рд▓рд┐рдП рдкрд╣реБрдВрдЪ рдереЛрдбрд╝реА рдЦрд░рд╛рдм рд╣реИ (рд╢рд╛рдпрдж Number рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдХрд╛рд░рдг), рдореЗрдореЛрд░реА рдЦрдкрдд рдПрдХ TypedArray рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИред

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

рдирдорд╕реНрддреЗред рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ? рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ ЁЯШГ

рдХреНрдпрд╛ рдХреЛрдИ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ? рдХреНрдпрд╛ рдЗрд╕рдХреА рдЪрд░реНрдЪрд╛ рдХрд╣реАрдВ рдФрд░ рд╣реЛ рд░рд╣реА рд╣реИ? @ рдЪрд╛рдмреМ

tmux рдФрд░ vim/neovim рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рджреЗрд╡ CLI рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Windows 10 рдкрд░ WSL рдореЗрдВ рд╣рд╛рдЗрдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдВрддрд┐рдо рд▓реИрдЧрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдбрдмреНрд▓реВрдПрд╕рдПрд▓ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдЕрдиреНрдп рдЯрд░реНрдорд┐рдирд▓ рдЕрдиреБрдХрд░рдгрдХрд░реНрддрд╛ рджреЗрдЦрдиреЗ рдореЗрдВ рд╕реБрдЦрдж рдирд╣реАрдВ рд╣реИрдВ, wsltty рдХрд░реАрдм рд╣реИ, рд▓реЗрдХрд┐рди рдЯреИрдм рд╕рдорд░реНрдерди рдФрд░ рдкреНрд▓рдЧрдЗрди рд╕рдорд░реНрдерди рдЧрд╛рдпрдм рд╣реИ ...

@vastbinderj рдХреНрдпреЛрдВ рдЧрд╛рдпрдм рд╕рдЪреНрдЪрд╛ рд░рдВрдЧ рд╕рдорд░реНрдерди рдЖрдкрдХреЛ рдПрдХ рдЕрдЪреНрдЫрд╛ рджреЗрд╡ рд╕реАрдПрд▓рдЖрдИ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ? рдИрдорд╛рдирджрд╛рд░ рд╕рд╡рд╛рд▓ред

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

@rfgamaral рд╕рд░рд▓ - рдореИрдВ рдХрдИ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдмрдбрд╝реЗ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдПрдХ рджрд┐рди рдореЗрдВ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдпреВрдирд┐рдХреНрд╕/рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдореБрдЦреНрдп рд╣реЛрд╕реНрдЯ рдореЗрдВ рд╕рднреНрдп рд░рдВрдЧ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реЛрдирд╛ рд╡рд┐рдШрдЯрдирдХрд╛рд░реА рд╣реИред рд░рдВрдЧреЛрдВ рдХреЗ рд╕рдорд╛рди рди рд╣реЛрдиреЗ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд╛рд╣реЗ рдореИрдВ рдЖрд░рдПрдЪрдПрд▓ рдкрд░ рд╣реВрдВ рдпрд╛ рд╕реЗрдВрдЯреЛрд╕ рдпрд╛ рдбреЗрдмрд┐рдпрди, рджрд░реНрджрдирд╛рдХ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдПрдХ рдЬреВрдирд┐рдпрд░ рдпрд╛ рдкреАрдпрд░ рдбреЗрд╡рд▓рдкрд░ рдХреА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрдардиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЪреАрдЬреЗрдВ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВ рддреЛ рдореБрдЭреЗ рд╕рдВрджрд░реНрдн рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реВрдВ рдХрд┐ рд▓рдЧрднрдЧ рдорд╛рд╕рд┐рдХ рдЖрдзрд╛рд░ рдкрд░ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рд╕реБрдзрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдбрдмреНрд▓реНрдпреВрдПрд╕рдПрд▓ рдХрд┐рддрдиреА рдЬрд▓реНрджреА рдЖ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╡реАрдПрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рднреА, рдпрд╣ рдмрдХрд╛рдпрд╛ рд╣реИред

@jerch рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдзреИрд░реНрдпрдкреВрд░реНрд╡рдХ #791 рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВрдЧреЗ ...

рдЗрд╕рдХрд╛ рднреА рдмрд╣реБрдд рдмреЗрд╕рдмреНрд░реА рд╕реЗ рдЗрдВрддрдЬрд╛рд░ рд╣реИред

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

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

рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ 50 рдмрд┐рдЯреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХрд▓ рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рдЕрдЧреНрд░рднреВрдорд┐ рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ 25 рдмрд┐рдЯреНрд╕ред рдПрдХ рдмрд┐рдЯ рдпрджрд┐ рд╕реЗрдЯ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо 24-рдмрд┐рдЯ "рд╕рддреНрдп" рд░рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ; рдпрджрд┐ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ рддреЛ рд╣рдо "рд▓реЙрдЬрд┐рдХрд▓" (рдереАрдореЗрдмрд▓) рдпрд╛ 8-рдмрд┐рдЯ рд░рдВрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕рдВрдХреЗрддрдХ рдмрд┐рдЯреНрд╕ 2 рдирд┐рдЪрд▓реЗ рдХреНрд░рдо рдХреЗ рдмрд┐рдЯреНрд╕ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП; рдпрджрд┐ рд╕реЗрдЯ рди рдХрд┐рдпрд╛ рдЬрд╛рдП рддреЛ рддрд╛рд░реНрдХрд┐рдХ/8-рдмрд┐рдЯ рд░рдВрдЧ рдЕрдЧрд▓реЗ 30 рдмрд┐рдЯреНрд╕ рдореЗрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдХреЗрд╡рд▓ 32-50 рдмрд┐рдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдпрджрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдЪреНрдЪреЗ-рд░рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

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

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореИрдВрдиреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд▓реЗрдЖрдЙрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг/рдЧрдгрдирд╛ рдХрд┐рдП (рджреЗрдЦреЗрдВ https://gist.github.com/jerch/27c2cf91ad313a25415873e4047b2900)ред рд▓рдВрдмреА рдХрд╣рд╛рдиреА рдЫреЛрдЯреА - рд╡рд┐рдЪрд╛рд░ рдЯреНрд░реЗрдбрдСрдлрд╝ рдореЗрдо рд╕реЗрд╡рд┐рдВрдЧ рдмрдирд╛рдо рд░рдирдЯрд╛рдЗрдо рдкреЗрдирд▓реНрдЯреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИрдВред рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рд╕рд░рдгреА рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдбрд╝реА рдореЗрдо рдмрдЪрдд рджреА рд╣реИ (рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдКрдкрд░ рд╕реЗ рджреВрд╕рд░реЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рд╣реА рд░рдВрдЧ рдорд╛рди рдЕрднреА рддрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реБрдП рд╣реИрдВ)ред

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

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

kolbe picture kolbe  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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

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

jestapinski picture jestapinski  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ