QuickJS: un motor de JavaScript ligero desarrollado por el fundador de QEMU y FFmpeg

JavaScript

El matemático francés Fabrice Bellard, quien fundó los proyectos QEMU y FFmpeg y quien además también creó la fórmula más rápida para calcular el número Pi y desarrolló el formato de imagen BPG.

Fabrice Bellard es mejor conocido como el desarrollador principal de QEMU (un emulador que emula varias arquitecturas de hardware) y Tiny C Compiler (tcc), un compilador de C muy pequeño pero completo, que originalmente se escribió para ganar el concurso “International Obfuscated C Code Contest”.

Ahora recientemente compartió al publico la primera versión de su nuevo trabajo el cual es en JavaScript y este es un nuevo motor llamado JavaScript QuickJS.

Sobre JavaScript QuickJS

El motor JavaScript QuickJS es compacto y enfocado a la incorporación en otros sistemas. El código del proyecto está escrito en C y distribuido bajo la licencia MIT. También está disponible una compilación de motor compilada en WebAssembly utilizando Emscripten y adecuada para la ejecución en navegadores.

La implementación de JavaScript es compatible con la especificación ES2019, incluidos módulos, generadores asíncronos y proxys.

En el motor JavaScript QuickJS se admiten las extensiones matemáticas no estándar opcionales para JavaScript, como los tipos BigInt y BigFloat, así como la sobrecarga del operador.

Por rendimiento, QuickJS supera significativamente los análogos disponibles, por ejemplo, en la prueba bench-v8, el motor XS está 35% adelantado , DukTape más que duplicado, JerryScript tres veces y MuJS siete veces.

Además de la biblioteca para incrustar el motor en la aplicación, el proyecto también ofrece el intérprete qjs, que se puede usar para ejecutar código JavaScript desde la línea de comandos.

Además, el compilador qjsc está disponible y es capaz de generar en la salida archivos ejecutables que se pueden ejecutar por separado y que estos no requieren dependencias externas.

De las características principales del motor JavaScript QuickJS se destacan los siguientes puntos:

  • Compacto y fácil de integrar en otros proyectos. El código incluye solo unos pocos archivos C que no requieren dependencias externas para construir. Una aplicación simple compilada toma alrededor de 190 Kb
  • Muy alto rendimiento y tiempos de arranque rápidos. Pasar 56 mil pruebas de compatibilidad con ECMAScript toma aproximadamente 100 segundos cuando se ejecuta una computadora de escritorio normal en un núcleo. La inicialización del tiempo de ejecución toma menos de 300 microsegundos
  • Soporte casi completo para la especificación ES2019 y soporte completo para la aplicación “B”, que define los componentes para la compatibilidad con aplicaciones web antiguas
  • Completar el pasaje de todas las pruebas del ECMAScript Test Suite
  • Soporte para compilar código Javascript en archivos ejecutables sin dependencias externas
  • El recolector de basura se basa en el conteo de referencias sin realizar una limpieza cíclica, lo que permitió lograr un comportamiento predecible y reducir el consumo de memoria
  • Un conjunto de extensiones para cálculos matemáticos en el lenguaje JavaScript
  • Un shell para ejecutar código en el modo de línea de comando, que admite el resaltado de código contextual
  • Biblioteca estándar compacta sobre la biblioteca C

Además de esto, por otra parte en el proyecto también se están desarrollando tres bibliotecas C relacionadas involucradas en QuickJS y adecuadas para uso individual:

  1. freegexp: una pequeña y rápida biblioteca de expresiones regulares que cumple con la especificación de JavaScript ES2019
  2. libunicode: una pequeña biblioteca de Unicode que admite la conversión de casos, la normalización de Unicode, las solicitudes de scripts de Unicode, las consultas de categorías generales de Unicode y todas las propiedades binarias de Unicode
  3. libbf: Esta es también una pequeña biblioteca que implementa operaciones de punto flotante IEEE 754 y funciones trascendentales con redondeo exacto. Se mantiene como un proyecto separado.

¿Como obtener SavaScript QuickJS?

La descarga del codigo fuente para su compilacion la pueden hacer desde el siguiente enlace. Tras la instalación, se proporciona un Makefile para compilar el motor en Linux o Mac OS / X.

En el mismo enlace se puede consultar la documentación de QuickJS para obtener más información. También proporciona información de referencia que muestra el rendimiento de QuickJS con el motor V8 de Google y una comparación entre este y otras herramientas en la misma categoría.

Sé el primero en comentar

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.