Changelog

nodejs/node · · 21 commits

Node adds throttle, debounce, and VFS fixes

Big feature drop: util.throttle/debounce land, QUIC and FFI gain new behavior, and mounted VFS handling is expanded.

util.throttle lands with queueing, strict mode, and cancellation (jasnellc081d10)

Node now ships util.throttle(), a Promise-based rate limiter with queue/drop overflow modes, concurrency caps, abort support, and optional strict rolling-window enforcement. The new API also introduces ERR_THROTTLED and documents how to inspect or cancel pending work.

util.debounce becomes a built-in utility (jasnell27cdfbe)

util.debounce() is added with leading/trailing behavior, cancel/flush controls, abort support, and Promise-based return values. This gives core a first-party debounce primitive instead of pushing developers to external packages.

QUIC now exposes truncated-read policy controls (pimterry11ed325)

A new sessionOptions.truncatedReads option lets QUIC streams either error on truncated reads or ignore them when the stream ends without a FIN. The implementation also fixes stream truncation handling across stop-sending, abort, and timeout cases, which tightens async iterator behavior and avoids data-loss edge cases.

Mounted VFS paths now work for FFI libraries (mcollinaa4bb025)

ffi.dlopen() and new DynamicLibrary() can now load shared libraries from mounted virtual file systems by reading the bytes through the VFS and loading them from a private temporary image. This closes a major gap between addons and FFI, making virtual paths behave like real filesystem paths for native library loading.

VFS fs hooks are filled in for mounted paths (pipobscureea51c14)

Several node:fs entry points now route mounted paths through the same hooks and semantics as real paths, including watch APIs and timestamp/mode operations. This fixes long-standing inconsistencies where mounted paths could throw unexpected errors or behave differently from ordinary filesystem paths.

HTTP/2 destroys settle in-flight write callbacks (mcollinae13c138)

When an HTTP/2 stream is destroyed mid-write, Node now invokes the pending write callback and clears write state before teardown finishes. That prevents Writable cleanup from hanging and fixes close-while-writing cases that were timing out in tests.

FFI fast-call metadata Symbols are created lazily (mcollinacfdb7e6)

The FFI fast-call metadata symbols move out of snapshot-time initialization and are now created lazily at runtime. This avoids perturbing isolate identity-hash state during snapshot generation, preventing subtle map-cache collisions in V8.

Other misc changes

  • Build/docs redesign updates and doc tool reshaping (avivkeller18a9ba5)
  • HTTP parser reuse test split for close scenarios (panva5c5bd22)
  • cpSync timestamp preservation coverage (abhi128nandanefc612d)
  • googletest dependency update (nodejs-github-botdbfa70a)
  • QUIC doc clarification for async write backpressure (johnfinnerty-nzfa10566)
  • Workflow hardening and CI YAML cleanup across several commits (panva7203d9b, panva96e769e, panvafe40b31, panva67868c7, panva3c050e3)
  • Nixpkgs bump and IBM i test skip tweak (nodejs-github-botfe10572, sravani15101f6fe2f)
  • stderr Buffer assertion fix in exec encoding test (greenheadHQ26dbe11)