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

Die Veröffentlichung von Node.js 16.0 ist erfolgt, einer Plattform zur Ausführung von Netzwerk-Anwendungen in JavaScript. Node.js 16.0 gehört zu den Long-Term-Support (LTS)-Zweigen, wobei dieser Status jedoch erst im Oktober nach der Stabilisierung zugewiesen wird. Die Unterstützung für Node.js 16.0 wird bis April 2023 gewährleistet. Die Wartung des vorherigen LTS-Zweigs Node.js 14.0 wird bis April 2023 fortgesetzt, und des Zweigs 12.0 bis April 2022. Die Betreuung des LTS-Zweigs 10.0 wird in 10 Tagen eingestellt.

Wesentliche Verbesserungen:

  • Die V8-Engine wurde auf Version 9.0 aktualisiert (in Node.js 15 kam die Version 8.6 zum Einsatz), was es ermöglicht hat, in Node.js 16 Funktionalitäten wie die Eigenschaft „indices“ für reguläre Ausdrücke (einschließlich eines Arrays mit Start- und Endpositionen der Übereinstimmungsgruppen), die Methode Atomics.waitAsync (asynchrone Version von Atomics.wait) und die Unterstützung für die Nutzung des Schlüsselworts await auf Modulebene zu implementieren. Die Funktionsaufrufe wurden beschleunigt, insbesondere wenn die Anzahl der übergebenen Argumente nicht mit den in der Funktion definierten Parametern übereinstimmt.
  • Stabilisiertes API Timers Promises, das einen alternativen Satz von Funktionen zur Arbeit mit Timer bietet, die Promise-Objekte zurückgeben. Dies ermöglicht es, auf util.promisify() zu verzichten. import { setTimeout } from 'timers/promises'; async function run() { await setTimeout(5000); console.log('Hallo, Welt!'); } run();
  • Eine experimentelle Implementierung des Web Crypto API wurde hinzugefügt, die für grundlegende kryptografische Operationen in Webanwendungen vorgesehen ist, wie z. B. Manipulationen mit kryptografischen Hashes, Erstellung und Überprüfung digitaler Signaturen, Codierung und Dekodierung von Daten mit verschiedenen Verschlüsselungsmethoden sowie die Erzeugung kryptografisch sicherer Zufallszahlen. Das API enthält auch Funktionen zur Schlüsselgenerierung und -verwaltung.
  • N-API (API zur Entwicklung von Add-ons) 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, wurde stabilisiert und ermöglicht das Abbrechen von Signalen in ausgewählten APIs auf Basis von Promise.
  • Die Unterstützung für die dritte Version des Source-Map-Formats, das zur Zuordnung von generierten, verarbeiteten oder gepackten Modulen mit dem ursprünglichen Quellcode verwendet wird, wurde stabilisiert.
  • Zur Kompatibilität mit veralteten Web-APIs wurden die Methoden buffer.atob(data) und buffer.btoa(data) hinzugefügt.
  • Die Erstellung von Builds für neue Apple-Geräte, die mit dem ARM-Chip M1 ausgestattet sind, hat begonnen.
  • Auf der Plattform Linux wurden die Anforderungen an die Compiler-Version auf GCC 8.3 erhöht.

Erinnern wir uns daran, dass die Plattform Node.js sowohl für die serverseitige Unterstützung von Webanwendungen als auch für die Erstellung herkömmlicher client- und serverseitiger Netzwerkprogramme verwendet werden kann. Um die Funktionalität von Node.js-Anwendungen zu erweitern, wurde eine umfangreiche Sammlung von Modulen vorbereitet, in der Module mit Implementierungen zu finden sind. 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 verarbeiten, verwendet Node.js ein asynchrones Codeausführungsmodell, das auf der Verarbeitung von Ereignissen im Nicht-Blockierungsmodus und der Definition von Callback-Handlern basiert. Zu den Methoden der Verbindungsmultiplexierung gehören Techniken wie epoll, kqueue, /dev/poll und select. Für die Verbindungs multiplexierung verwendet Node.js die Bibliothek libuv, die eine Erweiterung von libev in Unix-Systemen und von IOCP in Windows darstellt. Zum Erstellen eines Thread-Pools wird die Bibliothek libeio verwendet, und für die nicht-blockierenden DNS-Abfragen ist c-ares integriert. Alle systemaufrufenden Blockierungen werden innerhalb des Thread-Pools ausgeführt und über ein anonymes Pipe zurückgegeben, ähnlich wie Signal-Handler, die die Ergebnisse ihrer Arbeit übermitteln. Die Ausführung von JavaScript-Code erfolgt durch die Nutzung der von Google entwickelten V8-Engine (zusätzlich entwickelt Microsoft eine Version von Node.js mit der Chakra-Core-Engine).

Node.js ähnelt in seiner Funktionalität den Frameworks Perl AnyEvent, Ruby Event Machine, Python Twisted und der Ereignisimplementierung in Tcl. Der Event-Loop in Node.js ist jedoch für den Entwickler nicht sichtbar und erinnert an die Ereignisverarbeitung in einer Webanwendung, die im Browser läuft. Bei der Entwicklung von Anwendungen für Node.js muss man die Besonderheiten der ereignisgesteuerten Programmierung berücksichtigen. Anstatt den Code wie «var result = db.query(«select..»);» zu schreiben und auf das Ende der Bearbeitung zu warten, verwendet Node.js das Prinzip der asynchronen Ausführung. Dies bedeutet, dass der Code in «db.query(«select..», function (result) { Ergebnisverarbeitung });» umgewandelt wird. Dabei wird die Kontrolle sofort an den nachfolgenden Code übergeben, während das Ergebnis des Abfrage mit dem Eintreffen der Daten verarbeitet wird.

Zusätzlich ist erwähnenswert, dass das Unternehmen Deno, das von dem Node.js-Entwickler gegründet wurde, 4,9 Millionen Dollar an Investitionen für die Entwicklung der neuen Plattform Deno erhalten hat. Deno ähnelt in seiner Funktion Node.js, versucht jedoch konzeptionelle Fehler in der Architektur von Node.js zu beseitigen und den Nutzern eine sicherere Umgebung zu bieten. Es wird festgestellt, dass die Geschäftsentscheidungen von Deno auf vollständig offenen Produkten basieren werden und dass das Open-Core-Modell mit einer separaten kostenpflichtigen Funktionalität als untragbar für die Deno-Plattform angesehen wird.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster