Dev News Daily ENDE

Node.js 27 Alpha: V8 15.6, OpenSSL 3 Pflicht, neues Heap-Limit ab Werk

Node.js hat am 29. Oktober 27.0.0-alpha.0.0.0 veröffentlicht, den ersten Build der nächsten Hauptversion. Es ist eine Alpha und nicht für den Produktivbetrieb gedacht, doch die Versionshinweise nennen bereits die Brüche, die das Upgrade bestimmen werden.

Die V8-Engine springt von 14.6 in Node.js 26 auf 15.6. Standardmäßig aktiv sind neue Sprachfunktionen wie Math.sumPrecise(), Iterator.prototype.join(), Iterator.prototype.includes(), Iterator.zip() und Iterator.zipKeyed(). import defer und unveränderliche ArrayBuffer gibt es hinter Flags.

Am ehesten überraschen dürfte laufende Dienste der Speicher. Ist --max-old-space-size nicht gesetzt, liegt die Standardgrenze des Heaps nun bei der Hälfte des physischen Speichers, begrenzt auf 256 MB bis 4 GB, und Speicher von Buffer- und ArrayBuffer-Instanzen zählt jetzt mit. Anwendungen, die sich auf das alte Verhalten verlassen haben, sollen das Flag laut Versionshinweisen ausdrücklich setzen.

Auch die Serialisierung ändert sich: v8.serialize(), structuredClone() und postMessage() schreiben ein neues Format, das ältere Node.js-Versionen nicht lesen können, und das Kennzeichen des Compile-Caches wechselt bei jedem V8-Patch. Math-Funktionen stammen nun aus LLVMs libm und können im letzten Bit abweichen, Math.random() liefert für einen gegebenen Seed andere Folgen, Array.prototype.sort() nutzt für große Arrays PowerSort und bleibt stabil, und asm.js wird nicht mehr nach WebAssembly übersetzt.

Beim Bauen verlangt Node.js jetzt OpenSSL 3 oder neuer, entfernt den mitgelieferten FIPS-Provider und die Unterstützung für OpenSSL-Engines, wechselt auf OpenSSL 4.1.0 und npm 12.1.0 und stuft Intel-Macs auf experimentell herab. Mehrere Krypto-Deprecations erreichen ihr Lebensende, Ein- und Ausgabekodierungen werden nun geprüft.

Node.js 27 Alpha: V8 15.6, OpenSSL 3 Pflicht, neues Heap-Limit ab Werk
Node.js 27 Alpha: V8 15.6, OpenSSL 3 Pflicht, neues Heap-Limit ab Werk — Dev News Daily

Was das bedeutet

Zwei Punkte sollten vor der stabilen Version getestet werden: alles, was Ausgaben von v8.serialize() speichert oder zwischen Prozessen mit verschiedenen Node.js-Versionen austauscht, und Dienste, die auf die alte Heap-Grenze dimensioniert sind und nun früher anstoßen können, weil Buffer mitzählen. Ein ausdrücklich gesetztes --max-old-space-size beseitigt das zweite Risiko.