El fundador de QEMU y FFmpeg publica el motor de JavaScript QuickJS

El matemático francés Fabrice Bellard, quien una vez fundó los proyectos QEMU y FFmpeg, y también creó la fórmula más rápida para calcular pi y desarrolló el formato de imagen. BPG, publicó la primera versión de un nuevo motor de JavaScript QuickJS. El motor es compacto y está enfocado a la integración en otros sistemas. El código del proyecto está escrito en C y se distribuye bajo la licencia MIT. También está disponible un ensamblado del motor compilado en WebAssembly utilizando Emscripten y adecuado para su ejecución en navegadores.

Implementación de JavaScript apoyo la especificación ES2019, incluidos módulos, generadores asíncronos y proxies. Las matemáticas no estándar se admiten opcionalmente. extensiones para JavaScript, como los tipos BigInt y BigFloat, así como sobrecarga del operador. En términos de rendimiento, QuickJS es significativo supera análogos existentes, por ejemplo, en la prueba
bench-v8 está por delante del motor XS 35% duktape mas de dos veces jerryscript tres veces y MUJS siete veces

Además de la biblioteca para integrar el motor en las aplicaciones, el proyecto también ofrece el intérprete qjs, que se puede utilizar para ejecutar código JavaScript desde la línea de comandos. Además, está disponible el compilador qjsc, capaz de generar archivos ejecutables independientes que no requieren dependencias externas.

Características principales:

  • Compacto y fácil de integrar en otros proyectos. El código incluye solo unos pocos archivos C que no requieren dependencias externas para compilarse. La aplicación simple compilada ocupa unos 190 KB;
  • Muy alto rendimiento y bajo tiempo de arranque. Superar las 56 100 pruebas de compatibilidad de ECMAScript toma alrededor de 300 segundos cuando se ejecuta en un solo núcleo de una PC de escritorio típica. La inicialización del tiempo de ejecución tarda menos de XNUMX microsegundos;
  • Soporte casi completo para la especificación ES2019 y soporte completo para el Anexo B, que define componentes para compatibilidad con aplicaciones web más antiguas;
  • Aprobación completa de todas las pruebas de ECMAScript Test Suite;
  • Soporte para compilar código Javascript en archivos ejecutables sin dependencias externas;
  • Recolector de basura con recuento de referencias sin ciclo de limpieza, lo que permitió un comportamiento predecible y un consumo de memoria reducido;
  • Un conjunto de extensiones para cálculos matemáticos en el lenguaje JavaScript;
  • Un shell para ejecutar código en modo de línea de comandos que admite el resaltado de código contextual;
  • Una biblioteca estándar compacta con enlaces sobre la biblioteca C.

El proyecto también desarrolla tres bibliotecas C complementarias involucradas en QuickJS y adecuadas para una aplicación separada:

  • libregexp es una implementación rápida de expresiones regulares que cumple totalmente con la especificación Javascript ES 2019;
  • libunicode: una biblioteca compacta para trabajar con Unicode;
  • libbf es una implementación de operaciones de punto flotante de precisión arbitraria y funciones trascendentales de redondeo exacto.

Fuente: opennet.ru

Añadir un comentario