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:

freegexp: una pequeña y rápida biblioteca de expresiones regulares que cumple con la especificación de JavaScript ES2019 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 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.