ΠžΡΠ½ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ‚ Π½Π° QEMU ΠΈ FFmpeg ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π° JavaScript двигатСля Micro QuickJS

ЀрСнският ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊ Ѐабрис Π‘Π΅Π»Π»Π°Ρ€ (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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster