My super sweet 16

Node.js 16 veröffentlicht: Neue APIs, V8-Update und mehr

Redaktion JAXenter

© Shutterstock / MaDedee

Node.js 16 wurde veröffentlicht: Zu den Highlights dieser Version gehören sowohl das Update der V8-JavaScript-Engine auf V8 9.0, als auch vorgefertigte Apple-Silicon-Binaries und zusätzliche stabile APIs.

Node.js 16 ist da. Zunächst wird die neueste Version Node.js 15 als Current-Release-Linie ersetzen. Gemäß des Release-Plans wird Node.js 16 für die nächsten 6 Monate das Current-Release sein, bevor es dann im Oktober 2021 in den Long-Term-Support (LTS) überführt wird. Nach der Umstellung auf den Langzeit-Support wird das Release den Codenamen Gallium erhalten. Zur Erinnerung: Node.js 12 wird bis April 2022 im Support und Node.js 14 wird bis April 2023 im Langzeit-Support bleiben. Node.js 10 wird Ende dieses Monats (April 2021) sein End-of-Life erreichen. Weitere Details zu dem Release-Plan finden sich im Repository der Node.js Release Working Group.

V8 auf V8 9.0 aktualisiert

Wie immer kommt eine neue Version von V8 mit einigen Leistungsoptimierungen und -verbesserungen, um Node.js auf dem neuesten Stand der JavaScript-Sprachfeatures zu bringen. In Node.js v16.0.0 wird die V8-Engine auf V8 9.0 aktualisiert – gegenüber V8 8.6 in Node.js 15. Dieses Update bringt die ECMAScript RegExp Match Indices, die die Start- und End-Indizes der erfassten Strings liefern. Das Indizes-Array ist über die Eigenschaft .indices auf Match-Objekten verfügbar, wenn der reguläre Ausdruck das /d-Flag besitzt.

 
> const matchObj = /(Java)(Script)/d.exec('JavaScript');
undefined
> matchObj.indices
[ [ 0, 10 ], [ 0, 4 ], [ 4, 10 ], groups: undefined ]
> matchObj.indices[0]; // Match
[ 0, 10 ]
> matchObj.indices[1]; // First capture group
[ 0, 4 ]
> matchObj.indices[2]; // Second capture group
[ 4, 10 ]

Weitere Informationen zu der neuesten Version, allen Features und Updates von V8 können dem offiziellen Blog der Engine entnommen werden.

APIs: Stabile Timers Promises

Die Timers Promises APIs bieten einen alternativen Satz von Timer-Funktionen, die Promise-Objekte zurückgeben, wodurch die Notwendigkeit entfällt, util.promisify() zu verwenden:

import { setTimeout } from 'timers/promises';

async function run() {
   await setTimeout(5000);
   console.log('Hello, World!');
}

run();

Bereits in Node.js v15.0.0 von James Snell hinzugefügt, gehen sie in dieser Version vom experimentellen Status in den stabilen über.

Sonstige neue Features

Es liegt in der Natur des Release-Prozesses, dass etwa alle zwei Wochen neue Features in der Current-Release-Linie veröffentlicht werden. Aus diesem Grund sind viele aktuelle Ergänzungen bereits seit den letzten Node.js 15-Releases verfügbar, allerdings noch relativ neu in der Runtime. Einige der kürzlich veröffentlichten Features in Node.js 15, die auch in Node.js 16 verfügbar sein werden, sind:

  • Node-API version 8
  • Stable Source Maps v3
  • Web platform atob (buffer.atob(data)) und btoa (buffer.btoa(data)) Implementierungen für Kompatibilität mit Legacy-Web-Plattform-APIs

Neue Mindestanforderungen für Compiler und Plattformen

Node.js bietet vorgefertigte Binärdateien für eine Reihe von verschiedenen Plattformen. Für jedes größere Release werden die minimalen Toolchains überprüft und gegebenenfalls verbessert. Node.js v16.0.0 wird das erste Release sein, mit dem vorgefertigte Binärdateien für Apple Silicon geliefert werden. Während separate Tarballs für die Intel ()- und ARM ()-Architekturen zur Verfügung stehen, wird das macOS-Installationsprogramm (.pkg) als Fat Binary (Multi-Architektur) ausgeliefert. Die Produktion dieser Binärdateien wurde auch durch MacStadium ermöglicht, die dem Projekt die notwendige Hardware zur Verfügung stellten.

Auf Linux-basierten Plattformen wird das minimale GCC-Level für die Erstellung von Node.js 16 GCC 8.3 sein. Details zu den unterstützten Toolchains und Compilern sind in der Datei Node.js BUILDING.md dokumentiert.

Deprecations

Das neue Major-Release wurde als Anlaß genommen, einige Deprecations vorzunehmen. Das Node.js-Projekt zielt darauf ab, die Störungen des Ökosystems für alle Breaking Changes zu minimieren. Zu diesem Zwecke wird ein Tool namens CITGM (Canary in the Goldmine) verwendet, um die Auswirkungen von Breaking Changes (einschließlich Deprecations) auf eine große Anzahl von weit verbreiteten Modulen des Ökosystems zu testen. Aus diese Art und Weise sollen zusätzliche Erkenntnisse gewonnen werden, bevor diese einschneidenden Änderungen eingeführt werden.

Zu den erwähnenswerten Deprecations in Node.js 16 gehört die des Zugriffs auf process.binding() zur Laufzeit für eine Reihe von Kernmodulen, wie etwa process.binding('http_parser').

Die neue Version kann entweder hier heruntergeladen oder über den Node Version Manager auf UNIX bezogen werden, um sie dann mittels nvm install 16 zu installieren.

Geschrieben von
Kommentare

Hinterlasse einen Kommentar

avatar
4000
  Subscribe  
Benachrichtige mich zu: