ΠžΡΠ½ΠΎΠ²Π°Ρ‡ΠΎΡ‚ Π½Π° QEMU ΠΈ FFmpeg Π³ΠΎ ΠΎΠ±Ρ˜Π°Π²ΡƒΠ²Π° QuickJS JavaScript Engine

Ѐранцускиот ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π°Ρ€ Ѐабрис Π‘Π΅Π»Π°Ρ€Π΄, кој Π³ΠΈ основа ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ‚Π΅ QEMU ΠΈ FFmpeg, исто Ρ‚Π°ΠΊΠ° ја создадС Π½Π°Ρ˜Π±Ρ€Π·Π°Ρ‚Π° Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° Π·Π° ΠΏΡ€Π΅ΡΠΌΠ΅Ρ‚ΡƒΠ²Π°ΡšΠ΅ Π½Π° Пи ΠΈ Π³ΠΎ Ρ€Π°Π·Π²ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΡ‚ Π½Π° сликата Π‘ΠŸΠ“, Π³ΠΎ објави ΠΏΡ€Π²ΠΎΡ‚ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° Π½ΠΎΠ²ΠΈΠΎΡ‚ JavaScript ΠΌΠΎΡ‚ΠΎΡ€ QuickJS. ΠœΠΎΡ‚ΠΎΡ€ΠΎΡ‚ Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π΅Π½ ΠΈ Π΄ΠΈΠ·Π°Ρ˜Π½ΠΈΡ€Π°Π½ Π·Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π° Π²ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ систСми. ΠšΠΎΠ΄ΠΎΡ‚ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ Π΅ напишан Π²ΠΎ C ΠΈ сС дистрибуира ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Ρ†Π°Ρ‚Π° MIT. Достапна Π΅ ΠΈ Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π½Π° ΠΌΠΎΡ‚ΠΎΡ€ΠΎΡ‚, ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°Π½Π° Π²ΠΎ WebAssembly со помош Π½Π° Emscripten ΠΈ ΠΏΠΎΠ³ΠΎΠ΄Π½Π° Π·Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π²ΠΎ прСлистувачи.

Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π½Π° JavaScript ΠΏΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π° Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ES2019, Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Ρ˜ΡœΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, асинхрони Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ ΠΈ прокси. НСстандарднитС ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ сС ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ ΠΏΠΎΠ΄Π΄Ρ€ΠΆΠ°Π½ΠΈ Скспанзија Π·Π° JavaScript, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС Ρ‚ΠΈΠΏΠΎΠ²ΠΈΡ‚Π΅ BigInt ΠΈ BigFloat, ΠΊΠ°ΠΊΠΎ ΠΈ ΠΏΡ€Π΅ΠΎΠΏΡ‚ΠΎΠ²Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΡ‚. ΠŸΠ΅Ρ€Ρ„ΠΎΡ€ΠΌΠ°Π½ΡΠΈΡ‚Π΅ Π½Π° QuickJS сС Π·Π½Π°Ρ‡Π°Ρ˜Π½ΠΈ супСриорСн Π²ΠΎ однос Π½Π° достапни Π°Π½Π°Π»ΠΎΠ·ΠΈ, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΎ тСстот
bench-v8 Π΅ ΠΏΡ€Π΅Π΄ ΠΌΠΎΡ‚ΠΎΡ€ΠΎΡ‚ XS Π·Π° 35%, DukTape повСќС ΠΎΠ΄ двојно RyΠ΅Ρ€ΠΈ Π‘ΠΊΡ€ΠΈΠΏΡ‚ Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ‚ΠΈ ΠΈ MuJS сСдум ΠΏΠ°Ρ‚ΠΈ.

ΠŸΠΎΠΊΡ€Π°Ρ˜ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Π·Π° Π²Π³Ρ€Π°Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΌΠΎΡ‚ΠΎΡ€ΠΎΡ‚ Π²ΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ Π½ΡƒΠ΄ΠΈ ΠΈ ΠΏΡ€Π΅Π²Π΅Π΄ΡƒΠ²Π°Ρ‡ qjs, кој ΠΌΠΎΠΆΠ΅ Π΄Π° сС користи Π·Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π° JavaScript ΠΊΠΎΠ΄ ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ‚Π° линија. ΠŸΠΎΠΊΡ€Π°Ρ˜ Ρ‚ΠΎΠ°, ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€ΠΎΡ‚ qjsc Π΅ достапСн, способСн Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° ΠΈΠ·Π»Π΅Π·Π½ΠΈ ΠΈΠ·Π²Ρ€ΡˆΠ½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΈ Π·Π° ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡ˜Π½ΠΎ ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ ΠΊΠΎΠΈ Π½Π΅ Π±Π°Ρ€Π°Π°Ρ‚ Π½Π°Π΄Π²ΠΎΡ€Π΅ΡˆΠ½ΠΈ зависности.

