Die Veröffentlichung von Node.js 26.0.0 ist erfolgt, einer Plattform zur Ausführung von Netzwerkapplications in JavaScript. Node.js 26.0 wird als Version mit langfristiger Unterstützung eingeordnet, jedoch wird dieser Status erst im Oktober nach einer Stabilisierung erteilt. Die Unterstützung für Node.js 26.x wird bis Mai 2029 gewährleistet. Die vorherige LTS-Version Node.js 24.x wird bis zum 30. April 2028 unterstützt, und die Version 22.x bis zum 30. April 2027. Die Unterstützung für die LTS-Version 20.x endet am 30. April 2026, und die Übergangsversion 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 Bearbeitung von Datums- und Zeitangaben. Die API ermöglicht die Manipulation von Datumsangaben mit und ohne Berücksichtigung von Zeitzonen, Zeitkonvertierungen, Ausgabeformatierung und die Durchführung von Rechenoperationen mit Zeit. Zeit kann in einem zeitzonenunabhängigen Format (Temporal.PlainDate, Temporal.PlainTime, Temporal.PlainDateTime), in Bezug auf eine Zeitzone (Temporal.ZonedDateTime) und in epochaler Form (Temporal.Instant — Anzahl der Nanosekunden seit dem 1. Januar 1970) dargestellt werden.
- Die V8-Engine wurde auf Version 14.6 aktualisiert, die in Chromium 146 eingesetzt 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 Schlüssel-Wert-Paaren in JavaScript-Objekten wie 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 Entwicklung herkömmlicher Client- und Server-Netzwerkprogramme genutzt werden. Für die Erweiterung der Funktionalität von Node.js-Anwendungen steht eine umfangreiche Sammlung von Modulen zur Verfügung, die Module mit Implementierungen bereitstellt, 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 Kryptografie-Algorithmen und Authentifizierungssystemen (OAuth), XML-Parser.
Um eine große Anzahl paralleler Anfragen zu bearbeiten, nutzt Node.js ein asynchrones Modell zur Ausführung von Code, das auf der Verarbeitung von Ereignissen im nicht-blockierenden Modus und der Definition von Callback-Handlern basiert. Zu den unterstützten Multiplexing-Methoden gehören epoll, kqueue, /dev/poll und select. Für das Multiplexing von Verbindungen wird die Bibliothek libuv verwendet, die eine Schicht über libev in Unix-Systemen und IOCP in Windows darstellt. Für die Erstellung eines Thread-Pools kommt die Bibliothek libeio zum Einsatz, und für nicht-blockierende DNS-Anfragen ist c-ares integriert. Alle systemcalls, die Blockierungen verursachen, werden innerhalb des Thread-Pools ausgeführt und über ein anonymes Pipe zurückgegeben, sowie die Signalhandler, die das Ergebnis ihrer Arbeit zurückleiten.
Die Ausführung von JavaScript-Code erfolgt durch den von Google entwickelten V8-Motor. Im Grunde genommen ähnelt Node.js den Frameworks Perl AnyEvent, Ruby Event Machine, Python asyncio und der Ereignisimplementierung in Tcl, jedoch ist der Ereignisloop in Node.js für den Entwickler verborgen und ähnelt der Ereignisverarbeitung in einer Webanwendung, die im Browser läuft.
Quelle: opennet.ru
