Π€ΡΠ΅Π½ΡΠΊΠΈΡΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊ Π€Π°Π±ΡΠΈΡ ΠΠ΅Π»Π»Π°Ρ (Fabrice Bellard), ΠΎΡΠ½ΠΎΠ²Π°Π» ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅ QEMU, FFmpeg, BPG, QuickJS, TinyGL ΠΈ TinyCC, ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° Π½ΠΎΠ² JavaScript Π΄Π²ΠΈΠ³Π°ΡΠ΅Π» Π·Π° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ β Micro QuickJS, ΡΠΏΠΎΡΠΎΠ±Π΅Π½ Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ° ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° JavaScript ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ, ΠΊΠ°ΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΡΠ²Π° ΡΠ°ΠΌΠΎ 10 ΠΠ RAM. Π ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ Ρ C Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ°, Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»ΡΡ Π·Π°Π΅ΠΌΠ° ΠΎΠΊΠΎΠ»ΠΎ 100 ΠΠ ΠΏΠΎΡΡΠΎΡΠ½Π½Π° ΠΏΠ°ΠΌΠ΅Ρ. ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° JavaScript Π² Π±Π°ΠΉΡΠΊΠΎΠ΄ ΠΈ ΠΎΡΠ΄Π΅Π»Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π±Π°ΠΉΡΠΊΠΎΠ΄Π°. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° C ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ MIT.
ΠΠ²ΠΈΠ³Π°ΡΠ΅Π»ΡΡ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½Π° JavaScript, Π±Π»ΠΈΠ·ΠΊΠΎ Π΄ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° ECMAScript 5 (ES2019), Π½ΠΎ Ρ ΠΏΠΎ-ΡΡΡΠΎΠ³ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ ΠΊΡΠΌ ΠΊΠΎΠ΄Π° ΠΈ Π·Π°Π±ΡΠ°Π½Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½ΡΠΊΠΎΠΈ Π½Π΅Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΈ ΠΈΠ»ΠΈ Π²ΠΎΠ΄Π΅ΡΠΈ Π΄ΠΎ Π³ΡΠ΅ΡΠΊΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π³Π»ΠΎΠ±Π°Π»Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΎΠ±ΡΠ²ΡΠ²Π°Ρ Ρ ΠΊΠ»ΡΡΠΎΠ²Π°ΡΠ° Π΄ΡΠΌΠ° βvarβ, Π·Π°Π±ΡΠ°Π½Π΅Π½ΠΎ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° βwithβ, ΠΌΠ°ΡΠΈΠ²ΠΈΡΠ΅ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠΌΠ°Ρ ΠΏΡΠΎΠΏΡΡΠΊΠΈ, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Ρ βnew Number(1)β Π½Π΅ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π° Π΄ΠΎΡΡΡΠΏΡΡ Π΄ΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΡΡΠ΅Π· eval Π΅ Π½Π΅Π²ΡΠ·ΠΌΠΎΠΆΠ΅Π½.
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° Micro QuickJS Π΅ Π±Π»ΠΈΠ·ΠΊΠ° Π΄ΠΎ ΡΠ°Π·ΠΈ Π½Π° QuickJS, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½ ΠΎΡ Π€Π°Π±ΡΠΈΡ ΠΎΡ 2019 Π³ΠΎΠ΄ΠΈΠ½Π°. Π Micro QuickJS Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° ΡΠ°ΡΡ ΠΎΡ ΠΊΠΎΠ΄Π° Π½Π° QuickJS, Π½ΠΎ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½Π° ΠΈ Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½Π° Π·Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Micro QuickJS Π΅ Π²Π½Π΅Π΄ΡΠ΅Π½ ΡΡΠ°ΡΠΈΡΠΎΠ²Π°Ρ Π·Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° Π±ΠΎΠΊΠ»ΡΠΊ, Π΄ΠΎΠΊΠ°ΡΠΎ Π² QuickJS ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π±ΡΠΎΠ΅Π½Π΅ Π½Π° ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ. Π Π°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅ Π·Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° Π±ΠΎΠΊΠ»ΡΠΊ Π²ΡΠ·Π»ΠΈΠ·Π°Ρ Π½Π° ΡΠ°ΠΌΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π±ΠΈΡΠ° Π·Π° Π²ΡΠ΅ΠΊΠΈ Π·Π°Π΄Π΅Π»Π΅Π½ Π±Π»ΠΎΠΊ ΠΏΠ°ΠΌΠ΅Ρ. ΠΠ° Π·Π°Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ ΡΠΎΠ±ΡΡΠ²Π΅Π½ Π°Π»ΠΎΠΊΠ°ΡΠΎΡ, ΠΊΠΎΠΉΡΠΎ Π½Π΅ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ malloc().
ΠΡΡΠ³ΠΈ ΡΠ°Π·Π»ΠΈΡΠΈΡ ΠΎΡ QuickJS: Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡΠ΅ΠΊ Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°; ΡΠ°Π·Π»ΠΈΡΠ½ΠΎ Π²ΡΡΡΠ΅ΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅; ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π½ΠΈΠ·ΠΎΠ²Π΅ Π² UTF-8 ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°; Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ ΠΈ Π½Π΅ΠΉΠ½ΠΎΡΠΎ ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠΎΡΡΠΎΡΠ½Π½Π° ΠΏΠ°ΠΌΠ΅Ρ Ρ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π² RAM ΡΠ°ΠΌΠΎ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΎΠ±Π΅ΠΊΡΠ°; ΠΏΠ°ΡΡΠ΅Ρ, Π±Π»ΠΈΠ·ΡΠΊ Π΄ΠΎ QuickJS, Π½ΠΎ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠ΅ΠΊΡΡΡΠΈΡ; ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½Π΅ Π² Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΡ
ΠΎΠ΄ Π½Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π±Π°ΠΉΡΠΊΠΎΠ΄Π° ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ (Π² QuickJS ΠΈΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΎΡ
ΠΎΠ΄Π° Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ).
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
