Veröffentlichung der serverseitigen JavaScript-Plattform Node.js 13.0

Verfügbar Release Node.js 13.0, einer Plattform für die Ausführung von Netzwerk-Anwendungen in JavaScript. Gleichzeitig wurde die Stabilisierung der vorherigen Version Node.js 12.x abgeschlossen, die in die Kategorie der Versionen mit langfristiger Unterstützung überführt wurde, für die Updates über einen Zeitraum von 4 Jahren bereitgestellt werden. Die Unterstützung für die vorherige LTS-Version Node.js 10.0 wird bis April 2021 fortgeführt, und die Unterstützung für die Vorgängerversion 8.0 bis Januar 2020.

Haupt- Verbesserungen:

  • Die V8-Engine wurde auf die Version 7.8, die neue Methoden zur Leistungsoptimierung verwendet, die Destrukturierung von Objekten verbessert, den Speicherverbrauch reduziert und die Ausführungszeit von WebAssembly verkürzt;
  • Vollständige Unterstützung für Internationalisierung und Unicode basierend auf den Bibliotheken ICU (International Components for Unicode), die es Entwicklern ermöglichen, Code zu schreiben, der Unterstützung für verschiedene Sprachen und Lokalisierungen bietet. Das Modul full-icu ist jetzt standardmäßig installiert;
  • Der API Workers Threads, wurde stabilisiert, multithreaded Ereignisschleifen (event loops) zu erstellen. Die Implementierung basiert auf dem Modul worker_threads, das das Ausführen von JavaScript-Code in mehreren parallelen Threads ermöglicht. Stabile Unterstützung für die API Workers Threads wurde auch in die LTS-Version Node.js 12.x zurückportiert;
  • Die Systemanforderungen wurden erhöht. Für die Erstellung ist nun erforderlich mindestens macOS 10.11 (Xcode 10 erforderlich), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008 erforderlich;
  • Die Unterstützung für Python 3 wurde verbessert. Wenn sowohl Python 2 als auch Python 3 auf dem System vorhanden sind, wird weiterhin Python 2 verwendet, jedoch wurde die Möglichkeit zur Erstellung nur mit Python 3 hinzugefügt;
  • Die alte Implementierung des HTTP-Parsers („—http-parser=legacy“) wurde entfernt. Aufrufe und Eigenschaften wie FSWatcher.prototype.start(), ChildProcess._channel, die Methode open() in ReadStream- und WriteStream-Objekten, request.connection, response.connection, module.createRequireFromPath() wurden entfernt oder in den Status veraltet versetzt.
  • Im Anschluss daran wurde das Update 13.0.1 veröffentlicht, das mehrere Fehler unmittelbar behoben hat. Unter anderem wurde ein Problem mit der Ausgabe von npm 6.12.0 bezüglich der Verwendung einer nicht unterstützten Version gelöst.

Wir erinnern daran, dass die Node.js-Plattform sowohl für die serverseitige Unterstützung von Webanwendungen als auch für die Erstellung regulärer clientseitiger und serverseitiger Netzwerkprogramme genutzt werden kann. Für die Erweiterung der Funktionalität von Anwendungen für Node.js steht eine umfangreiche Modulsammlung zur Verfügung, in der Module für die Implementierung von HTTP-, SMTP-, XMPP-, DNS-, FTP-, IMAP-, POP3-Servern und -klienten zu finden sind, Module für die Integration mit verschiedenen Web-Frameworks, WebSocket- und Ajax-Handler, Datenbankverbindungen (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, verwendet Node.js ein asynchrones Code-Ausführungsmodell, das auf einem nicht-blockierenden Ereignisverarbeitungsansatz und der Definition von Callback-Handlern basiert. Unterstützte Multiplexierungsverfahren sind unter anderem epoll, kqueue, /dev/poll und select. Für die Multiplexierung von Verbindungen wird die Bibliothek verwendet, libuv, die eine Erweiterung über libev in Unix-Systemen und über IOCP in Windows darstellt. Für die Erstellung eines Thread-Pools wird die Bibliothek libeio, zur Ausführung von DNS-Anfragen im nicht-blockierenden Modus integriert, c-ares. Alle systematischen Aufrufe, die eine Blockierung hervorrufen, werden innerhalb des Thread-Pools ausgeführt und über ein benanntes Rohr (pipe) an die Callback-Handler zurückgegeben. Die Ausführung von JavaScript-Code erfolgt über die Verwendung der von Google entwickelten Engine V8 (darüber hinaus entwickelt Microsoft eine Variante von Node.js mit der Engine Chakra-Core).

Im Grunde genommen ähnelt Node.js den Frameworks Perl AnyEvent, Ruby Event Machine, Python Twisted und Implementierung Ereignissen in Tcl, aber die Ereignisschleife (event loop) in Node.js ist für den Entwickler verborgen und ähnelt der Ereignisverarbeitung in einer Webanwendung, die im Browser läuft. Bei der Erstellung von Anwendungen für Node.js ist es wichtig, die Besonderheiten der ereignisorientierten Programmierung zu berücksichtigen. Anstelle von „var result = db.query(„select..“);“ mit Erwartung auf die Fertigstellung und anschließender Ergebnisverarbeitung verwendet Node.js den Ansatz der asynchronen Ausführung, d.h. der Code wird zu „db.query(„select..“, function (result) {Ergebnisverarbeitung});“ transformiert, bei dem die Kontrolle sofort an den nachfolgenden Code übergeben wird, und das Ergebnis der Anfrage wird verarbeitet, sobald die Daten verfügbar sind.

Quelle: opennet.ru

60GB SSD 8Gb DDR4