Die JavaScript-Plattform Node.js 22.0.0 ist jetzt verfĂŒgbar.

Die Veröffentlichung von Node.js 22.0, einer Plattform zum AusfĂŒhren von Netzwerk-Anwendungen in JavaScript, fand statt. Node.js 22.0 gehört zu den Versionen mit langfristigem Support, dieser Status wird jedoch erst im Oktober vergeben, nachdem eine Stabilisierung stattgefunden hat. Der Support fĂŒr Node.js 22.x wird bis zum 30. April 2027 fortgesetzt. Die UnterstĂŒtzung fĂŒr die vorherige LTS-Version Node.js 20.x dauert bis April 2026, wĂ€hrend die vor-vorherige LTS-Version 18.x bis April 2025 betreut wird. Der Support fĂŒr die Zwischenversion Node.js 21.x wird am 1. Juni 2024 eingestellt.

Hauptverbesserungen:

  • Die V8-Engine wurde auf Version 12.4 aktualisiert, die in Chromium 124 verwendet wird. Im Vergleich zur Version Node.js 21, die die V8-Engine 11.8 verwendete, sind die folgenden Änderungen zu vermerken:
    • UnterstĂŒtzung der WasmGC-Erweiterung, die das Portieren von in Programmiersprachen, die einen Garbage Collector verwenden (wie Kotlin, PHP, Java usw.), geschriebenen Programmen in WebAssembly vereinfacht. WasmGC fĂŒgt neue Typen von Strukturen und Arrays hinzu, fĂŒr die nichtlineale Speicherzuweisungen verwendet werden können.
    • UnterstĂŒtzung der Methode Array.fromAsync(), die im asynchronen Modus eine neue Instanz eines Array-Objekts zurĂŒckgibt, das aus array-Ă€hnlichen, iterierbaren (iterable) oder asynchron iterierbaren (async iterable) Objekten kopiert wurde.
    • UnterstĂŒtzung von Methoden zur Arbeit mit Iteratoren, wie .map, .filter, .find, .take, .drop, .forEach und .reduce.
    • UnterstĂŒtzung des Set-Objekts, das eine Sammlung von Werten definiert und Methoden zum Implementieren typischer Mengenoperationen wie Schnittmengen, Vereinigungen, Differenzen und ErgĂ€nzungen anbietet.
  • StandardmĂ€ĂŸig ist der optimierende JIT-Compiler Maglev aktiviert, der auf die schnelle Erstellung von leistungsstarkem Maschinencode fĂŒr hĂ€ufig verwendeten JavaScript-Code abzielt. Die Aktivierung von Maglev ermöglicht eine spĂŒrbare Beschleunigung der AusfĂŒhrung von kurzlebigen CLI-Anwendungen, die keine langanhaltenden Operationen durchfĂŒhren; beispielsweise wird die Zeit fĂŒr den Jetstream-Test um 7,5 % verkĂŒrzt und fĂŒr den Speedometer-Test um 5 %.
  • Die Verarbeitung von Streams wurde durch Erhöhung des Werts von highWaterMark von 16 KB auf 65 KB beschleunigt (dies definiert das Limit, bis zu dem das Schreiben gepuffert wird). Diese Änderung fĂŒhrt zu einem erhöhten Speicherverbrauch, sodass Anwendungen, die fĂŒr die Arbeit mit begrenztem RAM ausgelegt sind, möglicherweise den alten Wert durch den Aufruf von setDefaultHighWaterMark() zurĂŒckgeben mĂŒssen.
  • Die Leistung der API fetch() und des Testlaufers wurde durch die Effizienzsteigerung bei der Instanziierung von AbortSignal verbessert. Auch die Leistung der APIs, die mit der synchronen Arbeit mit Dateisystemen zusammenhĂ€ngen, wurde erhöht.
  • Eine experimentelle Funktion zur Verwendung des Aufrufs „require()“ zum Laden von JavaScript-Modulen ESM (ECMAScript-Module) im synchronen Modus wurde bereitgestellt. ESM-Module werden in Browsern verwendet und ersetzen die fĂŒr Node.js spezifischen CommonJS-Module. Um ein ESM-Modul ĂŒber „require()“ zu laden, muss es im synchronen Modus ausgefĂŒhrt werden (ohne await auf oberster Ebene). Die UnterstĂŒtzung wird durch das Flag „—experimental-require-module“ aktiviert.
  • Eine experimentelle Möglichkeit wurde hinzugefĂŒgt, Skripte, die in der Datei package.json definiert sind, mit dem Befehl „—run “ auszufĂŒhren.
  • Der Befehl „node —watch“ wurde in die stabile Kategorie ĂŒberfĂŒhrt und implementiert einen Überwachungsmodus, der den Prozess beim Ändern der importierten Datei neu startet (zum Beispiel wird der Prozess automatisch neu gestartet, wenn sich index.js Ă€ndert, wenn „node —watch index.js“ ausgefĂŒhrt wird).
  • Die eingebaute Implementation der WebSocket-API wurde stabilisiert, sodass WebSocket im Client-Modus ohne zusĂ€tzliche AbhĂ€ngigkeiten verwendet werden kann.
  • Teilweise UnterstĂŒtzung der Navigator-API wurde hinzugefĂŒgt.
  • Im Webstreams-API wurde UnterstĂŒtzung fĂŒr das deflate-raw-Komprimierungsformat hinzugefĂŒgt.
  • Im Modul node:fsmodule wurden die Funktionen glob und globSync zum Abgleichen von Dateipfaden nach Muster hinzugefĂŒgt.
  • Die Verarbeitung von fehlerhaft konfigurierte IPv6-Stacks wurde verbessert. Ein Happy Eyeballs-Algorithmus wurde implementiert, um bei Problemen mit IPv6 schnell zurĂŒckzukehren.
  • Die util-API wurde als veraltet erklĂ€rt.
  • Die Versionen der AbhĂ€ngigkeiten wurden aktualisiert: 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 auf 3.8.0, ada 2.7.7 und undici auf 6.6.0.

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 bearbeiten, verwendet Node.js ein asynchrones CodeausfĂŒhrungsmodell, das auf der Verarbeitung von Ereignissen im nicht-blockierenden Modus und der Definition von Callback-Handlern basiert. Zur Multiplexierung von Verbindungen werden Methoden wie epoll, kqueue, /dev/poll und select unterstĂŒtzt. FĂŒr die Multiplexierung von Verbindungen wird die libuv-Bibliothek verwendet, die eine Erweiterung von libev in Unix-Systemen und von IOCP in Windows darstellt. FĂŒr die Erstellung eines Thread-Pools wird die libeio-Bibliothek verwendet, und fĂŒr die AusfĂŒhrung von DNS-Anfragen im nicht-blockierenden Modus ist c-ares integriert. Alle Systemaufrufe, die Blockierungen verursachen, werden innerhalb des Thread-Pools ausgefĂŒhrt und, wie auch die Signalhandler, geben das Ergebnis ihrer Arbeit ĂŒber eine nicht benannte Pipe zurĂŒck.

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

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster