27.042016

Release von NodeJS 6.0.0

Gestern wurde NodeJS in der Version 6.0.0 veröffentlicht. Neben einiger Sicherheitsupdates und kleinen, aber wichtigen Änderungen an der API fällt natürlich der aktualisierte v8 Kern auf. Mit dem Sprung auf Version 5.0 erhalten wir einige Geschwindigkeitsoptimierungen sowie stark verbesserte Unterstützung von ES6 Funktionalität. Entsprechend schauen wir uns in einem kurzen Überblick die Änderungen und Neuerungen ausschnittsweise an: Das volle Changelog findet ihr hier

Windows Support nur noch ab Version 7

Zu aller erst: NodeJS 6 unterstützt offiziell Windows nur noch ab Windows 7 - hoffentlich nutzt niemand mehr Windows Vista oder XP.

Buffer-API

Der direkte Konstruktoraufruf via new Buffer(num) gilt nun als veraltet. Um explizit vorinitialisierte Buffer von "unsicheren" zu unterscheiden wurden neue Funktionen eingeführt:

  • Buffer.allocUnsafe(size) als direkten Ersatz von Buffer(number)
  • Buffer.alloc(size[, fill[, encoding]]) um einen sicheren (leeren) Buffer zu erzeugen
  • Buffer.from(data[, encoding) als Ersatz von Buffer(data, encoding)

Eine detaillierte Beschreibung, warum der bisherige Aufruf von Buffer() unsicher ist findet ihr unter anderem hier: https://github.com/nodejs/node/issues/4660 https://github.com/nodejs/node/pull/4682

v8 5.0

Laut http://v8project.blogspot.de/2016/03/v8-release-50.html sind Rest-Parameter "..." 8-10x schneller als in der vorherigen Version. Somit sind Funktionsaufrufe mit großer Anzahl an Argumenten bei Benutzung von Rest-Parametern wesentlich performanter. Ebenso wurde die Aufstellung von Objekteigenschaften via Object.keys() optimiert.

Unicode-Unterstützung in Regulären Ausdrücken

Mit dem neuen u-Flag ist nun endlich das folgende möglich:

/♥{2}/u.test('♥♥');
> true

Parameter-Dekonstruktion

Es ist nun möglich Arrays schnell zu zerlegen und mehreren Variablen zuzuweisen. Auch der Rest-Parameter wird hier unterstützt:

[a,b, ...c] = [1, 2, 3, 4]
> a = 1
> b = 2
> c = [3, 4]

Syntaktischer Zucker, aber in bestimmten Situationen lässt sich der Code so wesentlich Aussagekräftiger schreiben.

Mit der neuen V8 Version erreicht NodeJS6 zwischen 93% und 96% der in ES 2015 (ES6) festgehaltenen Features. Respekt! Ich setze mich jetzt jedenfalls ran und werde meinen Code nochmal explizit auf den veralteten Bufferaufruf überprüfen.