Π€ΡΠ΅Π½ΡΠΊΠΈΡΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊ Π€Π°Π±ΡΠΈΡ ΠΠ΅Π»Π°Ρ (Fabrice Bellard), ΠΎΡΠ½ΠΎΠ²Π°ΡΠ΅Π» Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΠΊΠ°ΡΠΎ QEMU, FFmpeg, BPG, QuickJS, TinyGL ΠΈ TinyCC, ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° Π½ΠΎΠ² JavaScript Π΄Π²ΠΈΠ³Π°ΡΠ΅Π» Π·Π° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ β Micro QuickJS, ΡΠΏΠΎΡΠΎΠ±Π΅Π½ Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ° ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° JavaScript ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ, ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ²Π°ΠΉΠΊΠΈ ΡΠ°ΠΌΠΎ 10 ΠΠ RAM. Π ΡΡΡΠ΅ΡΠ°Π½ΠΈΠ΅ Ρ C Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ°, Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»ΡΡ Π·Π°Π΅ΠΌΠ° ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ 100 ΠΠ ΠΏΠΎΡΡΠΎΡΠ½Π½Π° ΠΏΠ°ΠΌΠ΅Ρ. ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° JavaScript Π² Π±Π°ΠΉΡΠΊΠΎΠ΄ ΠΈ ΠΎΡΠ΄Π΅Π»Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π±Π°ΠΉΡΠΊΠΎΠ΄Π°. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° C ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ MIT Π»ΠΈΡΠ΅Π½Π·.
ΠΠ²ΠΈΠ³Π°ΡΠ΅Π»ΡΡ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½Π° JavaScript, Π±Π»ΠΈΠ·ΠΊΠΎ Π΄ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° ECMAScript 5 (ES2019), Π½ΠΎ ΠΈΠΌΠ° ΠΏΠΎ-ΡΡΡΠΎΠ³ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡ ΠΊΡΠΌ ΠΊΠΎΠ΄Π° ΠΈ Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π½ΡΠΊΠΎΠΈ Π½Π΅Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΈ ΠΈΠ»ΠΈ Π²ΠΎΠ΄Π΅ΡΠΈ Π΄ΠΎ Π³ΡΠ΅ΡΠΊΠΈ JavaScript ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π³Π»ΠΎΠ±Π°Π»Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΡΡΡΠ±Π²Π° Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° ΡΠ΅ Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ°Ρ Ρ ΠΊΠ»ΡΡΠΎΠ²Π°ΡΠ° Π΄ΡΠΌΠ° Β«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
