Le fondateur de QEMU et FFmpeg publie le moteur JavaScript QuickJS

Le mathématicien français Fabrice Bellard, fondateur des projets QEMU et FFmpeg, a également créé la formule la plus rapide pour calculer le nombre Pi et développé le format d'image BPG, a publié la première version du nouveau moteur JavaScript QuickJS. Le moteur est compact et conçu pour être intégré à d’autres systèmes. Le code du projet est écrit en C et est distribué sous licence MIT. Une version du moteur est également disponible, compilée dans WebAssembly à l'aide d'Emscripten et adaptée à l'exécution dans les navigateurs.

Implémentation JavaScript soutient le Spécification ES2019, comprenant des modules, des générateurs asynchrones et des proxys. Les mathématiques non standard sont prises en charge en option élargir le pour JavaScript, comme les types BigInt et BigFloat, ainsi que surcharge de l'opérateur. Les performances de QuickJS sont significatives surpasse analogues disponibles, par exemple, dans le test
bench-v8 est en avance sur le moteur XS 35% DukTape plus que doublé jerryscript trois fois et MuJS sept fois.

En plus de la bibliothèque permettant d'intégrer le moteur dans les applications, le projet propose également un interpréteur qjs, qui peut être utilisé pour exécuter du code JavaScript à partir de la ligne de commande. De plus, le compilateur qjsc est disponible, capable de générer des fichiers exécutables de sortie adaptés à une exécution autonome qui ne nécessitent pas de dépendances externes.

Caractéristiques principales:

  • Compact et facile à intégrer dans d'autres projets. Le code ne comprend que quelques fichiers C qui ne nécessitent pas de dépendances externes pour l'assemblage. L'application compilée la plus simple prend environ 190 Ko ;
  • Très hautes performances et temps de démarrage court. La réussite de 56 100 tests de compatibilité ECMAScript prend environ 300 secondes lorsqu'elle est exécutée sur un seul cœur d'un ordinateur de bureau classique. L'initialisation de l'exécution prend moins de XNUMX microsecondes ;
  • Prise en charge presque complète de la spécification ES2019 et prise en charge complète de l'annexe B, qui définit les composants pour la compatibilité avec les applications Web existantes ;
  • Réussite complète de tous les tests de la suite de tests ECMAScript ;
  • Prise en charge de la compilation de code Javascript en fichiers exécutables sans dépendances externes ;
  • Un garbage collector basé sur le comptage de références sans nettoyage cyclique, qui nous a permis d'obtenir un comportement prévisible et de réduire la consommation de mémoire ;
  • Un ensemble d'extensions pour les calculs mathématiques en JavaScript ;
  • Un shell pour exécuter du code en mode ligne de commande, prenant en charge la mise en évidence contextuelle du code ;
  • Bibliothèque standard compacte avec des wrappers sur la bibliothèque C.

Le projet développe également trois bibliothèques C d'accompagnement impliquées dans QuickJS et adaptées à un usage individuel :

  • libregexp - implémentation rapide d'expressions régulières, entièrement compatible avec la spécification Javascript ES 2019 ;
  • libunicode - une bibliothèque compacte pour travailler avec Unicode ;
  • libbf - Implémentation d'opérations à virgule flottante de précision arbitraire et de fonctions transcendantales avec arrondi exact.

Source: opennet.ru

Ajouter un commentaire