+ Répondre à la discussion Actualité déjà publiée
  1. #1
    Chroniqueur Actualités
    Avatar de Michael Guilloux
    Homme Profil pro
    Consultant
    Inscrit en
    juillet 2013
    Messages
    1 623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2013
    Messages : 1 623
    Points : 46 999
    Points
    46 999
    Billets dans le blog
    2

    Par défaut Le runtime open source Napa.js de Microsoft ajoute le multithreading à Node.js

    Le runtime open source Napa.js de Microsoft ajoute le multithreading à Node.js
    pour la performance des applications JavaScript à forte intensité de calculs

    Microsoft veut apporter à la célèbre plateforme JavaScript côté serveur Node.js des performances de type C++, notamment pour les applications à forte intensité de calculs. Il faut en effet noter que si C++ est conçu pour simplifier la tâche aux ordinateurs, afin d'atteindre des niveaux de performance plus élevés, JavaScript est prêt à sacrifier certaines performances afin de faciliter la tâche aux programmeurs. Pour des logiciels dont des performances très élevées sont nécessaires (par exemple, si vous construisez un moteur de jeu ou si vous devez effectuer des opérations complexes sur un matériel limité, tel que des systèmes embarqués), C++ sera donc un choix évident. Mais cela pourrait être possible avec Node.js et Microsoft mise sur Napa.js.

    D'après Microsoft, Napa.js fournit un modèle de programmation JavaScript multithread qui permet aux développeurs d'écrire du code JavaScript intensif en calculs, sans bloquer la boucle d'événement (event loop) de Node. Il devrait être utilisé pour les programmes à forte intensité de calculs ou pour les workflows complexes pouvant nécessiter une exécution parallèle de code JavaScript. Napa.js est un runtime JavaScript multithread basé sur V8, le moteur JavaScript libre et open source développé par Google, et qui est notamment utilisé dans les navigateurs Chromium et Google Chrome, ainsi que sur la plateforme Node.js.

    Napa.js a été conçu à l'origine pour développer des services hautement itératifs avec des performances non compromises dans Bing. Et après deux ans d'utilisation, Microsoft a estimé que ce modèle fonctionne bien et l'a trouvé utile pour étendre Node.js à des tâches intensives en calculs.

    « Bien que JavaScript soit déjà génial sans multithreading aujourd'hui, nous avons pensé qu'il pourrait être encore mieux si un large spectre d'utilisations CPU bound (à forte intensité de calcul) peut être pris en charge », explique Microsoft dans la FAQ sur le projet. « Napa.js vise à rendre cela possible, simplement parce que nous avons ces besoins et ils ne peuvent pas être satisfaits avec les solutions existantes. »

    Il y avait beaucoup de défis, allant de l'API à la performance. En ce qui concerne l'API, Microsoft explique par exemple qu'il fallait fournir la capacité multithreading avec précaution sans compromettre la simplicité d'un thread unique de JavaScript. Et pour la performance, le géant du logiciel parle par exemple la gestion de la mémoire.

    Napa est distribué comme module Node.js. Il peut être installé via NPM en tapant npm install napajs. Mais il peut aussi être intégré dans un processus hôte sans dépendance Node.js, en prenant également en charge les modules à la manière de Node. Ainsi, on peut penser qu'il pourrait être un concurrent de Node.js ; une question à laquelle Microsoft a répondu dans sa FAQ : « Non. Nous avons tant apprécié et bénéficié de Node.js, et nous avons apprécié son idée et son écosystème qui rend la construction de système backend beaucoup plus facile. Avec cette considération, au lieu de distribuer Napa.js en tant que runtime séparé, nous distribuons Napa.js en tant que module Node. C'est plus difficile, nous l'admettons, car nous devons prendre en charge plusieurs versions de Node, mais c'est plus sain pour l'écosystème. Aussi Napa.js se concentre sur des scénarios de calcul, de sorte que de nombreux modules de base dans Node comme http ne sont pas pris en charge par Napa. »

    La fondation Node.js, qui supervise le développement de Node.js elle-même, considère Napa.js comme faisant partie de l'écosystème Node.js. Elle estime qu'il prend en charge un cas d'utilisation qui complète Node.js en fournissant un moyen d'exécuter des processus JavaScript multithread pour des cas d'utilisation à forte intensité de calculs.

    Avec Nada.js, Microsoft a décidé d’adopter une approche consistant à prendre en charge les modules de base de Node uniquement lorsque cela est absolument nécessaire. C’est-à-dire quand ils sont également importants pour prendre en charge les scénarios de calcul, ou sont largement utilisés, ou que de nombreux modules importants de NPM ne peuvent fonctionner sans cela.

    Napa est actuellement en développement, à sa version 0.1.0, mais il présente déjà des fonctionnalités telles que l'exécution JavaScript multithread et dispose d'une architecture de module compatible avec Node.js avec la prise en charge de NPM. Il offre également une API pour le transport d'objets, le partage d'objets et la synchronisation entre threads JavaScript, entre autres. Comme nous l'avons également mentionné, il est distribué en tant que module Node.js, mais supporte aussi des scénarios d'intégration dans des processus hôtes sans dépendance Node.

    Dans sa feuille de route, Microsoft prévoit aussi des améliorations de performances qui passent entre autres par la réduction de l'impact du garbage collector sur la latence d'exécution. Il s'agira aussi de travailler sur la compatibilité Node, la coopération entre les threads JavaScript et le support d'un outil de débogage. Napa.js est open source et disponible sous licence MIT.

    Sources : GitHub, FAQ Napa.js

    Et vous ?

    Qu’en pensez-vous ?
    Napa.js pourrait-il être utile dans vos développements quotidiens ?

    Voir aussi :

    Node.js forké à nouveau pour donner naissance à Ayo, à cause des violations répétées du code de conduite du projet
    Node.js 8 est disponible et apporte le moteur V8 en version 5.8, une mise à niveau du module expérimental async_hooks et bien d'autres améliorations
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    mars 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2012
    Messages : 145
    Points : 375
    Points
    375

    Par défaut

    Youpi, toujours plus loin.

    J'attends avec impatience les sites statiques, de contenu style texte noir sur fond blanc, qui nécessiteront Napa.js.

Discussions similaires

  1. Réponses: 8
    Dernier message: 21/09/2016, 02h09
  2. Microsoft revend 22 brevets sur Linux à un groupement Open-Source
    Par Gordon Fowler dans le forum Actualités
    Réponses: 13
    Dernier message: 23/09/2009, 18h03
  3. [Microsoft] Singularity O.S : Système open source
    Par Neitsa dans le forum Programmation d'OS
    Réponses: 1
    Dernier message: 15/04/2008, 16h58
  4. Réponses: 19
    Dernier message: 20/12/2006, 11h15

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