La version Node.js 24.0.0 a été lancée, une plateforme pour exécuter des applications réseau en JavaScript. Node.js 24.0 fait partie des branches à long terme de support, mais ce statut ne sera accordé qu'en octobre, après stabilisation. Le support de Node.js 24.x sera assuré jusqu'au 30 avril 2028. Le support de la précédente branche LTS Node.js 22.x se poursuivra jusqu'en avril 2027, et celui de la branche LTS 20.x jusqu'en avril 2026. Le support de la branche LTS 18.x a pris fin le 30 avril 2025, et la branche intermédiaire Node.js 23.x sera abandonnée le 1er juin 2025.
Améliorations principales :
- Dans l'API AsyncLocalStorage, la classe AsyncContextFrame est désormais activée par défaut, marquée comme stable. AsyncContextFrame mise en œuvre un mécanisme d'optimisation pour le suivi des contextes asynchrones, ce qui améliore nettement les performances.
- L'API URLPattern est maintenant disponible en tant qu'objet global, utilisable sans importation explicite. URLPattern permet de vérifier si une URL correspond à un modèle donné, par exemple pour analyser des liens.
- Le mécanisme du Modèle de Permissions a été amélioré et stabilisé, permettant de restreindre l'accès à certaines ressources pendant l'exécution (par exemple, interdire la création de processus enfants, limiter l'accès en écriture ou en lecture à certaines parties du système de fichiers, désactiver des extensions). Au lieu de l'option expérimentale « —experimental-permission » pour activer le Modèle de Permissions, il est maintenant possible d'utiliser l'option « —permission ».
- Les fonctionnalités du module node:test (test_runner), destiné à créer et exécuter des tests en JavaScript, retournant des résultats au format TAP (Test Anything Protocol), ont été étendues. Le module attend maintenant automatiquement la fin des tests imbriqués sans avoir besoin d'utiliser await.
- Le client HTTP undici a été mis à jour vers la branche 7.x, qui améliore les performances et intègre de nouvelles fonctionnalités HTTP.
- Le moteur V8 a été mis à jour vers la version 13.6, utilisée dans Chromium 136. Par rapport à la version précédente de Node.js, les nouvelles fonctionnalités incluent le support des tableaux typés Float16Array, la gestion manuelle des ressources, la méthode RegExp.escape (pour échapper des chaînes pour RegExp), les pointeurs 64 bits (Memory64) dans WebAssembly, et la méthode Error.isError.
- Le gestionnaire de paquets NPM a été mis à jour vers la version 11.
- Le support du compilateur MSVC a été interrompu. Pour compiler sur la plateforme Windows, il est nécessaire d'utiliser ClangCL.
La plateforme Node.js peut être utilisée à la fois pour le soutien serveur des applications Web et pour la création de programmes réseau clients et serveurs traditionnels. Pour étendre la fonctionnalité des applications Node.js, une grande collection de modules a été préparée, où l'on peut trouver des modules avec implémentation. serveurs et des 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 vers des SGBD (MySQL, PostgreSQL, SQLite, MongoDB), des moteurs de templates, des moteurs CSS, des implémentations d'algorithmes cryptographiques et des systèmes d'authentification (OAuth), des parseurs XML.
Pour traiter un grand nombre de requêtes simultanées, Node.js utilise un modèle d'exécution de code asynchrone basé sur le traitement d'événements en mode non-bloquant et sur la définition de gestionnaires de callback. Les méthodes de multiplexage de connexions telles que epoll, kqueue, /dev/poll et select sont prises en charge. La bibliothèque libuv, qui surmonte libev dans les systèmes Unix et IOCP dans Windows, est utilisée pour le multiplexage des connexions. 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 et, comme les gestionnaires de signaux, transmettent le résultat de leur travail via un canal anonyme (pipe).
L'exécution du code JavaScript est assurée par le moteur V8 développé par Google (en outre, Microsoft développe une version de Node.js avec le moteur Chakra-Core). En essence, Node.js ressemble aux frameworks Perl AnyEvent, Ruby Event Machine, Python Twisted et à l'implémentation d'événements en Tcl, mais la boucle d'événements dans Node.js est cachée du développeur et rappelle le traitement d'événements dans une application web fonctionnant dans un navigateur.
Source : opennet.ru
