Repository navigation
Closed
Description
Summary
node:net has gained substantial Socket/Server and IP-classification coverage, but the data-structure classes net.BlockList and net.SocketAddress are still absent from the manifest/runtime surface.
These APIs are deterministic and do not require live network I/O, so they are good candidates for focused Node parity coverage separate from the socket lifecycle trackers.
Evidence
docs/runtime-parity-gaps.mdstill lists the completeBlockListsurface as missing:new net.BlockList(),addAddress,addRange,addSubnet,check,fromJSON,toJSON,rules, andBlockList.isBlockList(value).- The same gap table lists the
SocketAddresssurface as missing:new net.SocketAddress([options]),address,family,flowlabel,port, andSocketAddress.parse(input). test-files/test_parity_net.tshas generated probes for both classes, including constructing aBlockList, adding address/range/subnet rules, checking addresses, serializing rules, callingBlockList.isBlockList, constructingSocketAddress, reading its fields, and callingSocketAddress.parse.- Source search across
crates/perry-api-manifest,crates/perry-codegen,crates/perry-stdlib/src/net, andcrates/perry-runtimefinds noBlockList,SocketAddress,addAddress,addRange,addSubnet,isBlockList, orSocketAddress.parseimplementation entries outside the generated parity probe. - Existing net manifest/native-table rows cover Socket/Server operations, IP classification helpers, and Happy-Eyeballs defaults, but not these two classes.
I did not run a fresh local parity command because this checkout does not have a target/release/perry binary; this issue is based on committed parity metadata and source inspection.
Non-duplicates checked
net.isIP/net.isIPv4/net.isIPv6/net.getDefaultAutoSelectFamilyreturn undefined #811 coverednet.isIP/isIPv4/isIPv6/ auto-select-family defaults.- node:net createServer: dotted form fails codegen, named-import form returns undefined at runtime #1123, node:net Socket/Server: connection lifecycle hangs + server.address()/listen/on gaps (75 radar runtime-fails, 24% parity) #1852, node:net follow-up: 30 lifecycle/edge-event gaps (server.address, reset-while-connecting, callback ordering) #2131, and node:http: Socket EventEmitter introspection methods (.listeners, .eventNames, .removeListener) on http-internal sockets #2211 cover Socket/Server creation, lifecycle, EventEmitter, and introspection gaps.
- Searches for
net BlockList SocketAddressand PRs with the same terms did not find an open or closed tracker for these classes.
Expected behavior
Implement Node-compatible deterministic behavior for:
new net.BlockList()with rule storage,addAddress,addRange,addSubnet,check,toJSON,fromJSON,rules, and staticBlockList.isBlockList.new net.SocketAddress(options)with validatedaddress,family,flowlabel, andportfields.SocketAddress.parse(input)for supported IPv4/IPv6 address string forms.
Focused parity tests can avoid live sockets and should be stable in CI.
Metadata
Metadata
Assignees
Labels
No labels
Activity
andrewtdiz commentedon May 31, 2026
Fresh local runtime evidence on current baseline confirms this remains active:
perl -e 'alarm shift; exec @ARGV' 120 ./run_parity_tests.sh --filter test_parity_netReport:
Node exposes both deterministic classes:
Perry still reports missing/nonfunctional class surface before the run later reaches the separate #3850 crash:
andrewtdiz commentedon Jun 2, 2026
I'm taking this as part of a focused
node:netcompatibility PR cut with #2546 and #2548.Intended PR cut:
net.BlockListandnet.SocketAddressconstructor/static/instance behavior with focused parity coveragenet.Serverobservable connection state and limit surface from node:net: implement Server connection count and max-connection limit surface #2546net.SocketType of Service getter/setter state and validation from node:net: implement Socket Type of Service APIs #2548I'll keep this scoped to the existing
node:netmanifest/codegen/runtime/test paths and avoid unrelated stream, HTTP, TLS, or broad transport rewrites.andrewtdiz commentedon Jun 2, 2026
Implemented in draft PR #4057: #4057
andrewtdiz commentedon Jun 2, 2026
Opened draft PR #4069 for this grouped
node:network: #4069The PR implements
BlockList/SocketAddresshandles, constructors, validation, JSON/rules helpers, and a targeted Node 25 parity fixture.