Veröffentlichung der Server-JavaScript-Plattform Node.js 16.0.

Die Veröffentlichung von Node.js 16.0, der Plattform zur Ausführung von Webanwendungen in JavaScript, hat stattgefunden. Node.js 16.0 wird zur LTS-Version eingeordnet, der Status wird jedoch erst im Oktober nach der Stabilisierung zugewiesen. Der Support für Node.js 16.0 läuft bis April 2023. Die Unterstützung der vorherigen LTS-Version Node.js 14.0 dauert bis April 2023, während die vorletzte LTS-Version 12.0 bis April 2022 unterstützt wird. Der Support für LTS-Version 10.0 wird in 10 Tagen eingestellt.

Hauptverbesserungen:

  • Die V8-Engine wurde auf Version 9.0 aktualisiert (in Node.js 15 wurde Version 8.6 verwendet), was es ermöglicht, in Node.js 16 Funktionen wie die Eigenschaft „indices“ für reguläre Ausdrücke (dies umfasst ein Array mit den Start- und Endpositionen von Übereinstimmungsguppen), die Methode Atomics.waitAsync (asynchrone Version von Atomics.wait) und die Unterstützung der Verwendung des Schlüsselworts await in Modulen auf oberster Ebene zu implementieren. Der Funktionsaufruf wurde beschleunigt, wenn die Anzahl der übergebenen Argumente nicht mit den in der Funktion definierten Parametern übereinstimmt.
  • Die API Timers Promises wurde stabilisiert und bietet eine alternative Sammlung von Funktionen zur Arbeit mit Timern, die Promise-Objekte zurückgeben, wodurch die Verwendung von util.promisify() überflüssig wird. import { setTimeout } from ‘timers/promises’; async function run() { await setTimeout(5000); console.log(‘Hallo, Welt!’); } run();
  • Eine experimentelle Implementierung der API Web Crypto wurde hinzugefügt, die für grundlegende kryptografische Operationen auf der Seite von Webanwendungen vorgesehen ist, wie z. B. Manipulationen mit kryptografischen Hashes, Erstellung und Überprüfung digitaler Signaturen, Kodierung und Dekodierung von Daten unter Verwendung verschiedener Verschlüsselungsmethoden und die Erzeugung kryptographisch sicherer Zufallszahlen. Die API umfasst auch Funktionen zur Generierung und Verwaltung von Schlüsseln.
  • N-API (API zur Entwicklung von Erweiterungen) wurde auf Version 8 aktualisiert.
  • Der Übergang zur neuen Version des Paketmanagers NPM 7.10 wurde vollzogen.
  • Die Implementierung der Klasse AbortController, die auf dem Web API AbortController basiert und es ermöglicht, Signale in ausgewählten APIs, die auf Promise basieren, abzubrechen, wurde stabilisiert.
  • Die Unterstützung des dritten Versionsformats von Source Map, das verwendet wird, um generierte, verarbeitete oder gepackte Module mit dem originalen Quellcode abzugleichen, wurde stabilisiert.
  • Zur Kompatibilität mit veralteten Web-APIs wurden die Methoden buffer.atob(data) und buffer.btoa(data) hinzugefügt.
  • Die Zusammenstellung für die neuen Apple-Geräte mit dem ARM-Prozessor M1 hat begonnen.
  • Auf der Linux-Plattform wurden die Anforderungen an die Compiler-Version auf GCC 8.3 angehoben.

Wir erinnern daran, dass die Plattform Node.js sowohl zur serverseitigen Unterstützung von Web-Anwendungen als auch zur Erstellung von normalen Client- und Server-Netzwerkprogrammen verwendet werden kann. Um die Funktionalität von Node.js-Anwendungen zu erweitern, steht eine große Sammlung von Modulen zur Verfügung, 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 der Verarbeitung von Ereignissen im nicht-blockierenden Modus und der Definition von Callback-Handlern basiert. Unterstützt werden Methoden wie epoll, kqueue, /dev/poll und select für das Multiplexen von Verbindungen. Für das Multiplexen von Verbindungen wird die Bibliothek libuv verwendet, die eine Erweiterung von libev in Unix-Systemen und von IOCP in Windows ist. Zur Erstellung eines Thread-Pools wird die Bibliothek libeio verwendet, für die Durchführung von DNS-Anfragen im nicht-blockierenden Modus ist c-ares integriert. Alle systemeigenen Aufrufe, die eine Blockierung verursachen, werden innerhalb des Thread-Pools ausgeführt und über eine unbenannte Pipe das Ergebnis ihrer Arbeit zurückgegeben, ebenso wie Signal-Handler. Die Ausführung von JavaScript-Code erfolgt durch den Einsatz der von Google entwickelten V8-Engine (zuzüglich Microsoft entwickelt 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 Ereignisimplementation in Tcl, jedoch ist die Ereignisschleife (event loop) in Node.js für den Entwickler verborgen und erinnert an die Ereignisverarbeitung in einer Webanwendung, die im Browser läuft. Beim Erstellen von Anwendungen für Node.js muss man die Besonderheiten der ereignisgesteuerten Programmierung berücksichtigen, zum Beispiel anstelle von „var result = db.query(„select..“);“ mit der Erwartung, dass die Ausführung abgeschlossen ist und die Ergebnisse anschließend verarbeitet werden, wird in Node.js das Prinzip der asynchronen Ausführung verwendet, d.h. der Code wird zu „db.query(„select..“, function (result) { Verarbeitung des Ergebnisses });“ umgewandelt, wobei die Kontrolle sofort an den nachfolgenden Code übergeben wird und das Ergebnis der Abfrage bei Erhalt der Daten verarbeitet wird.

Zusätzlich ist zu erwähnen, dass das Unternehmen Deno, gegründet von dem Creator von Node.js zur Weiterentwicklung der neuen Generation der Deno-Plattform, 4,9 Millionen Dollar an Investitionen erhalten hat. In seiner Funktion ähnelt Deno Node.js, versucht jedoch, die konzeptionellen Fehler zu beseitigen, die in der Architektur von Node.js gemacht wurden, und bietet den Nutzern eine sicherere Umgebung. Es wird darauf hingewiesen, dass die geschäftlichen Lösungen von Deno auf vollständig offenen Produkten basieren werden und das Open Core-Modell mit separaten kostenpflichtigen Funktionen als unakzeptabel für die Deno-Plattform angesehen wird.

Quelle: opennet.ru

60GB SSD 8Gb DDR4