Π“Π»Π°Π²Π½ΠΈ карактСристики:

  • ΠšΠΎΠΌΠΏΠ°ΠΊΡ‚Π΅Π½ ΠΈ лСсСн Π·Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°ΡšΠ΅ Π²ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ. ΠšΠΎΠ΄ΠΎΡ‚ Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π° само Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ C ΠΊΠΎΠΈ Π½Π΅ Π±Π°Ρ€Π°Π°Ρ‚ Π½Π°Π΄Π²ΠΎΡ€Π΅ΡˆΠ½ΠΈ зависности Π·Π° ΡΠΊΠ»ΠΎΠΏΡƒΠ²Π°ΡšΠ΅. ΠΠ°Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½Π°Ρ‚Π° ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Ρ‚Ρ€Π°Π΅ ΠΎΠΊΠΎΠ»Ρƒ 190 KB;
  • ΠœΠ½ΠΎΠ³Ρƒ високи пСрформанси ΠΈ ΠΊΡ€Π°Ρ‚ΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° ΡΡ‚Π°Ρ€Ρ‚ΡƒΠ²Π°ΡšΠ΅. ΠŸΠΎΠ»Π°Π³Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° 56 илјади тСстови Π·Π° компатибилност ECMAScript Ρ‚Ρ€Π°Π΅ ΠΎΠΊΠΎΠ»Ρƒ 100 сСкунди ΠΊΠΎΠ³Π° сС ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π° Π½Π° Π΅Π΄Π½ΠΎ Ρ˜Π°Π΄Ρ€ΠΎ Π½Π° ΠΎΠ±ΠΈΡ‡Π΅Π½ дСсктоп ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€. Π˜Π½ΠΈΡ†ΠΈΡ˜Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° Ρ‚Ρ€Π°Π΅ΡšΠ΅ Ρ‚Ρ€Π°Π΅ ΠΏΠΎΠΌΠ°Π»ΠΊΡƒ ΠΎΠ΄ 300 микросСкунди;
  • РСчиси цСлосна ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° ES2019 ΠΈ цСлосна ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° Π”ΠΎΠ΄Π°Ρ‚ΠΎΠΊ Π‘, кој Π³ΠΈ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ Π·Π° компатибилност со наслСдни Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ;
  • ЦСлосно полагањС Π½Π° ситС тСстови ΠΎΠ΄ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΡ‚ Π·Π° Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ ECMAScript;
  • ΠŸΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°ΡšΠ΅ Javascript ΠΊΠΎΠ΄ Π²ΠΎ ΠΈΠ·Π²Ρ€ΡˆΠ½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ Π±Π΅Π· Π½Π°Π΄Π²ΠΎΡ€Π΅ΡˆΠ½ΠΈ зависности;
  • Π‘ΠΎΠ±ΠΈΡ€Π°Ρ‡ Π½Π° Ρ“ΡƒΠ±Ρ€Π΅ Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½ΠΎ Π±Ρ€ΠΎΠ΅ΡšΠ΅ Π±Π΅Π· Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΎ Ρ‡ΠΈΡΡ‚Π΅ΡšΠ΅, ΡˆΡ‚ΠΎ Π½ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π΄Π° постигнСмС ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π»ΠΈΠ²ΠΎ ΠΎΠ΄Π½Π΅ΡΡƒΠ²Π°ΡšΠ΅ ΠΈ Π΄Π° ја Π½Π°ΠΌΠ°Π»ΠΈΠΌΠ΅ ΠΏΠΎΡ‚Ρ€ΠΎΡˆΡƒΠ²Π°Ρ‡ΠΊΠ°Ρ‚Π° Π½Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°;
  • Π—Π±ΠΈΡ€ Π½Π° СкстСнзии Π·Π° ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡ΠΊΠΈ прСсмСтки Π²ΠΎ JavaScript;
  • Π¨ΠΊΠΎΠ»ΠΊΠ° Π·Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΊΠΎΠ΄ Π²ΠΎ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π° линија, ΠΏΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π°Ρ˜ΡœΠΈ контСкстуално ΠΈΡΡ‚Π°ΠΊΠ½ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΊΠΎΠ΄ΠΎΡ‚;
  • ΠšΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π° стандардна Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° со ΠΎΠ±Π²ΠΈΠ²ΠΊΠΈ Π½Π°Π΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° C.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ исто Ρ‚Π°ΠΊΠ° Ρ€Π°Π·Π²ΠΈΠ²Π° Ρ‚Ρ€ΠΈ ΠΏΡ€ΠΈΠ΄Ρ€ΡƒΠΆΠ½ΠΈ C Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π²ΠΊΠ»ΡƒΡ‡Π΅Π½ΠΈ Π²ΠΎ QuickJS ΠΈ ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΈ Π·Π° ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°:

  • libregexp - Π±Ρ€Π·Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π½Π° Ρ€Π΅Π³ΡƒΠ»Π°Ρ€Π½ΠΈ ΠΈΠ·Ρ€Π°Π·ΠΈ, цСлосно ΠΊΠΎΠΌΠΏΠ°Ρ‚ΠΈΠ±ΠΈΠ»Π½ΠΈ со Javascript ES 2019 ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π°;
  • libunicode - ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° со Unicode;
  • libbf - Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΏΡ€Π΅Ρ†ΠΈΠ·Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ со ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½Π° Π·Π°ΠΏΠΈΡ€ΠΊΠ° ΠΈ трансцСндСнтални Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ со Ρ‚ΠΎΡ‡Π½ΠΎ Π·Π°ΠΎΠΊΡ€ΡƒΠΆΡƒΠ²Π°ΡšΠ΅.

Π˜Π·Π²ΠΎΡ€: opennet.ru

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€