La version 12 de Node.js est disponible,
et serait 30 % plus rapide au démarrage que les versions précédentes

La version 12 du moteur d’exécution JavaScript Node.js a été publiée hier et a été présentée comme une version LTS (Long Time Support). L’équipe Node.js a présenté cette nouvelle version comme une version dans laquelle la vitesse de démarrage du thread principal est maintenant 30 % plus rapide que dans les versions précédentes. Elle a également indiqué que la version 12 offre une meilleure prise en charge des modules natifs en combinaison avec les Worker Threads, ce qui est utile pour les opérations JavaScript gourmandes en ressources CPU.

La version 12 de Node.js, en plus d’être une version LTS, présente un nombre important de nouvelles fonctionnalités, des correctifs de bugs et d’autres améliorations. L’une des nouveautés les plus notables dans cette version est le travail effectué par l’équipe pour améliorer le temps de démarrage du thread principal qui est maintenant de 30 % fois plus rapide. En effet, Node.js 12 génère le cache de code pour les bibliothèques intégrées à l'avance au moment de la compilation, en l'incorporant dans le binaire. Dans la version finale, le thread principal peut utiliser le cache de code pour démarrer le chargement initial de toute bibliothèque intégrée écrite en JavaScript.

En plus des améliorations apportées au temps de démarrage, la mise à jour de N-API officiellement prise en charge par Node.js à partir de la version 10.0.0 du moteur d’exécution de JavaScript côté serveur devrait également faciliter l'utilisation des threads personnalisés pour les fonctions asynchrones natives. Autrement dit, la prise en charge améliorée des modules natifs en combinaison avec Worker Threads et N-API 4 devrait faciliter la création d’add-ons natifs. Rappelons cependant que N-API est une API C présente dans Node.js qui assure la stabilité ABI à travers les versions de Node.js et les différents niveaux de compilateur.

Nom : illu_des-applications-ultra-rapides-avec-node-js.png
Affichages : 4046
Taille : 2,0 Ko

Expliqué autrement, N-API a été créé en collaboration avec Google, IBM, Intel, Microsoft, nearForm, NodeSource et des contributeurs individuels. Cette API permet aux modules natifs de s'exécuter sur une nouvelle version de Node.js sans recompilation. Cela affranchit donc les mainteneurs de packages d'avoir à mettre à jour ces dépendances et crée encore plus de stabilité. N-API permet donc de réduire le coût de maintenance des modules natifs. Mais il vise aussi à réduire les frictions lors de la mise à niveau des versions Node.js dans les déploiements de production pour les consommateurs de modules. Pour augmenter l'utilité de cette fonctionnalité, N-API est également en train d'être porté vers Node.js version 8.x et 6.x et sera disponible dans leurs prochaines versions. N-API établit en outre les bases de l'ouverture de Node.js à de nouveaux environnements dans l'IoT, les mobiles et une variété de systèmes différents.

Node.js 12 apporte une mise à jour du support expérimental de ES6 (EcmaScript 6) qui donnera lieu dans une prochaine version de Node à une implémentation supportée, a indiqué l’équipe de Node.js. L’analyseur par défaut est désormais llhttp (il s’agit d’un port TypeScript du fichier http_parser écrit en C, qui est probablement plus facile à gérer) et le moteur V8 a lui aussi subi une mise à jour. Le moteur JavaScript V8 qui est le moteur d'exécution de Node.js a été mis à jour vers sa version 7.4 et apporte de ce fait des améliorations notables sur les performances de Node.js. TLS (Transport Layer Security) 1.3 est devenu le nouveau protocole standard max par défaut. Cette version de TLS semble être plus sécurisée que ses prédécesseurs.

Pour Node.js 12, la taille de la mémoire JavaScript sera configurée en fonction de la mémoire disponible au lieu d'utiliser les valeurs par défaut définies par le moteur JavaScript V8. Auparavant, V8 limitait la taille maximale du segment de mémoire à 700 ou 1400 Mo sur les plateformes 32 et 64 bits, respectivement. La configuration du segment de mémoire en fonction de la mémoire disponible garantit que Node.js n'essaie pas d'utiliser plus de mémoire que ce qui est disponible. Cette nouvelle fonctionnalité est particulièrement utile lors du traitement de grands ensembles de données. Cependant, vous pouvez toujours utiliser --max-old-space-size pour définir leur propre limite par défaut. Voici ci-dessous quelques autres nouveautés dans Node.js 12 :

  • dans cette version, une fonction de vidage de tas est offerte et prête à l'emploi pour enquêter sur les problèmes de mémoire ;
  • l'utilisation de fils de travail ne nécessite plus l'utilisation d'un drapeau ;
  • la base de code requiert désormais un minimum de GCC (GNU Compiler Collection) 6 et de glibc 2.17 sur des plateformes autres que Mac OS et Windows. Les fichiers binaires publiés sur nodejs.org utilisent cette chaîne d’outils minimum et incluent donc de nouvelles améliorations en termes de performances et de sécurité au moment de la compilation ;
  • une fonction de rapport de diagnostic expérimental est incluse dans Node.js 12 pour générer un rapport à la demande lorsque certains événements se produisent. Cela peut être utile pour diagnostiquer des problèmes de production tels que des accidents, des performances médiocres, des fuites de mémoire ou une utilisation intensive du processeur ;
  • etc.

Source : nodejs.org

Et vous ?

Que pensez-vous des nouveautés dans cette version de Node.js ?

Voir aussi

Sortie de Node.js 10.0.0 avec le support officiel de N-API et OpenSSL 1.1.0 et la version LTS de la série 10.x est prévue pour octobre 2018

npm 6.0.0, le gestionnaire de paquets officiel de Node.js. passe en @latest et se concentre désormais sur la sécurité

JSConf Berlin 2018 - Ryan Dahl liste 10 erreurs de conception sur Node.js et dévoile son prototype deno