Node.js 24.0.0 wurde veröffentlicht, eine Plattform zur AusfĂŒhrung von Webanwendungen in JavaScript. Node.js 24.0 gehört zu den Versionen mit langfristiger UnterstĂŒtzung, dieser Status wird jedoch erst im Oktober nach der Stabilisierung zugewiesen. Die UnterstĂŒtzung fĂŒr Node.js 24.x wird bis zum 30. April 2028 fortgesetzt. Die Pflege der vorherigen LTS-Version Node.js 22.x wird bis April 2027 andauern, und die vorvorherige LTS-Version 20.x bis April 2026. Der Support fĂŒr die LTS-Version 18.x endet am 30. April 2025, und die Zwischenversion Node.js 23.x wird am 1. Juni 2025 eingestellt.
Wesentliche Verbesserungen:
- Im API AsyncLocalStorage wird standardmĂ€Ăig die Klasse AsyncContextFrame verwendet, die als stabil gekennzeichnet ist. AsyncContextFrame implementiert einen effizienteren Mechanismus zur Verfolgung des asynchronen Kontexts, was die Leistung erheblich steigert.
- Das API URLPattern ist jetzt als globales Objekt verfĂŒgbar, das ohne explizite Importierung verwendet werden kann. URLPattern bietet Funktionen zur ĂberprĂŒfung, ob eine URL einem bestimmten Muster entspricht, was beispielsweise zur Analyse von Links verwendet werden kann.
- Das Berechtigungssystem (Permission Model) wurde verbessert und stabilisiert, um den Zugriff auf bestimmte Ressourcen wĂ€hrend der AusfĂŒhrung einzuschrĂ€nken (z. B. kann die Erstellung von Kindprozessen, der Schreib- oder Lesezugriff auf bestimmte Bereiche des Dateisystems oder die Verwendung von Erweiterungen eingeschrĂ€nkt werden). Anstelle des experimentellen Flags ââexperimental-permissionâ zur Aktivierung des Berechtigungsmodells kann nun das Flag ââpermissionâ verwendet werden.
- Die Funktionen des Moduls node:test (test_runner), das zum Erstellen und AusfĂŒhren von Tests in JavaScript dient, die Ergebnisse im TAP-Format (Test Anything Protocol) zurĂŒckgeben, wurden erweitert. Das Modul wartet jetzt automatisch auf den Abschluss von geschachtelten Tests, ohne dass await verwendet werden muss.
- Der HTTP-Client undici wurde auf die Version 7.x aktualisiert, in der die Leistung verbessert wurde und neue HTTP-Funktionen hinzugefĂŒgt wurden.
- Die V8-Engine wurde auf Version 13.6 aktualisiert, die in Chromium 136 verwendet wird. Zu den neuen Funktionen im Vergleich zur vorherigen Node.js-Version gehört die UnterstĂŒtzung von typisierten Arrays Float16Array, manuelle Ressourcenverwaltung, die Methode RegExp.escape (Escaping von Zeichenfolgen fĂŒr RegExp), 64-Bit-Zeiger (Memory64) in WebAssembly und die Methode Error.isError.
- Der Paketmanager NPM wurde auf Version 11 aktualisiert.
- Die UnterstĂŒtzung des MSVC-Compilers wurde eingestellt. Zum Kompilieren auf der Windows-Plattform muss ClangCL verwendet werden.
Die Node.js-Plattform kann sowohl fĂŒr die serverseitige UnterstĂŒtzung von Webanwendungen als auch fĂŒr die Erstellung von regulĂ€ren Client- und Server-Netzwerkprogrammen genutzt werden. Um die FunktionalitĂ€t von Node.js-Anwendungen zu erweitern, wurde eine umfangreiche Sammlung von Modulen erstellt, in der man Module mit Implementierungen finden kann. Server und HTTP-, SMTP-, XMPP-, DNS-, FTP-, IMAP-, POP3-Clients, Module zur Integration mit verschiedenen Web-Frameworks, WebSocket- und Ajax-Handler, Datenbank-Connectoren (MySQL, PostgreSQL, SQLite, MongoDB), Template-Engines, CSS-Engines, Implementierungen von Krypto-Algorithmen und Autorisierungssystemen (OAuth), XML-Parser.
Um eine groĂe Anzahl paralleler Anfragen zu verarbeiten, nutzt Node.js ein asynchrones CodeausfĂŒhrungsmodell, das auf ereignisgesteuerter, nicht-blockierender Verarbeitung und der Definition von Callback-Handlern basiert. Zu den UnterstĂŒtzten Multiplexing-Methoden gehören epoll, kqueue, /dev/poll und select. Zum Multiplexen von Verbindungen wird die Bibliothek libuv verwendet, die auf libev in Unix-Systemen und auf IOCP in Windows aufbaut. FĂŒr die Erstellung eines Thread-Pools wird die Bibliothek libeio eingesetzt, fĂŒr die DurchfĂŒhrung von DNS-Anfragen im nicht-blockierenden Modus ist c-ares integriert. Alle systematischen Aufrufe, die eine Blockierung verursachen, werden innerhalb des Thread-Pools ausgefĂŒhrt und ĂŒber ein anonymes Pipe wieder an die Handler zurĂŒckgegeben.
Die AusfĂŒhrung von JavaScript-Code erfolgt durch den Einsatz der von Google entwickelten V8-Engine (zusĂ€tzlich entwickelt Microsoft eine Variante von Node.js mit der Chakra-Core-Engine). Im Grunde Ă€hnelt Node.js den Frameworks Perl AnyEvent, Ruby Event Machine, Python Twisted und der ereignisgesteuerten Implementierung in Tcl, aber die Ereignisverarbeitungsschleife (Event Loop) in Node.js ist fĂŒr den Entwickler verborgen und Ă€hnelt der Ereignisverarbeitung in einer Webanwendung, die im Browser ausgefĂŒhrt wird.
Quelle: opennet.ru
