Dev News Daily ENDE

Node.js 27 alpha: V8 15.6, OpenSSL 3 required, a new default heap limit

Node.js published 27.0.0-alpha.0.0.0 on 29 October, the first build of the next major line. It is an alpha, not a release for production, but its notes list the breaking changes that will define the upgrade.

The V8 engine moves to 15.6, from 14.6 in Node.js 26. New language features on by default include Math.sumPrecise(), Iterator.prototype.join(), Iterator.prototype.includes(), Iterator.zip() and Iterator.zipKeyed(). import defer and immutable ArrayBuffer are available behind flags.

The change most likely to surprise running services is memory. When --max-old-space-size is not set, the default heap limit becomes half of physical memory, clamped between 256 MB and 4 GB, and memory held by Buffer and ArrayBuffer instances now counts toward that limit. The release notes tell applications that relied on the old behaviour to set the flag explicitly.

Serialisation changes too: v8.serialize(), structuredClone() and postMessage() write a new format that older Node.js versions cannot read, and the compile cache tag changes on every V8 patch. Math functions now come from LLVM's libm and may differ in the last bit, Math.random() sequences change for a given seed, Array.prototype.sort() switches to PowerSort for large arrays while staying stable, and asm.js is no longer compiled to WebAssembly.

On the build side Node.js now requires OpenSSL 3 or later, removes the bundled FIPS provider build and OpenSSL engine support, upgrades to OpenSSL 4.1.0 and npm 12.1.0, and downgrades Intel macOS to experimental. Several crypto deprecations move to end of life, and input and output encodings are now validated.

Node.js 27 alpha: V8 15.6, OpenSSL 3 required, a new default heap limit
Node.js 27 alpha: V8 15.6, OpenSSL 3 required, a new default heap limit — Dev News Daily

What it means

Two items deserve a test before the stable release: anything that stores v8.serialize() output or passes it between processes on different Node.js versions, and services sized around the old heap default, which can now hit the ceiling sooner because Buffers count. Setting --max-old-space-size explicitly removes the second risk.