la sortie , des plateformes pour exécuter des applications réseau en JavaScript. La stabilisation de l'ancienne branche Node.js 12.x a également été achevée, et celle-ci a été classée dans la catégorie des versions avec un support à long terme, des mises à jour étant prévues pendant 4 ans. Le support de l'ancienne version LTS Node.js 10.0 se poursuivra jusqu'en avril 2021, tandis que celui de la version LTS précédente, 8.0, s'achèvera en janvier 2020.
Principales :
- Le moteur V8 a été mis à jour vers la version , qui utilise de nouvelles méthodes d'optimisation des performances, améliore la déstructuration des objets, réduit la consommation de mémoire et diminue le temps de préparation pour l'exécution de WebAssembly;
- La prise en charge complète de l'internationalisation et de l'Unicode est activée par défaut, basée sur les bibliothèques (International Components for Unicode), permettant aux développeurs d'écrire du code le travail avec différentes langues et localités. Le module full-icu est désormais installé par défaut;
- L'API , stabilise la création de boucles d'événements multithreading. L'implémentation est basée sur le module worker_threads, qui permet d'exécuter du code JavaScript dans plusieurs fils d'exécution parallèles. Le support stable de l'API Workers Threads a également été rétroporté dans la branche LTS de Node.js 12.x;
- Des exigences pour les plateformes ont été élevées. Pour la compilation, il faut désormais au moins macOS 10.11 (Xcode 10 requis), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
- La prise en charge de Python 3 a été améliorée. En cas d'installation de Python 2 et Python 3 sur le système, Python 2 sera toujours utilisé, mais la possibilité de compilation avec seulement Python 3 présente a été ajoutée;
- L'ancienne implémentation du parseur HTTP («—http-parser=legacy») a été supprimée. Des appels et propriétés obsolètes ont été retirés ou classés comme obsolètes, comme FSWatcher.prototype.start(), ChildProcess._channel, la méthode open() dans les objets ReadStream et WriteStream, request.connection, response.connection, module.createRequireFromPath();
- Suivant la mise à jour 13.0.1, qui corrige plusieurs bogues. Cela inclut la résolution d'un problème lié à l'affichage d'un avertissement dans npm 6.12.0 concernant l'utilisation d'une version non prise en charge.
Rappelons que la plateforme Node.js peut être utilisée à la fois pour le soutien serveur des applications Web et pour créer des programmes réseau clients et serveurs classiques. Pour étendre la fonctionnalité des applications Node.js, une grande , dans laquelle vous pouvez trouver des modules pour l'implémentation de serveurs et de clients HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, des modules pour l'intégration avec divers frameworks web, des gestionnaires WebSocket et Ajax, des connecteurs aux bases de données (MySQL, PostgreSQL, SQLite, MongoDB), des moteurs de template, des moteurs CSS, des implémentations d'algorithmes crypto et des systèmes d'authentification (OAuth), des parseurs XML.
Pour gérer un grand nombre de requêtes parallèles, Node.js utilise un modèle asynchrone d'exécution de code, basé sur le traitement d'événements de manière non bloquante et la définition de gestionnaires de callback. En tant que méthodes de multiplexage des connexions, des techniques telles que epoll, kqueue, /dev/poll et select sont prises en charge. La bibliothèque utilisée pour le multiplexage des connexions est , qui est une surcouche de dans les systèmes Unix et sur IOCP sous Windows. Pour créer un pool de threads (thread pool), la bibliothèque , pour effectuer des requêtes DNS en mode non bloquant, est intégrée avec . Tous les appels système qui entraînent un blocage sont exécutés à l'intérieur du pool de threads et ensuite, tout comme les gestionnaires de signaux, ils transmettent le résultat de leur travail via un canal anonyme (pipe). L'exécution du code JavaScript est assurée grâce à l'utilisation du moteur développé par Google, (en plus, Microsoft développe une variante de Node.js avec le moteur Chakra-Core).
Essentiellement, Node.js ressemble aux frameworks , , et Dans Tcl, il y a des événements, mais la boucle de traitement des événements (event loop) dans Node.js est cachée aux développeurs et ressemble à la gestion des événements dans une application web fonctionnant dans un navigateur. Lors de l'écriture d'applications pour Node.js, il est nécessaire de prendre en compte les spécificités de la programmation orientée événements. Par exemple, au lieu d'exécuter « var result = db.query(« select.. »); » en attendant la fin du traitement pour ensuite traiter les résultats, Node.js utilise le principe d'exécution asynchrone, c'est-à-dire que le code est transformé en « db.query(« select.. », function (result) { обработка результата }); », où le contrôle revient immédiatement au code suivant, tandis que les résultats de la requête sont traités au fur et à mesure de la réception des données.
Source : opennet.ru
