Version JavaScript Node.js 16.0 côté serveur

Node.js 16.0, une plate-forme permettant d'exécuter des applications réseau en JavaScript, a été publiée. Node.js 16.0 est classé comme branche de support à long terme, mais ce statut ne sera attribué qu'en octobre, après stabilisation. Node.js 16.0 sera pris en charge jusqu'en avril 2023. La maintenance de la précédente branche LTS de Node.js 14.0 durera jusqu'en avril 2023, et l'année avant la dernière branche LTS 12.0 jusqu'en avril 2022. Le support de la branche 10.0 LTS sera interrompu dans 10 jours.

Principales améliorations :

  • Le moteur V8 a été mis à jour vers la version 9.0 (Node.js 15 utilisait la version 8.6), qui permet l'implémentation de fonctionnalités telles que la propriété « indices » pour les expressions régulières (inclut un tableau avec les positions de début et de fin des groupes de correspondances) , la méthode Atomics dans Node.js 16 .waitAsync (version asynchrone d'Atomics.wait), prise en charge de l'utilisation du mot-clé wait dans les modules de niveau supérieur. Les appels de fonction ont été accélérés dans les situations où le nombre d'arguments passés ne correspond pas aux paramètres définis dans la fonction.
  • L'API Timers Promises a été stabilisée, fournissant un ensemble alternatif de fonctions pour travailler avec des minuteries qui renvoient des objets Promise en sortie, ce qui élimine le besoin d'utiliser util.promisify(). importer { setTimeout } depuis 'timers/promises' ; fonction asynchrone run() { wait setTimeout(5000); console.log('Bonjour le monde !'); } courir();
  • Une implémentation expérimentale de l'API Web Crypto a été ajoutée, conçue pour effectuer des opérations cryptographiques de base du côté des applications Web, telles que la manipulation de hachages cryptographiques, la génération et la vérification de signatures numériques, l'encodage et le décodage de données à l'aide de diverses méthodes de cryptage et la génération de données cryptographiquement sécurisées. nombres aléatoires. L'API fournit également des fonctions de génération et de gestion de clés.
  • N-API (API pour le développement de modules complémentaires) a été mise à jour vers la version 8.
  • La transition vers la nouvelle version du gestionnaire de packages NPM 7.10 a été effectuée.
  • Stabilisation de l'implémentation de la classe AbortController, qui est basée sur l'API Web AbortController et permet d'annuler les signaux dans certaines API basées sur Promise.
  • La prise en charge de la troisième version du format Source Map, utilisée pour comparer les modules générés, traités ou packagés avec le code source d'origine, a été stabilisée.
  • Pour des raisons de compatibilité avec les anciennes API Web, les méthodes buffer.atob(data) et buffer.btoa(data) ont été ajoutées.
  • La formation des assemblages pour les nouveaux appareils Apple équipés de la puce M1 ARM a commencé.
  • Sur la plateforme Linux, les exigences de version du compilateur ont été augmentées à GCC 8.3.

Rappelons que la plateforme Node.js peut être utilisée à la fois pour le support côté serveur d'applications Web et pour la création de programmes réseau client et serveur ordinaires. Pour étendre les fonctionnalités des applications pour Node.js, une large collection de modules a été préparée, dans laquelle vous pouvez trouver des modules avec l'implémentation de serveurs et clients HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, des modules d'intégration avec divers frameworks web, gestionnaires WebSocket et Ajax, connecteurs aux SGBD (MySQL, PostgreSQL, SQLite, MongoDB), moteurs de templates, moteurs CSS, implémentations d'algorithmes cryptographiques et de systèmes d'autorisation (OAuth), analyseurs XML.

Pour assurer le traitement d'un grand nombre de requêtes parallèles, Node.js utilise un modèle d'exécution de code asynchrone basé sur la gestion d'événements non bloquants et la définition de gestionnaires de rappel. Les méthodes prises en charge pour les connexions multiplexées sont epoll, kqueue, /dev/poll et select. Pour le multiplexage des connexions, la bibliothèque libuv est utilisée, qui est un module complémentaire pour libev sur les systèmes Unix et IOCP sur Windows. La bibliothèque libeio est utilisée pour créer un pool de threads, et c-ares est intégré pour effectuer des requêtes DNS en mode non bloquant. Tous les appels système qui provoquent un blocage sont exécutés à l'intérieur du pool de threads, puis, comme les gestionnaires de signaux, transfèrent le résultat de leur travail via un canal sans nom (pipe). L'exécution du code JavaScript est assurée grâce à l'utilisation du moteur V8 développé par Google (par ailleurs, Microsoft développe une version de Node.js avec le moteur Chakra-Core).

À la base, Node.js est similaire aux frameworks Perl AnyEvent, Ruby Event Machine, Python Twisted et à l'implémentation d'événements Tcl, mais la boucle d'événements dans Node.js est masquée pour le développeur et ressemble à la gestion des événements dans une application Web en cours d'exécution. dans le navigateur. Lors de l'écriture d'applications pour node.js, vous devez tenir compte des spécificités de la programmation événementielle, par exemple, au lieu de faire "var result = db.query("select..");" avec attente de l'achèvement des travaux et traitement ultérieur des résultats, Node.js utilise le principe de l'exécution asynchrone, c'est-à-dire le code est transformé en "db.query("select..", function (result) {result processing});", dans lequel le contrôle passera instantanément à un autre code, et le résultat de la requête sera traité au fur et à mesure que les données arrivent.

De plus, on peut noter que la société Deno, fondée par le créateur de Node.js pour développer la plateforme Deno de nouvelle génération, a reçu 4.9 millions de dollars d'investissements. Dans son objectif, Deno est similaire à Node.js, mais il tente d'éliminer les erreurs conceptuelles commises dans l'architecture Node.js et de fournir aux utilisateurs un environnement plus sécurisé. Il est à noter que les solutions commerciales de Deno seront construites sur des produits entièrement ouverts et que le modèle Open Core avec des fonctionnalités payantes distinctes est perçu comme inacceptable pour la plate-forme Deno.

Source: opennet.ru

Ajouter un commentaire