Changelog

nodejs/node · · 29 commits

Node ships V8 15.6 and VFS goes default

Major V8 uplift, VFS unflagged, stream/iter gets a performance sweep, plus crypto fixes and API cleanup.

VFS is now enabled by default (mcollina49ad950)

node:vfs is unflagged, and the old --experimental-vfs switch is replaced by --no-experimental-vfs for disabling it. The CLI and docs were updated accordingly, and workers now use --vfs-load without needing the experimental flag.

Node updates its embedded V8 to 15.6.75.13 (joyeecheung826df07)

This pulls in a large V8 roll with build-system and platform updates across the embedded engine. It also pairs with ABI bookkeeping in Node so native addons can track the new engine version.

Native addon ABI version bumped for V8 15.6 (joyeecheungd9264eb)

NODE_MODULE_VERSION was updated to 153 to reflect the new V8 line. That’s the compatibility signal addon authors use to know they need a rebuild for this runtime.

Crypto.randomInt() no longer reuses stale cache bytes (gengjiawen38aa1f3)

Async cache refills now write into a separate buffer and copy back only after the refill completes, preventing synchronous randomInt() calls from consuming bytes that a pending async refill will later hand out again. The fix closes both a correctness bug and a potential race on the shared cache.

X509 curve lookup now handles non-NIST curves safely (lazergf0f8115)

GetCurveName() now treats the OpenSSL curve-name lookup as nullable instead of assuming an empty string on failure, avoiding a crash for certificates on curves like brainpoolP256r1. A regression test covers the non-NIST case.

stream/iter gets a broad performance and correctness pass (jasnell153ec89, jasnell818f348, jasnell17e7b68, jasnella7c156f, jasnell13d0167, jasnelle6c9c8e, jasnell724190c, jasnell778306c, jasnell5bcade9, jasnell82563d8)

A cluster of changes reduces per-chunk allocations and keeps long-lived stream/iter objects in fast-property mode, which should improve throughput in iterator-heavy pipelines. It also fixes a fromWritable() drain race and makes pipeToSync() correctly accept writers without endSync().

http internals are deprecated in favor of public http APIs* (bjohansebas12ce819)

The legacy internal HTTP modules are now runtime-deprecated, and benchmarks were switched to public or exposed-internal entry points. The implementation also consolidates HTTP internals under lib/internal/http/*, moving a large amount of code behind the new deprecation boundary.

Other misc changes