El matemàtic francès Fabrice Bellard, Qui va fundar els projectes QEMU i FFmpeg i qui a més també va crear la fórmula més ràpida per calcular el nombre Pi i desenvolupar el format d'imatge BPG.
Fabrice Bellard és millor conegut com el desenvolupador principal de QEMU (Un emulador que emula diverses arquitectures de maquinari) i Tiny C Compiler (tcc), un compilador de C molt petit però complet, que originalment es va escriure per guanyar el concurs "International Obfuscated C Code Contest».
Ara recentment va compartir a el públic la primera versió del seu nou treball el qual és en JavaScript i aquest és un nou motor anomenat JavaScript QuickJS.
Sobre JavaScript QuickJS
El motor JavaScript QuickJS és compacte i enfocat a la incorporació en altres sistemes. El codi de el projecte està escrit en C i distribuït sota la llicència MIT. També està disponible un recull de motor compilada en WebAssembly utilitzant Emscripten i adequada per a l'execució en navegadors.
La implementació de JavaScript és compatible amb l'especificació ES2019, inclosos mòduls, generadors asíncrons i proxys.
Al motor JavaScript QuickJS s'admeten les extensions matemàtiques no estàndard opcionals per a JavaScript, Com els tipus BIGINT i BigFloat, així com la sobrecàrrega de l'operador.
Per rendiment, QuickJS supera significativament els anàlegs disponibles, Per exemple, en la prova bench-v8, el motor XS està 35% avançat, DukTape més que duplicat, JerryScript tres vegades i MuJS set vegades.
A més de la biblioteca per incrustar el motor en l'aplicació, el projecte també ofereix l'intèrpret qjs, que es pot usar per a executar codi JavaScript des de la línia d'ordres.
A més, el compilador qjsc està disponible i és capaç de generar a la sortida arxius executables que es poden executar per separat i que aquests no requereixen dependències externes.
De les característiques principals de l'motor JavaScript QuickJS es destaquen els següents punts:
- Compacte i fàcil d'integrar en altres projectes. El codi inclou només uns pocs arxius C que no requereixen dependències externes per construir. Una aplicació simple compilada pren al voltant de 190 Kb
- Molt alt rendiment i temps d'arrencada ràpids. Passar 56 mil proves de compatibilitat amb ECMAScript presa aproximadament 100 segons quan s'executa un ordinador d'escriptori normal en un nucli. La inicialització de el temps d'execució pren menys de 300 microsegons
- Suport gairebé complet per a l'especificació ES2019 i suport complet per a l'aplicació «B», que defineix els components per a la compatibilitat amb aplicacions web antigues
- Completar el passatge de totes les proves de l'ECMAScript Test Suite
- Suport per compilar codi Javascript en arxius executables sense dependències externes
- El recol·lector d'escombraries es basa en el recompte de referències sense realitzar una neteja cíclica, el que va permetre aconseguir un comportament predictible i reduir el consum de memòria
- Un conjunt d'extensions per a càlculs matemàtics en el llenguatge JavaScript
- Un shell per a executar codi en la manera de línia d'ordres, que admet el ressaltat de codi contextual
- Biblioteca estàndard compacta sobre la biblioteca C
A més d'això, d'altra banda en el projecte també s'estan desenvolupant tres biblioteques C relacionades involucrades en QuickJS i adequades per a ús individual:
- freegexp: una petita i ràpida biblioteca d'expressions regulars que compleix amb l'especificació de JavaScript ES2019
- libunicode: una petita biblioteca d'Unicode que admet la conversió de casos, la normalització d'Unicode, les sol·licituds d'scripts d'Unicode, les consultes de categories generals d'Unicode i totes les propietats binàries d'Unicode
- libbf: Aquesta és també una petita biblioteca que implementa operacions de punt flotant IEEE 754 i funcions transcendentals amb arrodoniment exacte. Es manté com un projecte separat.
¿Com obtenir SavaScript QuickJS?
La descàrrega de el codi font per a la seva compilació Podeu fer des el següent enllaç. Després de la instal·lació, es proporciona un Makefile per compilar el motor en Linux o Mac OS / X.
En el mateix enllaç es pot consultar la documentació de QuickJS per obtenir més informació. També proporciona informació de referència que mostra el rendiment de QuickJS amb el motor V8 de Google i una comparació entre aquest i altres eines en la mateixa categoria.