El fundador de QEMU i FFmpeg publica QuickJS JavaScript Engine

El matemàtic francès Fabrice Bellard, que va fundar els projectes QEMU i FFmpeg, també va crear la fórmula més ràpida per calcular el nombre Pi i va desenvolupar el format d'imatge. PIB, va publicar la primera versió del nou motor JavaScript QuickJS. El motor és compacte i està dissenyat per a la integració en altres sistemes. El codi del projecte està escrit en C i es distribueix sota la llicència MIT. També hi ha disponible una versió del motor, compilada a WebAssembly mitjançant Emscripten i adequada per a l'execució en navegadors.

Implementació de JavaScript suports Especificació ES2019, incloent mòduls, generadors asíncrons i servidors intermediaris. Opcionalment s'admeten matemàtiques no estàndard expansió per a JavaScript, com ara els tipus BigInt i BigFloat, així com sobrecàrrega de l'operador. El rendiment de QuickJS és important superior a anàlegs disponibles, per exemple, a la prova
bench-v8 està per davant del motor XS un 35%, duktape més de dues vegades JerryScript tres vegades i MuJS set vegades.

A més de la biblioteca per incrustar el motor a les aplicacions, el projecte també ofereix un intèrpret qjs, que es pot utilitzar per executar codi JavaScript des de la línia d'ordres. A més, està disponible el compilador qjsc, capaç de generar fitxers executables de sortida adequats per a una execució autònoma que no requereixen dependències externes.

Característiques principals:

  • Compacte i fàcil d'integrar en altres projectes. El codi inclou només uns quants fitxers C que no requereixen dependències externes per al muntatge. L'aplicació compilada més senzilla ocupa uns 190 KB;
  • Molt alt rendiment i temps d'arrencada curt. Superar 56 mil proves de compatibilitat ECMAScript triga uns 100 segons quan s'executa en un sol nucli d'un ordinador d'escriptori normal. La inicialització del temps d'execució triga menys de 300 microsegons;
  • Suport gairebé complet per a l'especificació ES2019 i suport complet per a l'apèndix B, que defineix components per a la compatibilitat amb aplicacions web heretades;
  • Superació completa de totes les proves de l'ECMAScript Test Suite;
  • Suport per compilar codi Javascript en fitxers executables sense dependències externes;
  • Un col·lector d'escombraries basat en el recompte de referència sense neteja cíclica, que ens va permetre aconseguir un comportament previsible i reduir el consum de memòria;
  • Un conjunt d'extensions per a càlculs matemàtics en JavaScript;
  • Un intèrpret d'ordres per executar codi en mode de línia d'ordres, que admet el ressaltat de codi contextual;
  • Biblioteca estàndard compacta amb embolcalls sobre la biblioteca C.

El projecte també està desenvolupant tres biblioteques C acompanyades implicades en QuickJS i adequades per a ús individual:

  • libregexp: implementació ràpida d'expressions regulars, totalment compatible amb l'especificació Javascript ES 2019;
  • libunicode - una biblioteca compacta per treballar amb Unicode;
  • libbf - Implementació d'operacions de coma flotant de precisió arbitrària i funcions transcendentals amb arrodoniment exacte.

Font: opennet.ru

Afegeix comentari