Napa.js : un environnement d'exécution JavaScript multithreads

Par:
fredericmazue

mar, 24/10/2017 - 15:14

Microsoft vient d'ouvrir Napa.js, une bibliothèque JavaScript maison créée à l'origine pour développer des services hautement interactifs sans pénaliser la performance au sein du moteur de recherche Bing.

Napa.js est un environnement d'exécution JavaScript multithread construit au dessus de V8, le moteur JavaScript open source de Google. Napa.js est conçu pour permettre d'exécuter du code très gourmand en calculs sans bloquer la boucle d'événements. Les threads tournent sur des instances de V8 isolées les une des autres, tout en pouvant communiquer entre eux.

Napa.js vient comme un module node.js, mais il peut aussi être utilisé dans des contextes sans node.js.

Voici un exemple de code qui charge Napa.js puis créée une zone d'exécution dans laquelle sont démarrés 4 threads.

var napa = require('napajs');

// Création d'un zone avec 4 threads
var zone1 = napa.zone.create('zone1', { workers: 4 });

// Préparation à l'exécution:
// le même code de thread diffusé 4 fois dans la zone.
zone1.broadcast('console.log("hello world");');

// Exécution.

zone1.execute(
    (text) => text,
    ['hello napa'])
    .then((result) => {
        console.log(result.value);
    });

Napa.js est sur GitHub. Des exemples d'utilisation telle que l'évaluation de Pi en calcul parallélisé ou de suites des Fibonnacci sont proposés

Commentaires

qu'ils se concentrent sur leur 'coeur' de métier. livrer un OS fonctionnel, chose qu'ils n'ont jamais pu faire depuis windows 3.1