IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques & Frameworks Discussion :

QuickJS : un moteur JavaScript léger, prenant en charge la spécification ES2019


Sujet :

Bibliothèques & Frameworks

  1. #1
    Chroniqueur Actualités

    Homme Profil pro
    Dirigeant
    Inscrit en
    Juin 2016
    Messages
    3 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Dirigeant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2016
    Messages : 3 160
    Points : 66 256
    Points
    66 256
    Par défaut QuickJS : un moteur JavaScript léger, prenant en charge la spécification ES2019
    QuickJS : un moteur JavaScript léger, prenant en charge la spécification ES2019
    y compris les modules, les générateurs asynchrones et les mandataires

    Fabrice Bellard, un programmeur informatique français, a présenté cette semaine QuickJS, un moteur JavaScript léger et intégrable, qui prend en charge la spécification ES2019, y compris les modules, les générateurs asynchrones et les mandataires. Il prend éventuellement en charge des extensions mathématiques telles que les grands entiers (BigInt), les grands nombres à virgule flottante (BigFloat) et la surcharge d'opérateurs. Fabrice Bellard a publié le moteur le mardi passé sous la licence MIT.

    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).

    Nom : picture060.jpg
Affichages : 20376
Taille : 15,5 Ko
    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
    Contribuez au club : corrections, suggestions, critiques, ... Contactez le service news et Rédigez des actualités

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur C++
    Inscrit en
    Octobre 2008
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur C++

    Informations forums :
    Inscription : Octobre 2008
    Messages : 242
    Points : 705
    Points
    705
    Par défaut
    Je comprends pas l'intérêt de développer une quinzaine de moteurs Javascript, il y en a dejà plein pourquoi ne pas y contribuer ? mujs, duktape pour ne citez qu'eux (en terme de légereté).

    Et faire une version d'une bibliothèque sous forme de date c'est vraiment tout sauf une bonne idée.

  3. #3
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 739
    Points
    4 739
    Par défaut
    bel exploit, bientôt un navigateur "made in France?, ou alors comme moteur alternatif pour nodeJS ?

    sinon les générateur "asynchrone" ce sont les fonctions "générateur" (avec un yield)?
    mais les 2 autres : les modules et les mandataires... c'est quoi ?

    quand à la surcharge d'opérateur, c'est super mais ça m'étonne , c'est vraiment dans la norme ES2019 ?? si quelqu'un à une doc dessus je serai curieux de la lire
    «La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode

  4. #4
    Membre expérimenté
    Homme Profil pro
    chomeur
    Inscrit en
    Avril 2015
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : chomeur
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 710
    Points : 1 585
    Points
    1 585
    Par défaut
    Je comprends pas l'intérêt
    etre un passionné c'est tout. de plus vu son CVcode on ne peut resté indifférent et cherché avant tout a tester le moteur et voir ce qu'il apporte.
    Plus vite encore plus vite toujours plus vite.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci pour cette news intéressante. Par contre, c'est vraiment la pire biographie de Fabrice Bellard que j'ai jamais lue. L'article n'en parle pas mais c'est aussi l'auteur original de ffmpeg, la lib à la base de vlc, utilisée quotidiennement par des millions de gens. Sans parler qu'il a aussi écrit un des programmes les plus performants pour calculer PI, etc.
    https://en.wikipedia.org/wiki/Fabrice_Bellard

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    je suis curieux sur le comptage de reference avec cycles. Je croyais que ce n'etait pas possible en javascript...

Discussions similaires

  1. Mais comment le moteur javascript charge-t-il le code ?
    Par FDussault dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 28/05/2011, 10h24
  2. [AJAX] Appel d'une fonction javascript dans une page chargée en ajax
    Par baedal dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 17/04/2008, 17h03
  3. Réponses: 2
    Dernier message: 13/06/2007, 17h18
  4. Comment changer le moteur javascript ?
    Par nico-pyright(c) dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/04/2006, 18h48
  5. [FLASH MX2004] Hebergeur prenant en charge ou pas
    Par black is beautiful dans le forum Flash
    Réponses: 5
    Dernier message: 11/01/2005, 19h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo