QEMU рд░ FFmpeg рд╕рдВрд╕реНрдерд╛рдкрдХрд▓реЗ QuickJS JavaScript рдЗрдиреНрдЬрд┐рди рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрджрдЫ

рдлреНрд░рд╛рдиреНрд╕реЗрд▓реА рдЧрдгрд┐рддрдЬреНрдЮ рдлреЗрдмреНрд░рд┐рд╕ рдмреЗрд▓рд╛рд░реНрдб, рдЬрд╕рд▓реЗ рдПрдХ рдкрдЯрдХ QEMU рд░ FFmpeg рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реЗрдХрд╛ рдерд┐рдП, рд░ рдкрд╛рдЗ рдЧрдгрдирд╛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рдмреИрднрдиреНрджрд╛ рдЫрд┐рдЯреЛ рд╕реВрддреНрд░ рдкрдирд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реЗ рд░ рдЫрд╡рд┐ рдврд╛рдБрдЪрд╛ рд╡рд┐рдХрд╛рд╕ рдЧрд░реЗред рдмреАрдкреАрдЬреА, рдирдпрд╛рдБ JavaScript рдЗрдиреНрдЬрд┐рди рдХреЛ рдкрд╣рд┐рд▓реЛ рд░рд┐рд▓реАрдЬ рдкреНрд░рдХрд╛рд╢рд┐рдд QuickJSред рдЗрдиреНрдЬрд┐рди рдХрдореНрдкреНрдпрд╛рдХреНрдЯ рдЫ рд░ рдЕрдиреНрдп рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдорд╛ рдЗрдореНрдмреЗрдбрд┐рдЩрдорд╛ рдХреЗрдиреНрджреНрд░рд┐рдд рдЫред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛрдб C рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдЫ рд░ MIT рд▓рд╛рдЗрд╕реЗрдиреНрд╕ рдЕрдиреНрддрд░реНрдЧрдд рд╡рд┐рддрд░рд┐рдд рдЫред Emscripten рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ WebAssembly рдорд╛ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░рд┐рдПрдХреЛ рдЗрдиреНрдЬрд┐рдирдХреЛ рдПрд╕реЗрдореНрдмрд▓реА рд░ рдмреНрд░рд╛рдЙрдЬрд░рд╣рд░реВрдорд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреБрдХреНрдд рдкрдирд┐ рдЙрдкрд▓рдмреНрдз рдЫред

рдЬрд╛рднрд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ рдореЛрдбреНрдпреБрд▓рд╣рд░реВ, рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рдЬреЗрдиреЗрд░реЗрдЯрд░рд╣рд░реВ рд░ рдкреНрд░реЛрдХреНрд╕реАрд╣рд░реВ рд╕рд╣рд┐рдд ES2019 рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ред рдЧреИрд░-рдорд╛рдирдХ рдЧрдгрд┐рдд рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдкрдорд╛ рд╕рдорд░реНрдерд┐рдд рдЫрдиреНред рд╡рд┐рд╕реНрддрд╛рд░ рдЬрд╛рднрд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯрдХреЛ рд▓рд╛рдЧрд┐, рдЬрд╕реНрддреИ BigInt рд░ BigFloat рдкреНрд░рдХрд╛рд░рд╣рд░реВ, рд╕рд╛рдереИ рдЕрдкрд░реЗрдЯрд░ рдУрднрд░рд▓реЛрдбрд┐рдЩред QuickJS рдХреЛ рдкреНрд░рджрд░реНрд╢рди рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ рднрдиреНрджрд╛ рд░рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд┐рдд analogues, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдкрд░реАрдХреНрд╖рдг рдорд╛
bench-v8 рдЗрдиреНрдЬрд┐рди рднрдиреНрджрд╛ рдЕрдЧрд╛рдбрд┐ рдЫ XS 35%рдорд╛, duktape рджреБрдИ рдкрдЯрдХ рднрдиреНрджрд╛ рдмрдвреА рдЬреЗрд░реАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреАрди рдкрдЯрдХ рд░ MuJS рд╕рд╛рдд рдкрдЯрдХред

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

