Node.js 8 est disponible et apporte le moteur V8 en version 5.8
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
L’équipe responsable du développement de Node.js a annoncé la disponibilité de la version 8.
V8 5.8
Node.js 8.0.0 est livré avec V8 5.8, une mise à jour significative du runtime JavaScript qui inclut des améliorations majeures en termes de performances. Pour l’équipe, le plus important pour les développeurs Node.js est le fait que V8 5.8 est garanti d’avoir une compatibilité ascendante ABI (interface binaire-programme) avec V8 5.9 et le prochain V8 6.0, ce qui contribuera à assurer la stabilité de l'écosystème natif Node.js. Pendant la durée de vie de Node.js 8, l’équipe a prévu de passer à la version 5.9 de V8, voire la version 6.0.
Le moteur V8 5.8 contribue également à la mise en place d'une transition en cours vers le nouveau pipeline du compilateur TurboFan + Ignition, qui promet d'apporter de nouvelles performances importantes pour toutes les applications Node.js. Bien qu'ils existaient dans les versions précédentes de V8, TurboFan et Ignition seront activés par défaut pour la première fois dans V8 5.9. Le nouveau pipeline du compilateur représente un changement tellement important que le Comité technique principal de Node.js (CTC) a choisi de reporter la version Node.js 8, initialement prévue pour avril, afin de mieux l'accueillir.
API Node.js (N-API)
Pour les développeurs Node.js qui utilisent ou créent des addons natifs, la nouvelle API expérimentale Node.js (N-API) est un avancement important par rapport aux Abstractions Natives existantes pour Node.js (nan) qui permettront de compiler les addons natifs une fois sur un système et utilisé dans plusieurs versions de Node.js.
En fournissant une nouvelle ABI de la machine virtuelle, il devient possible que les addons natifs fonctionnent non seulement sur plusieurs versions du runtime JavaScript V8, mais également sur le runtime Chakra-Core de Microsoft.
Le N-API est expérimental dans Node.js 8.0.0, donc des changements importants dans la mise en œuvre et l'API devraient être attendus. Les développeurs d'addons natifs sont encouragés à commencer à travailler avec l'API dès que possible et à fournir des commentaires qui seront nécessaires pour s'assurer que la nouvelle API répond aux besoins de l'écosystème.
Async_hooks
Le module async_hooks expérimental (anciennement async_wrap) a reçu une mise à niveau majeure dans 8.0.0. Cette API de diagnostic permet aux développeurs de surveiller le fonctionnement de la boucle d'événement Node.js, de suivre les demandes asynchrones et de gérer leur cycle de vie complet. Étant donné qu’il s’agit là d’un module expérimental, la documentation est encore incomplète.
L'analyseur d'URL WHATWG
Une API d'URL expérimentale mise en œuvre autour du WHATWG URL Standard a été ajoutée à Node.js 7.x l'année dernière et est toujours en cours de développement. L’équipe explique qu'à partir de la version Node.js 8.0.0, la nouvelle implémentation d'URL est désormais une API non expérimentale entièrement supportée dans Node.js. Voici un exemple d'utilisation.
Code:
1 2 3
| const URL = require('url').URL;
const myUrl = new URL('/a/path', 'https://example.org/'); |
Cette nouvelle implémentation d'URL est très significative, car elle correspond à la mise en œuvre de l'URL et à l'API disponible dans les navigateurs Web modernes comme Chrome, Firefox, Edge et Safari, permettant au code d'utiliser les URL à partager entre les environnements.
Changements au niveau du Buffer
Un certain nombre de modifications importantes ont été apportées à l'API Buffer dans Node.js. La plus importante est le fait que l'appel du constructeur Buffer (num) obsolète (avec ou sans le mot-clé new) renverra une instance Buffer remplie de zéro. Les versions antérieures de Node.js renverraient la mémoire non initialisée, qui pourrait contenir des données potentiellement sensibles.
Dans Node.js 6.0.0, un nouvel ensemble de méthodes de construction Buffer a été introduit comme alternative à l'appel du constructeur Buffer (num) afin de résoudre un certain nombre de problèmes de sécurité et de convivialité. Le constructeur existant, cependant, est largement utilisé dans l'écosystème Node.js, ce qui rend impossible de le déprécier ou de le désactiver complètement sans causer de rupture importante.
Les nouvelles instances de Buffer (num) à zéro par défaut auront un impact significatif sur les performances. Les développeurs devraient passer à la nouvelle API Buffer.allocUnsafe (num) s’ils souhaitent attribuer des instances Buffer à une mémoire non initialisée.
Support
Node.js 8 est la prochaine version à entrer dans le support à long terme (LTS). Cela devrait se produire en octobre 2017. Une fois que Node.js 8 va transiter vers LTS, il recevra le nom de code Carbon.
Source : note de version
Et vous ?
:fleche: Quelles sont les fonctionnalités qui vous intéressent le plus ?
Voir aussi :
:fleche: La Fondation Node.js annonce la mise en place d'un programme de certification pour les développeurs Node.js qui débutera au second trimestre
:fleche: Node.js v6.9.0 (LTS) : ce qui a changé depuis Node.js v4 LTS, la fondation Node.js indique les éléments importants à savoir pour ceux qui vont migrer
Node.js 8.9.0 LTS est disponible pour une utilisation en production
Node.js 8.9.0 LTS est disponible pour une utilisation en production
et Node.js 9.0.0 à des fins de tests et d’expérimentation
Le 31 octobre, l'équipe Node.js a annoncé que la version 8 de la plateforme JavaScript côté serveur est désormais prête pour être utilisée en production alors que Node.js 8.9.0 atteint le statut LTS (support à long terme). Cette version s'ouvre donc à une base d'utilisateurs plus importante pour qui la stabilité et la sécurité sont des exigences.
Node.js 8 est présentée comme l'une des plus grandes séries de versions de la communauté Node.js à ce jour avec des fonctionnalités et des add-ons comme Async/Await et la version 6.1 du moteur JavaScript V8. Il est plus performant que son prédécesseur Node.js 6 LTS, soit jusqu'à 20 % plus rapide pour les applications Web typiques.
Il y a donc des améliorations de performances pour les applications Web, mais aussi pour les applications d'entreprise ; lesquelles sont possibles grâce à la version 6.1 du moteur JavaScript V8 et HTTP/2. Le nouveau moteur V8 vient en effet avec un nouveau pipeline d'exécution JavaScript basé sur Ignition (l'interpréteur JavaScript développé par Google) et Turbofan (le nouveau compilateur optimisant de V8) ; ce qui réduit la consommation de la mémoire et accélère le démarrage des applications Node.js.
En ce qui concerne HTTP/2, il n'est plus utilisé avec les drapeaux (flags), mais est toujours en mode expérimental dans cette version et est donc sujet à certains changements. Une fois qu'il sortira de la phase expérimentale, d'après l'équipe Node.js, il permettra aux développeurs d'utiliser le nouveau protocole pour accélérer le développement d'applications. HTTP/2 va permettre aux développeurs JavaScript de ne plus avoir recours à de nombreuses solutions de contournement HTTP/1.1 pour rendre les applications plus rapides, plus simples et plus puissantes.
Outre les performances, Node.js va offrir davantage de stabilité grâce à des collaborations au sein et en dehors de la communauté. Il faut noter par exemple que l'équipe de Google chargée du moteur JavaScript V8 accorde désormais la priorité à Node.js avec Chromium, et va donc s'assurer que chaque nouvelle version de V8 soit compatible avec Node.js. Cela signifie une réduction de la charge de la communauté Node.js, plus de stabilité et une adoption plus rapide des fonctionnalités ESNext. « Avec les versions LTS de Node, cette stabilité est cruciale pour de nombreuses entreprises lorsqu'elles adoptent Node.js dans un environnement d'entreprise », explique l'équipe Node.js.
L'API Node.js (N-API) est disponible en tant que fonctionnalité expérimentale dans Node.js 8.9.0. Cette technologie a été créée en collaboration avec Google, IBM, Intel, Microsoft, nearForm, NodeSource et des contributeurs individuels. Elle permet aux modules natifs de s'exécuter sur une nouvelle version de Node.js sans recompilation. Cela affranchit les mainteneurs de packages d'avoir à mettre à jour ces dépendances et crée encore plus de stabilité. Cette API établit également 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.
Il faut aussi noter que Async/Await est entièrement pris en charge dans Node.js 8.9.0. La nouvelle version LTS de Node.js vient en plus avec une implémentation expérimentale des modules ES ; lesquels ont été introduits sous un flag dans la version 8.7.0.
D'abord standardisés en 2015, les modules ES offrent une manière standard d'écrire du code JavaScript modulaire pouvant s'exécuter à la fois sur le Web et dans Node.js. L’équipe Node explique toutefois que la plateforme JavaScript côté serveur utilise traditionnellement le modèle CommonJS pour le chargement du module, et il sera encore l'option par défaut de Node.js dans la version 8.x LTS. Son implémentation expérimentale des modules ES permettra toutefois aux développeurs de commencer à expérimenter le modèle de module standardisé dans Node.js aujourd'hui alors que l'équipe travaille sur un support de première classe.
Avec le passage de Node.js 8 au statut LTS, Node.js 9.0.0 a également été publié pour les développeurs à des fins de tests et d'expérimentation. Cette version se concentre sur l'ajout et le test de nouvelles fonctionnalités de pointe. Par conséquent, elle n'est pas recommandée pour ceux qui utilisent Node.js en production. L'essentiel des changements dans cette nouvelle version concerne la dépréciation ou la suppression d'API alors que des changements notables sont parmi les derniers introduits dans la version 8 : N-API et HTTP2 qui sont disponibles sans flag.
Plusieurs des plus grandes dépendances de Node ont également été mises à jour. Cela inclut V8 6.2, libuv 1.15.0 et c-ares 1.13.0 ; des dépendances spécifiques qui représentent le moteur JavaScript, la bibliothèque d'entrées/sorties asynchrones et la bibliothèque DNS utilisée par Node.js.
En outre, le code de base Node.js migre progressivement vers un nouveau système d'erreurs. Le but de cette migration est d'associer un code unique à toutes les erreurs lancées par Node.js. La documentation de l'API, ainsi que la suite de tests sont également améliorées de manière constante. Bien que ces modifications ne soient pas directement reflétées dans le code de Node, elles sont importantes au succès de Node.js.
Source : Node.js Foundation
Et vous ?
:fleche: Qu’en pensez-vous ?
Voir aussi :
:fleche: 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
:fleche: Node.js 7 sera disponible dans la semaine du 25 octobre 2016, la version v6 de la plateforme JavaScript côté serveur passe au statut LTS
:fleche: Node.js v6.9.0 (LTS) : ce qui a changé depuis Node.js v4 LTS, la fondation Node.js indique les éléments importants à savoir pour ceux qui vont migrer