Die Veröffentlichung von Node.js 26.0.0, einer Plattform zur AusfĂŒhrung von Netzwerk-Anwendungen in der Programmiersprache JavaScript, fand statt. Node.js 26.0 gehört zu den Versionen mit langfristiger UnterstĂŒtzung, dieser Status wird jedoch erst im Oktober nach einer Stabilisierung zugewiesen. Die UnterstĂŒtzung fĂŒr Node.js 26.x wird bis Mai 2029 gewĂ€hrt. Die UnterstĂŒtzung fĂŒr die vorherige LTS-Version Node.js 24.x endet am 30. April 2028, und fĂŒr die vorvorherige Version 22.x endet sie am 30. April 2027. Die UnterstĂŒtzung der LTS-Version 20.x endet am 30. April 2026, und die UnterstĂŒtzung der Zwischenversion Node.js 25.x wird am 1. Juni 2026 eingestellt.
Wesentliche Verbesserungen:
- Die Temporal-API ist standardmĂ€Ăig aktiviert und bietet eine alternative Methode zur Verarbeitung von Daten und Zeiten. Die API ermöglicht das Manipulieren von Daten unter BerĂŒcksichtigung und ohne BerĂŒcksichtigung von Zeitzonen, das Konvertieren von Zeiten, das Formatieren von Ausgaben und das AusfĂŒhren von arithmetischen Operationen mit Zeiten. Zeiten können in einer zeitzonenunabhĂ€ngigen Darstellung (Temporal.PlainDate, Temporal.PlainTime, Temporal.PlainDateTime), an eine Zeitzone gebunden (Temporal.ZonedDateTime) und epochal dargestellt werden (Temporal.Instant â die Anzahl der Nanosekunden seit dem 1. Januar 1970).
- Die V8-Engine wurde auf Version 14.6 aktualisiert, die in Chromium 146 verwendet wird. Zu den Verbesserungen im Vergleich zur vorherigen Node.js-Version gehört die Möglichkeit, mehrere Iteratoren mit der Methode Iterator.concat() zu einem einzigen zu kombinieren, sowie die Implementierung der âupsertâ-Spezifikation zur Vereinfachung der Arbeit mit Sammlungen von SchlĂŒssel-/Wert-Paaren in JavaScript-Objekten Map und WeakMap.
- Der HTTP-Client undici wurde auf die Version 8.x aktualisiert.
- Die Methode http.Server.prototype.writeHeader() wurde entfernt, stattdessen sollte http.Server.prototype.writeHead() 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 ĂŒber die Nutzung der von Google entwickelten V8-Engine. Im Grunde genommen Ă€hnelt Node.js den Frameworks Perl AnyEvent, Ruby Event Machine, Python asyncio und der Ereignisimplementierung in Tcl, jedoch ist die Ereignisschleife (event loop) in Node.js fĂŒr den Entwickler verborgen und Ă€hnelt der Ereignisverarbeitung in einer Webanwendung, die im Browser lĂ€uft.
Quelle: opennet.ru