рдореБрдЦреНрдп рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ:

  • рдХрдореНрдкреНрдпрд╛рдХреНрдЯ рд░ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрдорд╛ рдПрдХреАрдХреГрдд рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛред рдХреЛрдбрд▓реЗ рдХреЗрд╣реА C рдлрд╛рдЗрд▓рд╣рд░реВ рдорд╛рддреНрд░ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ рдЬрд╕рд▓рд╛рдИ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рдмрд╛рд╣реНрдп рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджреИрдиред рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░рд┐рдПрдХреЛ рд╕рд░рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рд▓рдЧрднрдЧ 190 KB рд▓рд┐рдиреНрдЫ;
  • рдзреЗрд░реИ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рд░ рдХрдо рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордпред 56 рд╣рдЬрд╛рд░ ECMAScript рдХрдореНрдкреНрдпрд╛рдЯрд┐рдмрд┐рд▓рд┐рдЯреА рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдкрд╛рд╕ рдЧрд░реНрди рд▓рдЧрднрдЧ 100 рд╕реЗрдХреЗрдиреНрдб рд▓рд╛рдЧреНрдЫ рдЬрдм рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдбреЗрд╕реНрдХрдЯрдк рдкреАрд╕реАрдХреЛ рдПрдХрд▓ рдХреЛрд░рдорд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реБрдиреНрдЫред рд░рдирдЯрд╛рдЗрдо рдкреНрд░рд╛рд░рдореНрднрд┐рдХрд░рдгрд▓реЗ 300 рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХреЗрдиреНрдб рднрдиреНрджрд╛ рдХрдо рд▓рд┐рдиреНрдЫ;
  • ES2019 рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рд▓рдЧрднрдЧ рдкреВрд░реНрдг рд╕рдорд░реНрдерди рд░ Annex B рдХреЛ рд▓рд╛рдЧрд┐ рдкреВрд░реНрдг рд╕рдорд░реНрдерди, рдЬрд╕рд▓реЗ рдкреБрд░рд╛рдиреЛ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрд╕рдБрдЧ рдЕрдиреБрдХреВрд▓рддрд╛рдХрд╛ рд▓рд╛рдЧрд┐ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрджрдЫ;
  • ECMAScript Test Suite рдмрд╛рдЯ рд╕рдмреИ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдкреВрд░рд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН;
  • рдмрд╛рд╣реНрдп рдирд┐рд░реНрднрд░рддрд╛ рдмрд┐рдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпреЛрдЧреНрдп рдлрд╛рдЗрд▓рд╣рд░реВрдорд╛ рдЬрд╛рднрд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди;
  • рд╕рдиреНрджрд░реНрдн-рдЧрдгрд┐рдд рдлреЛрд╣реЛрд░ рдХрд▓реЗрдХреНрдЯрд░ рдмрд┐рдирд╛ рд╕рдлрд╛рдИ рд╕рд╛рдЗрдХрд▓ рдЪрд▓рд╛рдЙрдиреЗ, рдЬрд╕рд▓реЗ рдЕрдиреБрдорд╛рдирд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд░ рдХрдо рдореЗрдореЛрд░реА рдЦрдкрддрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдорддрд┐ рджрд┐рдпреЛ;
  • рдЬрд╛рднрд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрд╛рд╖рд╛рдорд╛ рдЧрдгрд┐рддреАрдп рдЧрдгрдирд╛рдХрд╛ рд▓рд╛рдЧрд┐ рд╡рд┐рд╕реНрддрд╛рд░рд╣рд░реВрдХреЛ рд╕реЗрдЯ;
  • рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрди рдореЛрдбрдорд╛ рдХреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╢реЗрд▓ рдЬрд╕рд▓реЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдЩрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ;
  • C рдкреБрд╕реНрддрдХрд╛рд▓рдпрдорд╛ рдмрд╛рдЗрдиреНрдбрд┐рдЩрдХреЛ рд╕рд╛рде рдПрдЙрдЯрд╛ рдХрдореНрдкреНрдпрд╛рдХреНрдЯ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпред

рдкрд░рд┐рдпреЛрдЬрдирд╛рд▓реЗ QuickJS рдорд╛ рд╕рдВрд▓рдЧреНрди рддреАрди рд╕рд╣рдпреЛрдЧреА рд╕реА-рд▓рд╛рдЗрдмреНрд░реЗрд░реАрд╣рд░реВ рдкрдирд┐ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрджрдЫ рд░ рдЫреБрдЯреНрдЯреИ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреБрдХреНрдд:

  • libregexp рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рд╣рд░реВрдХреЛ рджреНрд░реБрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛ рдЬреБрди Javascript ES 2019 рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рд╕рдБрдЧ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдЕрдиреБрд░реВрдк рдЫ;
  • libunicode - рдпреБрдирд┐рдХреЛрдб рд╕рдВрдЧ рдХрд╛рдо рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдХрдореНрдкреНрдпрд╛рдХреНрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдп;
  • libbf рд╕реНрд╡реЗрдЪреНрдЫрд╛рдЪрд╛рд░реА рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдмрд┐рдиреНрджреБ рд╕рдЮреНрдЪрд╛рд▓рди рд░ рд╕рдЯреАрдХ рд░рд╛рдЙрдиреНрдбрд┐рдЩ рдЯреНрд░рд╛рдиреНрд╕рд╕реЗрдиреНрдбреЗрдиреНрдЯрд▓ рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛред

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди