Pour les développeurs travaillant sur des modules natifs avec le framework Node.js, certains problèmes vont se simplifier à travers N-API, l’API conçue pour bâtir des add-ons Node.js. Il devrait en aller de même pour ceux qui veulent troquer le moteur JavaScript sous-jacent. Actuellement, les modules doivent être recompilés pour fonctionner avec les nouvelles versions de Node.js et avec le moteur JavaScript qui a jusque-là été le traditionnel moteur V8 de Google. Ce qu’apporte N-API, c’est une interface de programmation pour faire le lien avec des add-ons natifs. Indépendante du runtime JavaScript, N-API va offrir une stabilité à l’interface de bas niveau (ABI) à travers les différentes versions de Node.js afin d’isoler les add-ons des changements opérés sur le moteur JavaScript sous-jacent. Lorsqu’ils auront été compilés avec une version de Node.js, les modules fonctionnera ensuite avec les versions ultérieures du framework sans qu’il soit nécessaire de les recompiler. 

Le recours à N-API va également faciliter le support de différents moteurs JavaScript. L’an dernier, Microsoft a manifesté son intention de remplacer V8 de Google par son propre moteur, ChakraCore (mis en open source en janvier 2016). Mais il lui a fallu faire en sorte que ce dernier se comporte comme V8. Cela nécessite le développement d’une couche d’interface, rappelle James Snell, membre du comité technique Node.js et architecte logiciel chez l’éditeur NearForm. « Ce que N-API nous permet de faire, c’est d’avoir une ABI intermédiaire au sein de Node sur laquelle les concepteurs de modules natifs peuvent s’appuyer », explique de son côté Myles Borins, développeur chez Google. Pour l’exploiter, les développeurs devront migrer leurs packages NPMs vers N-API. Cela fait, ils devraient bénéficier de la stabilité recherchée. 

Objectif : supporter pleinement N-API dans Node.js 9 ou 10 

Lancée en mai avec Node.js 8, N-API n’en est qu’à ses débuts. L’étape suivante est d’en faire une fonctionnalité pleinement supportée dans la version 9 de Node.js, prévue pour octobre, ou bien dans Node.js 10 qui doit arriver 6 mois plus tard, indique James Snell. N-API devrait aider à migrer vers les dernières versions de Node.js. « Les dépendances de code natif critiques sont la raison numéro 1 pour laquelle on continue à travailler avec les anciennes versions de Node », souligne Arunesh Chandra, manager senior de l’équipe de développement de Chakra chez Microsoft. Lire à ce sujet son blog sur Medium. Il y a quelques jours, Arunesh Chandra a également annoncé la disponibilité d'une nouvelle pré-version de Node-ChakraCore basée sur Node.js 8, à tester sur Windows, macOS et Linux. 

Avec les modules V8 natifs, la plupart des packages NPMs sont écrits en JavaScript. Mais il y a d’autres modules, très consommateurs en ressources CPU, tels que les moteurs graphiques ou les encodeurs vidéo, qui sont écrits en C ou C++. L’utilisation de N-API devrait apporter la garantie qu’ils continuent à fonctionner à chaque montée de version du moteur JavaScript V8 ou de Node, pointe Joe McCann, CEO de NodeSource, fournisseur d’une distribution de Node. N-API recourt à une API C, bien que certains développeurs Node estiment qu’une API C++ serait plus facile à utiliser.