Die Node.js-Plattform 25.0.0 wurde veröffentlicht

Die Veröffentlichung von Node.js 25.0.0, einer Plattform zur Ausführung von Netzwerkanwendungen in JavaScript, fand statt. Node.js 25.0 wird als Zwischenversion eingestuft, deren Wartung über einen Zeitraum von 7 Monaten (bis Juni 2026) erfolgt. In den kommenden Tagen wird die Stabilisierung des Node.js 24-Zweigs abgeschlossen, der Ende Oktober den LTS-Status erhält und bis April 2028 unterstützt wird. Die Unterstützung der vorherigen LTS-Zweige Node.js 22.x und 20.x wird bis April 2027 bzw. 2026 fortgesetzt.

Hauptverbesserungen:

  • Die V8-Engine wurde auf Version 14.1 aktualisiert, die in Chromium 141 verwendet wird. Zu den Verbesserungen im Vergleich zur vorherigen Node.js-Version gehört eine bedeutende Leistungssteigerung der Methode JSON.stringify, die Optimierung von WebAssembly und JIT sowie die Implementierung von Methoden zur Umwandlung zwischen Uint8Array und Daten im Base64- oder hexadezimalen Format.
  • Im Permission Model, das den Zugriff auf bestimmte Ressourcen während der Ausführung einschränkt, wurde die Option «—allow-net» hinzugefügt, um den Netzwerkzugang zu ermöglichen (wenn die Option «—allow-net» nicht angegeben ist, gibt der Start von Node.js im «—permission»-Modus einen Fehler ERR_ACCESS_DENIED aus, wenn versucht wird, Netzwerkoperationen auszuführen).
  • Standardmäßig aktiviert kompatibel mit Browsern Die API Web Storage, die für die permanente (Klasse localStorage) oder temporäre (Klasse sessionStorage) Speicherung von Daten im Schlüssel/Wert-Format gedacht ist. Das Experimentaldatum wurde von der API Web Storage entfernt.
  • Die Klasse ErrorEvent wurde in die Kategorie global verfügbar (kann ohne expliziten Import verwendet werden) überführt und bietet eine browserkompatible Schnittstelle zur Verarbeitung von Ereignissen mit Informationen über Fehler.
  • Für WebAssembly wurde die Unterstützung der API JSPI (JavaScript Promise Integration) aktiviert, die den Zugriff auf asynchrone Web-APIs aus sequenziell ausgeführtem Code, der in WebAssembly kompiliert wurde, ermöglicht.
  • Eine Option «NODE_COMPILE_CACHE_RELATIVE_PATH» wurde hinzugefügt, um eine portable Nutzung des Caches für kompilierten Objekte zu ermöglichen. In diesem Modus werden die Hashes zur Identifikation von Objekten mit relativen Dateipfaden berechnet, was das Verschieben und Einbetten des Inhalts eines Verzeichnisses mit Code zusammen mit dem Cache ermöglicht.
  • Die Möglichkeit zur Profilerstellung der CPU-Auslastung wurde hinzugefügt.
  • Der Paketmanager NPM wurde auf Version 11.6.2 aktualisiert.
  • Die Unterstützung für Python 3.14 wurde hinzugefügt.
  • Die minimal unterstützten Versionen sind Clang 19 und Xcode 16.4.
  • Die Unterstützung des SlowBuffer-Objekts, das zuvor aufgrund potenzieller Sicherheitsprobleme als veraltet erklärt wurde, wurde eingestellt. Anstelle von SlowBuffer sollte die Methode Buffer.allocUnsafeSlow() 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

60GB SSD 8Gb DDR4