ΠžΡΠ½ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ‚ Π½Π° QEMU ΠΈ FFmpeg ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π° JavaScript двиТСщия QuickJS

ЀрСнският ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊ Ѐабрис Π‘Π΅Π»Π»Π°Ρ€ (Fabrice Bellard), основатСл Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ‚Π΅ QEMU ΠΈ FFmpeg, ΠΈ ΡΡŠΠ·Π΄Π°Ρ‚Π΅Π» Π½Π° Π½Π°ΠΉ-Π±ΡŠΡ€Π·Π°Ρ‚Π° Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° Π·Π° изчисляванС Π½Π° числото Пи, Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΈΠ» Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π·Π° изобраТСния BPG, ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π° ΠΏΡŠΡ€Π²ΠΈΡ си Π±Ρ€ΠΎΠΉ Π½Π° новия JavaScript Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π» QuickJS. ДвигатСлят сС ΠΎΡ‚Π»ΠΈΡ‡Π°Π²Π° със своята компактност ΠΈ Π΅ насочСн към интСграция Π² Π΄Ρ€ΡƒΠ³ΠΈ систСми. ΠšΠΎΠ΄ΡŠΡ‚ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΅ написан Π½Π° C ΠΈ сС разпространява ΠΏΠΎΠ΄ MIT Π»ΠΈΡ†Π΅Π½Π·. Π”ΠΎΡΡ‚ΡŠΠΏΠ½Π° Π΅ ΠΈ вСрсия Π½Π° двигатСля, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π° Π² WebAssembly с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Emscripten, подходяща Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€ΠΈ.

Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡΡ‚Π° Π½Π° JavaScript ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° спСцификацията ES2019, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, асинхронни Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ ΠΈ прокси. Π”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ нСстандартни матСматичСски Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π·Π° JavaScript, ΠΊΠ°Ρ‚ΠΎ Ρ‚ΠΈΠΏΠΎΠ²Π΅ BigInt ΠΈ BigFloat, Π° ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° прСнасочванС Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ. По производитСлност QuickJS Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ надвишава ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡ‚Π΅ Π°Π½Π°Π»ΠΎΠ·ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² тСста
bench-v8 ΠΈΠ·ΠΏΡ€Π΅Π²Π°Ρ€Π²Π° двигатСля XS с 35%, DukTape ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ Π΄Π²Π° ΠΏΡŠΡ‚ΠΈ, JerryScript Ρ‚Ρ€ΠΈ ΠΏΡŠΡ‚ΠΈ, Π° MuJS сСдСм ΠΏΡŠΡ‚ΠΈ.

Π’ допълнСниС към Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Π·Π° интСграция Π½Π° двигатСля Π² прилоТСния, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ qjs, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° изпълнСниС Π½Π° JavaScript ΠΊΠΎΠ΄ ΠΎΡ‚ командния Ρ€Π΅Π΄. ОсвСн Ρ‚ΠΎΠ²Π° Π΅ Π½Π°Π»ΠΈΡ‡Π΅Π½ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ qjsc, способСн Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° испълними Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, Π³ΠΎΡ‚ΠΎΠ²ΠΈ Π·Π° самостоятСлно изпълнСниС Π±Π΅Π· външни зависимости.

Основни характСристики:

  • ΠšΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΡΡ‚ ΠΈ лСсна интСграция Π² Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ. ΠšΠΎΠ΄ΡŠΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π²Π° само няколко Ρ„Π°ΠΉΠ»Π° Π½Π° C, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ изискват външни зависимости Π·Π° компилация. Най-простото скомпилирано ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π΅ΠΌΠ° ΠΎΠΊΠΎΠ»ΠΎ 190 Кб;
  • Много висока производитСлност ΠΈ ΠΊΡ€Π°Ρ‚ΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° стартиранС. ΠŸΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° 56 хиляди тСста Π·Π° ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ с ECMAScript ΠΎΡ‚Π½Π΅ΠΌΠ° ΠΎΠΊΠΎΠ»ΠΎ 100 сСкунди ΠΏΡ€ΠΈ изпълнСниС Π½Π° ядро Π½Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ настолСн ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡΡ‚Π° Π½Π° runtime ΠΎΡ‚Π½Π΅ΠΌΠ° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ‚ 300 микросСкунди;
  • ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ пълна ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° спСцификацията ES2019 ΠΈ пълна ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ β€žBβ€œ, опрСдСлящо ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π·Π° ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ със стари ΡƒΠ΅Π± прилоТСния;
  • Пълно ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ Π½Π° всички тСстовС ΠΎΡ‚ Π½Π°Π±ΠΎΡ€Π° ECMAScript Test Suite;
  • ΠŸΠΎΠ΄ΠΊΡ€Π΅ΠΏΠ° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ Π½Π° JavaScript Π² испълними Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π±Π΅Π· външни зависимости;
  • Π‘ΡŠΠ±ΠΈΡ€Π°Ρ‡ Π½Π° Π±ΠΎΠΊΠ»ΡƒΠΊ Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° Π±Ρ€ΠΎΠ΅Π½Π΅ Π½Π° Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ Π±Π΅Π· Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΎ изпълнСниС Π½Π° почистванС, ΠΊΠΎΠ΅Ρ‚ΠΎ позволява постиганС Π½Π° прСдсказуСмо ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ намаляванС Π½Π° консумацията Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚;
  • ΠšΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ Π·Π° матСматичСски изчислСния Π½Π° Π΅Π·ΠΈΠΊΠ° JavaScript;
  • Обвивка Π·Π° изпълнСниС Π½Π° ΠΊΠΎΠ΄ Π² Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π΅Π½ Ρ€Π΅Π΄, която ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° контСкстно освСтяванС Π½Π° ΠΊΠΎΠ΄Π°;
  • ΠšΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π° стандартна Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° с ΠΎΠ±Π²ΠΈΠ²ΠΊΠΈ Π½Π°Π΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π° C.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Ρ€Π°Π·Π²ΠΈΠ²Π° Ρ‚Ρ€ΠΈ ΡΡŠΠΏΡŠΡ‚ΡΡ‚Π²Π°Ρ‰ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π° C, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² QuickJS ΠΈ подходящи Π·Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:

  • libregexp β€” Π±ΡŠΡ€Π·Π° рСализация Π½Π° рСгулярни ΠΈΠ·Ρ€Π°Π·ΠΈ, напълно ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΈ със спСцификацията Π½Π° Javascript ES 2019;
  • libunicode β€” ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с Unicode;
  • libbf β€” рСализация Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΏΠ»Π°Π²Π°Ρ‰Π° запСтая с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½Π° точност ΠΈ трансцСндСнтни Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π°ΠΊΡ€ΡŠΠ³Π»ΡΠ½Π΅.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

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