A Passable is acyclic data that can be marshalled. It must be hardened to
remain
stable (even if some components are proxies; see PureData restriction below),
and is classified by PassStyle:
Atomic primitive values have a PrimitiveStyle (PassStyle
'undefined' | 'null' | 'boolean' | 'number' | 'bigint'
| 'string' | 'symbol'). (Passable considers void to be undefined.)
Containers aggregate other Passables into
sequences as CopyArrays (PassStyle 'copyArray'), or
string-keyed dictionaries as CopyRecords (PassStyle 'copyRecord'), or
higher-level types as CopyTaggeds (PassStyle 'tagged').
PassableCaps (PassStyle 'remotable' | 'promise') expose local values to
remote interaction.
As a special case to support system observability, error objects are
Passable (PassStyle 'error').
A Passable is essentially a pass-by-copy superstructure with a
pass-by-reference
exit point at the site of each PassableCap (which marshalling represents
using 'slots').
A Passable is acyclic data that can be marshalled. It must be hardened to remain stable (even if some components are proxies; see PureData restriction below), and is classified by PassStyle:
void
to beundefined
.)A Passable is essentially a pass-by-copy superstructure with a pass-by-reference exit point at the site of each PassableCap (which marshalling represents using 'slots').