Fabrice Bellard est un mathématicien, ingénieur et développeur français. Il est surtout connu comme étant le développeur principal de QEMU (un émulateur qui permet d'émuler diverses architectures matérielles) et Tiny C Compiler (tcc), un compilateur C très petit, mais complet, qui a été écrit à l'origine pour gagner le concours humoristique « International Obfuscated C Code Contest » (concours du code le plus obscur en langage C).
Fabrice Bellard
Il est aussi connu pour avoir mis en place le serveur Vidéotex Buster (dédié au téléchargement de logiciels freewares via Minitel) par son utilitaire sous DOS nommé LZEXE qui comprimait un exécutable en le précédant du code qui le décompressait au chargement. Il a présenté QuickJS cette semaine, un moteur JavaScript petit et intégrable, prenant en charge la spécification ES2019, y compris les modules, les générateurs asynchrones et les mandataires. Voyons ci-dessous les caractéristiques essentielles qu’il cite à QuickJS :
- petit et facilement intégrable : QuickJS comporte juste quelques fichiers C et ne possède aucune dépendance externe. C’est environ 190 Ko de code x86 pour un programme « hello world » ;
- QuickJS un s'interprète rapidement avec un temps de démarrage très court : QuickJS exécute les 56 000 tests de la suite de tests ECMAScript en environ 100 secondes sur un seul cœur d’un PC de bureau. Le cycle de vie complet d'une instance d'exécution se termine en moins de 300 microsecondes ;
- QuickJS prend en charge presque complètement les spécifications d’EcmaScript 2019. Ceci comprend les modules, les générateurs asynchrones et une prise en charge complète de l’Annexe B (compatibilité Web héritée) ;
- QuickJS peut compiler des sources JavaScript en exécutables sans recourir à une dépendance externe ;
- QuickJS collecte des miettes en utilisant le comptage de références (pour réduire l'utilisation de la mémoire et un comportement déterministe) avec la suppression des cycles ;
- QuickJS prend en charge des extensions mathématiques : BigInt, BigFloat, surcharge d’opérateur, mode bigint, mode mathématique ;
- c’est un interpréteur de ligne de commande avec une colorisation contextuelle implémentée en JavaScript ;
- il propose une petite bibliothèque standard intégrée avec les wrappers de la bibliothèque C.
QuickJS intègre les bibliothèques C suivantes pouvant être utilisées dans d'autres projets :
- libregexp : une petite bibliothèque rapide d'expressions rationnelles entièrement conforme à la spécification JavaScript ES2019 ;
- libunicode : une petite bibliothèque Unicode prenant en charge la conversion de casse, la normalisation Unicode, les requêtes de script Unicode, les requêtes de catégorie générale Unicode et toutes les propriétés binaires Unicode ;
- libbf : il s'agit aussi d'une petite bibliothèque implémentant des opérations à virgule flottante IEEE 754 et des fonctions transcendantales avec arrondi exact. Il est maintenu en tant que projet séparé.
À l’installation, un Makefile est fourni pour compiler le moteur sous Linux ou Mac OS/X. Un support Windows préliminaire est disponible via une compilation croisée sur un hôte Linux avec les outils MingGW. Modifiez le haut de la liste Makefile si vous souhaitez sélectionner des options spécifiques, puis exécutez les make. Vous pouvez taper « make install » en tant que root si vous souhaitez installer les fichiers binaires et les fichiers de support sur /usr/local (ceci n'est pas nécessaire pour utiliser QuickJS).
Vous pouvez consulter la documentation de QuickJS sur son site Web pour en savoir plus. Il fournit également des informations sur le benchmark montrant les performances de QuickJS avec le moteur V8 de Google et une comparaison entre ce dernier et d'autres outils de la même catégorie, notamment DuckTape version 2.3.0, XS version 8.8.0, MuJS version 1.0.6 et JerryScript version 2b8c4286 de git. Tous les moteurs JS testés sont des interprètes et fonctionnent avec des ressources limitées. Pour finir, notez que tous les programmes ont été compilés avec le compilateur GCC 4.9.2 sur un Fedora 21. Ils ont été exécutés sur un processeur Core i5 4570 à 3,2 GHz.
Source : QuickJS
Et vous ?
Qu'en pensez-vous ?
Voir aussi
France : un développeur du logiciel VLC et un hacker nommés chevaliers de l'Ordre du Mérite pour leur contribution dans le domaine du logiciel libre
BPG : un nouveau format d'image de qualité supérieure, basé sur la compression HEVC. Il se positionne comme un remplaçant de JPEG
Le moteur de JavaScript V8 de Chrome bénéficie d'un lot d'améliorations, afin de le rendre plus rapide et moins lourd