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

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

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

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

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

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

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΈ Π²ΡŠΡ€Ρ…Ρƒ Ρ‚Ρ€ΠΈ ΡΡŠΠΏΡŠΡ‚ΡΡ‚Π²Π°Ρ‰ΠΈ C Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² QuickJS ΠΈ подходящи Π·Π° самостоятСлно ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:

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

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

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