La plateforme JavaScript Node.js 22.0.0 est disponible

La version 22.0 de Node.js, la plateforme d'exécution d'applications réseau en JavaScript, a été publiée. Node.js 22.0 est classé parmi les versions avec support à long terme, mais ce statut ne sera attribué qu'en octobre, aprÚs une période de stabilisation. Le support de Node.js 22.x sera assuré jusqu'au 30 avril 2027. Le soutien pour la branche LTS précédente Node.js 20.x se poursuivra jusqu'en avril 2026, et pour la branche LTS antérieure 18.x jusqu'en avril 2025. Le soutien pour la branche intermédiaire Node.js 21.x cessera le 1er juin 2024.

Améliorations principales :

  • Le moteur V8 a Ă©tĂ© mis Ă  jour vers la version 12.4, utilisĂ©e dans Chromium 124. Parmi les changements par rapport Ă  la branche Node.js 21, qui utilisait le moteur V8 11.8, on peut noter :
    • Support de l'extension WasmGC, facilitant le portage en WebAssembly des programmes Ă©crits dans des langages de programmation utilisant un ramasse-miettes (Kotlin, PHP, Java, etc.). WasmGC ajoute de nouveaux types de structures et de tableaux pour lesquels une allocation de mĂ©moire non linĂ©aire peut ĂȘtre appliquĂ©e.
    • Support de la mĂ©thode Array.fromAsync(), qui renvoie en mode asynchrone une nouvelle instance de l'objet Array, copiĂ©e Ă  partir d'objets semblables Ă  des tableaux, itĂ©rables (iterable) ou itĂ©rables asynchrones (async iterable).
    • Support des mĂ©thodes pour travailler avec les itĂ©rateurs, telles que .map, .filter, .find, .take, .drop, .forEach et .reduce.
    • Support de l'objet Set, qui dĂ©finit une collection de valeurs et propose des mĂ©thodes implĂ©mentant des opĂ©rations typiques sur les ensembles, telles que les intersections, les unions, la diffĂ©rence et le complĂ©ment.
  • Le compilateur JIT optimiseur Maglev est activĂ© par dĂ©faut, visant Ă  gĂ©nĂ©rer rapidement du code machine hautes performances pour le code JavaScript utilisĂ©. L'activation de Maglev permet d'accĂ©lĂ©rer considĂ©rablement le fonctionnement des applications CLI Ă  court terme, qui ne rĂ©alisent pas d'opĂ©rations longues ; par exemple, le temps de passage du test Jetstream est rĂ©duit de 7,5 % et le test Speedometer de 5 %.
  • Les performances avec les flux ont Ă©tĂ© amĂ©liorĂ©es grĂące Ă  l'augmentation de la valeur de l'option highWaterMark de 16 Ko Ă  65 Ko (dĂ©finit la limite jusqu'Ă  laquelle le buffering d'Ă©criture est effectuĂ©). Ce changement entraĂźne une augmentation de la consommation de mĂ©moire, donc les applications conçues pour fonctionner avec une quantitĂ© limitĂ©e de RAM peuvent devoir revenir Ă  l'ancienne valeur en appelant setDefaultHighWaterMark().
  • Les performances de l'API fetch() et du test runner ont Ă©tĂ© amĂ©liorĂ©es grĂące Ă  une meilleure efficacitĂ© de la crĂ©ation d'instances d'AbortSignal. Les performances des API liĂ©es aux opĂ©rations synchrones avec les systĂšmes de fichiers ont Ă©galement Ă©tĂ© renforcĂ©es.
  • Une fonctionnalitĂ© expĂ©rimentale a Ă©tĂ© introduite pour utiliser l'appel « require() » afin de charger des modules JavaScript ESM (ECMAScript Modules) de maniĂšre synchrone. Les modules ESM sont utilisĂ©s dans les navigateurs et remplacent les modules CommonJS spĂ©cifiques Ă  Node.js. Pour charger un module ESM via « require() », il doit ĂȘtre exĂ©cutĂ© en mode synchrone (sans await au niveau supĂ©rieur). Le support est activĂ© grĂące au drapeau « —experimental-require-module ».
  • Une possibilitĂ© expĂ©rimentale a Ă©tĂ© ajoutĂ©e pour exĂ©cuter des scripts dĂ©finis dans le fichier package.json en utilisant la commande « —run ».
  • La commande « node —watch » a Ă©tĂ© transfĂ©rĂ©e dans la catĂ©gorie stable avec la mise en Ɠuvre d'un mode de surveillance, permettant le redĂ©marrage du processus lors de la modification d'un fichier importĂ© (par exemple, lors de l'exĂ©cution de « node —watch index.js », le processus sera automatiquement redĂ©marrĂ© lors de la modification de index.js).
  • L'implĂ©mentation intĂ©grĂ©e de l'API WebSocket a Ă©tĂ© stabilisĂ©e, permettant d'utiliser WebSocket en mode client sans installer de dĂ©pendances supplĂ©mentaires.
  • Un support partiel de l'API Navigator a Ă©tĂ© ajoutĂ©.
  • Le format de compression deflate-raw a Ă©tĂ© ajoutĂ© au l'API Webstreams.
  • Le module node:fsmodule a Ă©tĂ© enrichi des fonctions glob et globSync pour le filtrage des chemins de fichiers selon un modĂšle.
  • Le traitement des piles IPv6 mal configurĂ©es a Ă©tĂ© amĂ©liorĂ©. L'algorithme 'Happy Eyeballs' a Ă©tĂ© mis en Ɠuvre pour un retour rapide en cas de problĂšmes de fonctionnement de l'IPv6.
  • L'API util a Ă©tĂ© dĂ©clarĂ©e obsolĂšte.
  • Les versions des dĂ©pendances ont Ă©tĂ© mises Ă  jour : npm 10.5.1, libuv 1.48.0, simdutf 5.2.3, c-ares 1.28.1, zlib 1.3.0.1-motley-24c07df, simdjson 3.8.0, ada 2.7.7 et undici 6.6.0.

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 la dĂ©finition de gestionnaires de callbacks. Pour le multiplexage des connexions, des mĂ©thodes telles que epoll, kqueue, /dev/poll et select sont supportĂ©es. La bibliothĂšque libuv, qui est une surcouche de libev sur les systĂšmes Unix et de IOCP sur Windows, est utilisĂ©e pour le multiplexage des connexions. La bibliothĂšque libeio est utilisĂ©e pour crĂ©er un pool de threads (thread pool), et c-ares est intĂ©grĂ© pour effectuer des requĂȘtes DNS en mode non-bloquant. Tous les appels systĂšmes pouvant bloquer sont exĂ©cutĂ©s Ă  l'intĂ©rieur du pool de threads et, tout comme les gestionnaires de signaux, transmettent les rĂ©sultats 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

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster