Node.js 16 release: meilleur aperçu





Le 20 avril, une nouvelle 16 version de Node.js a été publiée. Parmi les principaux changements figurent la mise à jour du moteur JavaScript V8 vers la version 9.0, les binaires intégrés (binaires) pour Apple Silicon et plusieurs API, mais tout d'abord.



Une liste complète des modifications peut être trouvée ici .



Node.js 16 remplacera Node.js 15 en tant que version "actuelle". Ce statut lui restera pendant les 6 prochains mois. Puis, en octobre 2021, Node.js 16 passera au statut de support à long terme (LTS). Lors du passage au statut LTS, il recevra le nom de code «Gallium». Les



détails de la version se trouvent dans le référentiel du groupe de travail sur la version de Node.js... Pour l'instant, passons en revue les meilleures nouvelles.



Mise à niveau de la V8 vers la version 9.0



La mise à jour du moteur JavaScript V8 est une amélioration des performances, ainsi que la prise en charge de Node.js pour les dernières fonctionnalités JavaScript. À propos, Node.js 15 a utilisé la version 8.6 de V8.



Les principaux changements apportés au moteur incluent le support des index de correspondance des expressions rationnelles, ainsi qu'un accès amélioré (plus rapide) à la propriété "super".



Une liste complète des modifications peut être trouvée ici .



Indices de conformité


Les ID correspondants permettent aux développeurs d'obtenir un tableau de sous-tableaux contenant les positions de début et de fin (index) des groupes de capture dans une expression régulière lorsqu'il y a une correspondance (ou plusieurs correspondances). Ce tableau est disponible via la propriété "indices" de l'objet match. Notez que l'expression régulière utilisée pour rechercher des correspondances doit avoir l'indicateur "/ d".



const re = /(a)(b)/d //  .      /d

const m = re.exec('ab') //   

console.log(m.indices[0]) //   —   

// [0, 2]

console.log(m.indices[1]) //   —   

// [0, 1]

console.log(m.indices[2]) //   —   

// [1, 2]


      
      





Accéder à la propriété "super"


L'accès à la super propriété a été amélioré grâce à l'utilisation d'un système de cache intégré et à la génération de code optimisée dans TurboFan (TurboFan est le compilateur, Ignition est responsable de l'interprétation du code en V8). Selon les développeurs de V8, la vitesse d'accès à super est devenue presque la même que la vitesse d'accès à une propriété normale.





Axe "Y" - le nombre d'opérations. Axe "X" - accès à la propriété habituelle, accès à la propriété "super" (avant la mise à jour), accès à la propriété "super" (après la mise à jour).



API Stable Timers Promises



L'API Timers Promises fournit un ensemble alternatif de minuteries qui renvoient un objet "Promise", éliminant ainsi le besoin de util.promisify () .



import { setTimeout } from 'timers/promises'

async function run() {

  const greet = await setTimeout(3000, 'Hi!')

  console.log(greet) // Hi!

}

run()


      
      





L'API Timers Promises a été introduite dans Node.js 15 en tant que fonctionnalité expérimentale. Maintenant, il a acquis le statut d'interface stable.



Autres nouveautés



La nature du processus de publication est telle que de nouvelles fonctionnalités apparaissent dans la version "actuelle" environ toutes les 2 semaines. Pour cette raison, de nombreuses fonctionnalités étaient disponibles dans Node.js 15, mais sont encore relativement nouvelles pour le runtime.



Parmi ces possibilités, on trouve les suivantes:



  • Implémentation expérimentale de la norme Web Crypto API
  • npm 7 (v7.10.0)
  • Node-API version 8
  • Implémentation stable d'AbortController basée sur l' API Web AbortController
  • Implémentation stable de Source Maps v3 (NODE_OPTIONS = - enable-source-maps dans le terminal ou {"enable-source-maps": true} dans .mocharc.json)
  • atob (buffer.atob(data)) btoa (buffer.btoa(data)), API (/ «Base64»)




Node.js fournit des binaires intégrés pour plusieurs plates-formes différentes. Pour chaque version majeure, l'ensemble minimal d'instruments est évalué et élargi autant que possible.



Node.js 16 sera la première version de binaires en ligne pour Apple Silicon . Alors que des archives tar distinctes sont fournies pour les architectures Intel (darwin-x64) et ARM (darwin-arm64), le "programme d'installation" (.pkg) pour macOS est un binaire multi-architecture.



Pour les plates-formes basées sur Linux, le niveau GCC minimum pour générer Node.js 16 est GCC 8.3.



Des détails sur les outils et compilateurs pris en charge peuvent être trouvés ici .



Fin du support



Les développeurs de Node.js essaient de minimiser le nombre de changements pouvant entraîner des perturbations dans l'écosystème (c'est-à-dire le travail des bibliothèques Node.js). Pour détecter de tels changements, GITGM (Canary in the Gold Mine) est utilisé .



Cependant, certaines fonctionnalités sont obsolètes. Certains des plus importants sont l'accès à process.bindings () pour certains modules du noyau, tels que process.binding ('http_parser') ou process.binding ('url').



Il est à noter que la nouvelle version majeure est le résultat des efforts d'un grand nombre de personnes intéressées par l'amélioration et le développement de Node.js (contributeurs et collaborateurs). De plus, afin de préparer une nouvelle version pour la production, beaucoup de travail est effectué Groupe de travail Node.js Build .






Nos serveurs peuvent être utilisés pour le développement avec node.js.



Inscrivez-vous en utilisant le lien ci-dessus ou en cliquant sur la bannière et bénéficiez d'une remise de 10% pour le premier mois de location d'un serveur de toute configuration!






All Articles