Ang QEMU at FFmpeg Founder ay Nag-publish ng QuickJS JavaScript Engine

Ang French mathematician na si Fabrice Bellard, na nagtatag ng mga proyektong QEMU at FFmpeg, ay lumikha din ng pinakamabilis na formula para sa pagkalkula ng Pi at binuo ang format ng imahe. BPG, nai-publish ang unang release ng bagong JavaScript engine QuickJS. Ang makina ay compact at dinisenyo para sa pagsasama sa iba pang mga system. Ang code ng proyekto ay nakasulat sa C at ipinamamahagi sa ilalim ng lisensya ng MIT. Available din ang build ng engine, na pinagsama-sama sa WebAssembly gamit ang Emscripten at angkop para sa pagpapatupad sa mga browser.

Pagpapatupad ng JavaScript sumusuporta Ang detalye ng ES2019, kabilang ang mga module, asynchronous na generator at proxy. Opsyonal na sinusuportahan ang mga hindi karaniwang matematika pagpapalawak para sa JavaScript, gaya ng mga uri ng BigInt at BigFloat, pati na rin overloading ng operator. Ang pagganap ng QuickJS ay makabuluhan superyor sa magagamit na mga analogue, halimbawa, sa pagsubok
ang bench-v8 ay nauuna sa makina XS sa 35%, DukTape higit sa doble jerryscript tatlong beses at MuJS pitong beses.

Bilang karagdagan sa library para sa pag-embed ng engine sa mga application, nag-aalok din ang proyekto ng isang qjs interpreter, na maaaring magamit upang patakbuhin ang JavaScript code mula sa command line. Bukod dito, ang qjsc compiler ay magagamit, na may kakayahang bumuo ng mga output executable file na angkop para sa stand-alone na pagpapatupad na hindi nangangailangan ng mga panlabas na dependency.

Pangunahing mga tampok:

  • Compact at madaling isama sa iba pang mga proyekto. Ang code ay nagsasama lamang ng ilang C file na hindi nangangailangan ng mga panlabas na dependency para sa pagpupulong. Ang pinakasimpleng pinagsama-samang application ay tumatagal ng humigit-kumulang 190 KB;
  • Napakataas na pagganap at maikling oras ng pagsisimula. Ang pagpasa sa 56 libong ECMAScript compatibility test ay tumatagal ng humigit-kumulang 100 segundo kapag naisagawa sa isang core ng isang regular na desktop PC. Ang runtime initialization ay tumatagal ng mas mababa sa 300 microseconds;
  • Halos buong suporta para sa detalye ng ES2019 at buong suporta para sa Appendix B, na tumutukoy sa mga bahagi para sa pagiging tugma sa mga legacy na web application;
  • Kumpletuhin ang pagpasa sa lahat ng mga pagsubok mula sa ECMAScript Test Suite;
  • Suporta para sa pag-compile ng Javascript code sa mga executable na file nang walang mga panlabas na dependency;
  • Isang kolektor ng basura batay sa pagbibilang ng sanggunian nang walang cyclic na paglilinis, na nagbigay-daan sa amin na makamit ang predictable na gawi at mabawasan ang pagkonsumo ng memorya;
  • Isang hanay ng mga extension para sa mathematical na mga kalkulasyon sa JavaScript;
  • Isang shell para sa pagpapatupad ng code sa command line mode, na sumusuporta sa contextual code highlighting;
  • Compact na karaniwang library na may mga wrapper sa ibabaw ng C library.

Ang proyekto ay gumagawa din ng tatlong kasamang C library na kasangkot sa QuickJS at angkop para sa indibidwal na paggamit:

  • libregexp - mabilis na pagpapatupad ng mga regular na expression, ganap na tugma sa pagtutukoy ng Javascript ES 2019;
  • libunicode - isang compact library para sa pagtatrabaho sa Unicode;
  • libbf - Pagpapatupad ng di-makatwirang katumpakan na mga pagpapatakbo ng floating point at transendental na function na may eksaktong pag-ikot.

Pinagmulan: opennet.ru

Magdagdag ng komento