Summary
Use this issue as the first public node:v8 compatibility cut focused on package-visible diagnostics and serialization. The intended PR exposes the namespace, diagnostic heap-stat shapes, top-level serialize/deserialize round trips, and the class-based Serializer/Deserializer API without trying to implement lifecycle hooks, heap snapshot output, or profiler reports.
Child Issues
Follow-up Cuts
Intended PR Boundary
Implement one coherent node:v8 first slice:
- add the public
node:v8 namespace and manifest/runtime dispatch for the child issues;
- expose serialization/deserialization round trips for representative Node-supported values;
- expose the class-based Serializer/Deserializer and default subclasses for the same wire-format path;
- expose heap-stat helper shapes with Perry-specific numeric data where V8 internals are unavailable;
- add a dedicated V8 parity fixture because this checkout currently has no runnable
node:v8 probe.
Node Behavior
Node's node:v8 module gives packages serialization helpers and diagnostic heap/version statistics. Many packages use this surface for feature detection, persistence/IPC, and diagnostics even when they do not use profiling, promise hook, or startup snapshot APIs.
Perry Behavior
Perry currently has no public node:v8 compatibility namespace. docs/runtime-parity-gaps.md lists the whole module as a gap, docs/runtime-parity.md enumerates missing/partial rows, source search found no public node:v8 manifest/runtime entries, and there is no V8 parity fixture in this checkout. The internal crates/perry-runtime/src/child_process/v8_serde.rs helper may be reusable for the serialization child issues.
Non-goals
Acceptance
Summary
Use this issue as the first public
node:v8compatibility cut focused on package-visible diagnostics and serialization. The intended PR exposes the namespace, diagnostic heap-stat shapes, top-level serialize/deserialize round trips, and the class-based Serializer/Deserializer API without trying to implement lifecycle hooks, heap snapshot output, or profiler reports.Child Issues
v8.serialize()/v8.deserialize()round tripsFollow-up Cuts
Intended PR Boundary
Implement one coherent
node:v8first slice:node:v8namespace and manifest/runtime dispatch for the child issues;node:v8probe.Node Behavior
Node's
node:v8module gives packages serialization helpers and diagnostic heap/version statistics. Many packages use this surface for feature detection, persistence/IPC, and diagnostics even when they do not use profiling, promise hook, or startup snapshot APIs.Perry Behavior
Perry currently has no public
node:v8compatibility namespace.docs/runtime-parity-gaps.mdlists the whole module as a gap,docs/runtime-parity.mdenumerates missing/partial rows, source search found no publicnode:v8manifest/runtime entries, and there is no V8 parity fixture in this checkout. The internalcrates/perry-runtime/src/child_process/v8_serde.rshelper may be reusable for the serialization child issues.Non-goals
v8.promiseHooksandv8.startupSnapshotAPIs; use node:v8: lifecycle callback namespaces parity cut #3295.GCProfiler, CPU profiling, and heap profiling surfaces; use node:v8: snapshot and profiler output parity cut #3296 or separate focused leaves.Acceptance