Le fondateur de QEMU et FFmpeg a publié le moteur JavaScript QuickJS

Le mathĂ©maticien français Fabrice Bellard, qui a fondĂ© les projets QEMU et FFmpeg, ainsi que créé la formule la plus rapide pour calculer le nombre Pi et dĂ©veloppĂ© le format d'image BPG, a publiĂ© le premier numĂ©ro d'un nouveau moteur JavaScript QuickJS. Ce moteur se distingue par sa compacitĂ© et est conçu pour ĂȘtre intĂ©grĂ© dans d'autres systĂšmes. Le code du projet est Ă©crit en C et distribuĂ© sous licence MIT. Une version du moteur, compilĂ©e en WebAssembly avec Emscripten, est Ă©galement disponible pour ĂȘtre exĂ©cutĂ©e dans les navigateurs.

L'implémentation de JavaScript prend en charge suit la spécification ES2019, y compris les modules, les générateurs asynchrones et les proxies. Le support optionnel des types mathématiques non standards les extensions pour JavaScript, tels que BigInt et BigFloat, ainsi que la surcharge des opérateurs. En termes de performances, QuickJS surpasse de maniÚre significative les alternatives existantes, par exemple, dans le test bench-v8, il devance le moteur
XS de 35%, DukTape de plus de deux fois, JerryScript de trois fois, et MuJS de sept fois. En plus de la bibliothĂšque pour intĂ©grer le moteur dans des 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, un compilateur qjsc est disponible, capable de gĂ©nĂ©rer en sortie des fichiers exĂ©cutables autonomes ne nĂ©cessitant pas de dĂ©pendances externes.

Compacité et facilité d'intégration dans d'autres projets. Le code comprend seulement quelques fichiers en C, ne nécessitant pas de dépendances externes pour la compilation. Une application simple compilée occupe environ 190 Ko;

Caractéristiques principales :

  • Performance trĂšs Ă©levĂ©e et temps de dĂ©marrage rĂ©duit. Passer 56 000 tests de compatibilitĂ© avec ECMAScript prend environ 100 secondes lorsqu'il est exĂ©cutĂ© sur un seul cƓur d'un PC de bureau ordinaire. L'initialisation du runtime prend moins de 300 microsecondes;
  • Support presque complet de la spĂ©cification ES2019 et support total de l'application « B », dĂ©finissant les composants pour la compatibilitĂ© avec les anciennes applications web;
  • Passage complet de tous les tests du jeu de tests ECMAScript;
  • Support de la compilation du code JavaScript en fichiers exĂ©cutables sans dĂ©pendances externes;
  • Ramasse-miettes basĂ© sur le comptage des rĂ©fĂ©rences sans nettoyage cyclique, permettant d'obtenir un comportement prĂ©visible et de rĂ©duire la consommation de mĂ©moire;
  • Ramasse-miettes basĂ© sur le comptage des liens sans exĂ©cution cyclique de nettoyage, permettant d'obtenir un comportement prĂ©visible et une rĂ©duction de la consommation de mĂ©moire.
  • Ensemble d'extensions pour le calcul mathĂ©matique en JavaScript;
  • Interface pour l'exĂ©cution de code en mode ligne de commande, prenant en charge la coloration syntaxique;
  • BibliothĂšque standard compacte avec des liaisons aux bibliothĂšques C.

Le projet développe également trois bibliothÚques C complémentaires, utilisées dans QuickJS et adaptées à un usage distinct :

  • libregexp — une implĂ©mentation rapide des expressions rĂ©guliĂšres, entiĂšrement compatible avec la spĂ©cification JavaScript ES 2019;
  • libunicode — bibliothĂšque compacte pour le traitement de l'Unicode;
  • libbf — implĂ©mentation d'opĂ©rations Ă  virgule flottante de prĂ©cision arbitraire et de fonctions transcendantales avec un arrondi exact.

Source : opennet.ru

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster