QEMU, FFmpeg, BPG, QuickJS, TinyGL рдЖрдгрд┐ TinyCC рдкреНрд░рдХрд▓реНрдкрд╛рдВрдЪреА рд╕реНрдерд╛рдкрдирд╛ рдХрд░рдгрд╛рд░реЗ рдлреНрд░реЗрдВрдЪ рдЧрдгрд┐рддрдЬреНрдЮ рдлреЕрдмреНрд░рд┐рд╕ рдмреЗрд▓рд╛рд░реНрдб рдпрд╛рдВрдиреА рдПрдореНрдмреЗрдбреЗрдб рд╕рд┐рд╕реНрдЯрдорд╕рд╛рдареА рдПрдХ рдирд╡реАрди JavaScript рдЗрдВрдЬрд┐рди рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ - рдорд╛рдпрдХреНрд░реЛ QuickJS. рддреЗ рдлрдХреНрдд 10 KB RAM рд╡рд╛рдкрд░рдд рдЕрд╕рддрд╛рдирд╛ JavaScript рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рдВрдХрд▓рд┐рдд рдЖрдгрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░реВ рд╢рдХрддреЗ. C рд▓рд╛рдпрдмреНрд░рд░реАрд╕рд╣, рдЗрдВрдЬрд┐рди рдЕрдВрджрд╛рдЬреЗ 100 KB рдореЗрдорд░реА рд╡реНрдпрд╛рдкрддреЗ. рддреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯрд▓рд╛ рдмрд╛рдпрдХреЛрдбрдордзреНрдпреЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░реВ рд╢рдХрддреЗ рдЖрдгрд┐ рдмрд╛рдпрдХреЛрдб рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ рдЪрд╛рд▓рд╡реВ рд╢рдХрддреЗ. рдкреНрд░рдХрд▓реНрдкрд╛рдЪрд╛ рдХреЛрдб C рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓рд╛ рдЖрд╣реЗ рдЖрдгрд┐ MIT рдкрд░рд╡рд╛рдиреНрдпрд╛рдЕрдВрддрд░реНрдЧрдд рд╡рд┐рддрд░рд┐рдд рдХреЗрд▓рд╛ рдЖрд╣реЗ.
рд╣реЗ рдЗрдВрдЬрд┐рди ECMAScript 5 (ES2019) рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирдЪреНрдпрд╛ рдЬрд╡рд│ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ JavaScript рднрд╛рд╖реЗрдЪреНрдпрд╛ рдЙрдкрд╕рдореВрд╣рд╛рд▓рд╛ рд╕рдорд░реНрдерди рджреЗрддреЗ, рдкрд░рдВрддреБ рддреЗ рдЕрдзрд┐рдХ рдХрдареЛрд░ рдХреЛрдб рдЖрд╡рд╢реНрдпрдХрддрд╛ рд▓рд╛рджрддреЗ рдЖрдгрд┐ рдХрд╛рд╣реА рдЕрдХрд╛рд░реНрдпрдХреНрд╖рдо рдХрд┐рдВрд╡рд╛ рддреНрд░реБрдЯреА-рдкреНрд░рд╡рдг JavaScript рд░рдЪрдирд╛рдВрдЪрд╛ рд╡рд╛рдкрд░ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, "var" рдХреАрд╡рд░реНрдб рд╡рд╛рдкрд░реВрди рдЧреНрд▓реЛрдмрд▓ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдШреЛрд╖рд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, "with" рдЪрд╛ рд╡рд╛рдкрд░ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдЖрд╣реЗ, рдЕреЕрд░реЗ рд░рд┐рдХрд╛рдореЗ рдЕрд╕реВ рд╢рдХрдд рдирд╛рд╣реАрдд, "new Number(1)" рдлреЙрд░реНрдордЪреНрдпрд╛ рдШреЛрд╖рдгрд╛рдВрд╕рд╣ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдгреЗ рд╢рдХреНрдп рдирд╛рд╣реА рдЖрдгрд┐ eval рд╡рд░реВрди рд╕реНрдерд╛рдирд┐рдХ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рдпреЗрдд рдирд╛рд╣реА.
рдорд╛рдпрдХреНрд░реЛ рдХреНрд╡рд┐рдХрдЬреЗрдПрд╕рдЪреА рдХрд╛рдордЧрд┐рд░реА реирежрезреп рдкрд╛рд╕реВрди рдлреЕрдмреНрд░рд┐рд╕рдиреЗ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХреНрд╡рд┐рдХрдЬреЗрдПрд╕ рдЗрдВрдЬрд┐рдирдЪреНрдпрд╛ рдЬрд╡рд│рдкрд╛рд╕ рдЖрд╣реЗ. рдорд╛рдпрдХреНрд░реЛ рдХреНрд╡рд┐рдХрдЬреЗрдПрд╕ рдХреНрд╡рд┐рдХрдЬреЗрдПрд╕ рдЗрдВрдЬрд┐рди рд╕рд╛рд░рдЦреНрдпрд╛рдЪ рдХрд╛рд╣реА рдХреЛрдбрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рддреЗ, рдкрд░рдВрддреБ рддреНрдпрд╛рдЪреА рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд▓рдХреНрд╖рдгреАрдпрд░реАрддреНрдпрд╛ рд╡реЗрдЧрд│реА рдЖрд╣реЗ рдЖрдгрд┐ рдХрдореАрдд рдХрдореА рдореЗрдорд░реА рд╡рд╛рдкрд░рд╛рд╕рд╛рдареА рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗрд▓реА рдЖрд╣реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдорд╛рдпрдХреНрд░реЛ рдХреНрд╡рд┐рдХрдЬреЗрдПрд╕ рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдЧрд╛рд░реНрдмреЗрдЬ рдХрд▓реЗрдХреНрдЯрд░ рд╡рд╛рдкрд░рддреЗ, рддрд░ рдХреНрд╡рд┐рдХрдЬреЗрдПрд╕ рд░реЗрдлрд░рдиреНрд╕ рдХрд╛рдЙрдВрдЯрд┐рдВрдЧ рд╡рд╛рдкрд░рддреЗ. рдЧрд╛рд░реНрдмреЗрдЬ рдХрд▓реЗрдХреНрдЯрд░рдЪрд╛ рдУрд╡реНрд╣рд░рд╣реЗрдб рдкреНрд░рддреНрдпреЗрдХ рд╡рд╛рдЯрдк рдХреЗрд▓реЗрд▓реНрдпрд╛ рдореЗрдорд░реА рдмреНрд▓реЙрдХрд╕рд╛рдареА рдлрдХреНрдд рдХрд╛рд╣реА рдмрд┐рдЯреНрд╕ рдЖрд╣реЗ. рдореЗрдорд░реА рдЕрд▓реЛрдХреЗрд╢рди malloc() рд▓рд╛рдпрдмреНрд░рд░реА рдлрдВрдХреНрд╢рдирдкреЗрдХреНрд╖рд╛ рд╕реНрд╡рддрдВрддреНрд░, рд╕реНрд╡рддрдГрдЪрд╛ рдЕрд▓реЛрдХреЕрдЯрд░ рд╡рд╛рдкрд░рддреЗ.
QuickJS рдкреЗрдХреНрд╖рд╛ рдЗрддрд░ рдлрд░рдХ: рд╕реНрдЯреЕрдХрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рдд рдирд╛рд╣реА рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрди; рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рдЪреЗ рд╡реЗрдЧрд│реЗ рдЕрдВрддрд░реНрдЧрдд рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡; рд╕реНрдЯреНрд░рд┐рдВрдЧреНрдЬ UTF-8 рдПрдиреНрдХреЛрдбрд┐рдВрдЧрдордзреНрдпреЗ рд╕рд╛рдард╡рдгреЗ; рд╕рдВрдХрд▓рдирд╛рджрд░рдореНрдпрд╛рди рдорд╛рдирдХ рд▓рд╛рдпрдмреНрд░рд░реА рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрдгрд┐ рд░реЕрдордордзреНрдпреЗ рдлрдХреНрдд рдХрд╛рд╣реА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рддрдпрд╛рд░ рдХрд░реВрди рддреА рдХрд╛рдпрдорд╕реНрд╡рд░реВрдкреА рдореЗрдорд░реАрдордзреНрдпреЗ рд╕рд╛рдард╡рдгреЗ; QuickJS рд╕рд╛рд░рдЦрд╛ рдкрд╛рд░реНрд╕рд░, рдкрдг рд░рд┐рдХрд░реНрд╢рди рди рд╡рд╛рдкрд░рдгрд╛рд░рд╛; рдмрд╛рдпрдХреЛрдб рдирд┐рд░реНрдорд┐рддреА рдЖрдгрд┐ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рдПрдХрд╛рдЪ рдкрд╛рд╕рдордзреНрдпреЗ рдПрдХрддреНрд░ рдХрд░рдгреЗ (QuickJS рдордзреНрдпреЗ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рдирд╕рд╛рдареА рдЕрдиреЗрдХ рдкрд╛рд╕ рдЕрд╕рддрд╛рдд).
рд╕реНрддреНрд░реЛрдд: opennet.ru
