$ the-wire · showcase
dgram skips custom lookup for literal IPs, node:bench gated behind a flag
By RepoJournal · Filed · About Node.js · Composed from the cited sources · methodology
Node's dgram module now bypasses a user-supplied lookup function when the destination is a literal IP of the socket's family, a breaking change for any lookup that expected to be invoked for IP addresses.
dgram now uses a literal IP of the socket's family directly instead of calling a user-supplied lookup function, matching how net.connect() already skips the lookup for a literal IP host before consulting options.lookup. This is a breaking change: a lookup that expected to be invoked for IP addresses will no longer be called [1].
The experimental node:bench module is now properly gated behind the --experimental-bench flag, a step the author says was missed on the initial landing [2]. On the QUIC side, QuicStream gains a promise that fulfills when a stream becomes available and ready, removing the need to poll when a stream cannot be created immediately due to flow control [3].
In crypto, the new crypto.parsePKCS12() returns the private key, end-entity certificate, and other certificates from a PKCS#12 (.p12/.pfx) bundle as a KeyObject and X509Certificate instances. Reading those bundles from JavaScript previously meant shelling out to the openssl pkcs12 CLI or taking a userland dependency such as node-forge; Node already parsed this internally, and the PR exposes those internals [4]. The vfs layer now resolves symlinks when checking rename descendants, validating resolved source and destination parent paths before renaming a directory so it cannot be moved into its own subtree through a symlink [5].
Over in undici, a fix drops the ReadableStream.from helper function on the grounds that ReadableStream.from has been supported since node v20.6.0. The author's note pulls no punches: "Unfortunately ai doesn't understand nuance, so ai cannot be trusted to fix this bug" [6].
Action items
- → Audit any custom dgram lookup functions for literal-IP invocations before upgrading nodejs/node [plan]
- → Move any node:bench usage behind the --experimental-bench flag nodejs/node [plan]
- → Replace PKCS#12 shell-outs to openssl or node-forge with crypto.parsePKCS12() on the next release nodejs/node [monitor]
References
- [1] dgram: skip the custom lookup for literal IP addresses ↗ nodejs/node
- [2] lib: put node:bench behind an --experimental-bench flag ↗ nodejs/node
- [3] quic: add promise to QuicStream for pending strms ↗ nodejs/node
- [4] crypto: add crypto.parsePKCS12() ↗ nodejs/node
- [5] vfs: resolve symlinks when checking rename descendants ↗ nodejs/node
- [6] fix issue #5715 ↗ nodejs/undici