|
4 | 4 |
|
5 | 5 | ### kernel |
6 | 6 |
|
7 | | -A centralized manager of [vats](#vat) and [distributed objects](#distributed-object). See the [Kernel](../packages/ocap-kernel/src/Kernel.ts) class. |
| 7 | +A centralized manager of [vats](#vat) and [distributed objects](#distributed-object). See |
| 8 | +the [Kernel](../packages/ocap-kernel/src/Kernel.ts) class. |
8 | 9 |
|
9 | 10 | ### vat |
10 | 11 |
|
11 | | -A unit of compute managed by the [kernel](#kernel). See the [VatHandle](../packages/ocap-kernel/src/VatHandle.ts) and [VatSupervisor](../packages/ocap-kernel/src/VatSupervisor.ts) classes. |
| 12 | +A unit of compute managed by the [kernel](#kernel). See the |
| 13 | +[VatHandle](../packages/ocap-kernel/src/VatHandle.ts) and |
| 14 | +[VatSupervisor](../packages/ocap-kernel/src/VatSupervisor.ts) classes. |
12 | 15 |
|
13 | 16 | ### baggage |
14 | 17 |
|
15 | | -Persistent key-value storage for a [vat's](#vat) durable state. Baggage survives vat restarts (resuscitation) and is the primary mechanism for vat state persistence. Baggage is provided as the third argument to `buildRootObject`. |
| 18 | +Persistent key-value storage for a [vat's](#vat) durable state. Baggage survives vat |
| 19 | +restarts (resuscitation) and is the primary mechanism for vat state persistence. Baggage |
| 20 | +is provided as the third argument to `buildRootObject`. |
16 | 21 |
|
17 | 22 | ### bootstrap |
18 | 23 |
|
19 | | -The initialization method called on the bootstrap [vat's](#vat) root object when a [subcluster](#subcluster) is first launched. The bootstrap method receives references to other vats and [kernel services](#kernel-service) and is called exactly once — it is not called again after a vat restart. |
| 24 | +The initialization method called on the bootstrap [vat's](#vat) root object when a |
| 25 | +[subcluster](#subcluster) is first launched. The bootstrap method receives references to |
| 26 | +other vats and [kernel services](#kernel-service) and is called exactly once — it is not |
| 27 | +called again after a vat restart. |
20 | 28 |
|
21 | 29 | ### cluster |
22 | 30 |
|
23 | 31 | See [subcluster](#subcluster). |
24 | 32 |
|
25 | 33 | ### exo |
26 | 34 |
|
27 | | -A remotable object created with `makeDefaultExo()` from `@metamask/kernel-utils/exo`. Exos are the standard way to create objects that can be passed between [vats](#vat), stored in [baggage](#baggage), and invoked via `E()`. Do not use `Far()` from `@endo/far`. |
| 35 | +A remotable object created with `makeDefaultExo()` from `@metamask/kernel-utils/exo`. Exos |
| 36 | +are the standard way to create objects that can be passed between [vats](#vat), stored in |
| 37 | +[baggage](#baggage), and invoked via `E()`. Do not use `Far()` from `@endo/far`. |
28 | 38 |
|
29 | 39 | ### distributed object |
30 | 40 |
|
31 | | -A persistent object residing in a [vat](#vat) and asynchronously accessible to other vats. See the [implementation](../packages/ocap-kernel/src/store/methods/object.ts) in the kernel's storage methods. |
| 41 | +A persistent object residing in a [vat](#vat) and asynchronously accessible to other vats. |
| 42 | +See the [implementation](../packages/ocap-kernel/src/store/methods/object.ts) in the |
| 43 | +kernel's storage methods. |
32 | 44 |
|
33 | 45 | ### kernel service |
34 | 46 |
|
35 | | -An object registered with the [kernel](#kernel) that [vats](#vat) can invoke via `E()`. Kernel services run in the kernel's own context (not in a vat) and are registered using `kernel.registerKernelServiceObject()`. Services marked `systemOnly` can only be accessed by [system subclusters](#system-subcluster). See the [KernelServiceManager](../packages/ocap-kernel/src/KernelServiceManager.ts). |
| 47 | +An object registered with the [kernel](#kernel) that [vats](#vat) can invoke via `E()`. |
| 48 | +Kernel services run in the kernel's own context (not in a vat) and are registered using |
| 49 | +`kernel.registerKernelServiceObject()`. Services marked `systemOnly` can only be accessed |
| 50 | +by [system subclusters](#system-subcluster). See the |
| 51 | +[KernelServiceManager](../packages/ocap-kernel/src/KernelServiceManager.ts). |
36 | 52 |
|
37 | 53 | ### supervisor |
38 | 54 |
|
39 | | -A component that manages the lifecycle and communication of a [vat](#vat). The [VatSupervisor](../packages/ocap-kernel/src/VatSupervisor.ts) handles [message delivery](#delivery), [syscalls](#syscall), and vat initialization. |
| 55 | +A component that manages the lifecycle and communication of a [vat](#vat). The |
| 56 | +[VatSupervisor](../packages/ocap-kernel/src/VatSupervisor.ts) handles [message |
| 57 | +delivery](#delivery), [syscalls](#syscall), and vat initialization. |
40 | 58 |
|
41 | 59 | ### liveslots |
42 | 60 |
|
43 | | -A framework for managing object lifecycles within [vats](#vat). Liveslots provides the runtime environment for vat code and handles object persistence, promise management, and [syscall](#syscall) coordination. |
| 61 | +A framework for managing object lifecycles within [vats](#vat). Liveslots provides the |
| 62 | +runtime environment for vat code and handles object persistence, promise management, and |
| 63 | +[syscall](#syscall) coordination. |
44 | 64 |
|
45 | 65 | ### crank |
46 | 66 |
|
47 | | -A single execution cycle in the kernel's [run queue](#run-queue). Each crank processes one item from the run queue, delivering messages or notifications to [vats](#vat). Cranks can be aborted and rolled back if errors occur. See the [KernelQueue](../packages/ocap-kernel/src/KernelQueue.ts) for the run loop implementation. |
| 67 | +A single execution cycle in the kernel's [run queue](#run-queue). Each crank processes one |
| 68 | +item from the run queue, delivering messages or notifications to [vats](#vat). Cranks can |
| 69 | +be aborted and rolled back if errors occur. See the |
| 70 | +[KernelQueue](../packages/ocap-kernel/src/KernelQueue.ts) for the run loop implementation. |
48 | 71 |
|
49 | 72 | ### syscall |
50 | 73 |
|
51 | | -A system call made by a [vat](#vat) to request kernel services. Syscalls include operations like sending messages, resolving [promises](#promise-resolution), and accessing persistent storage. See [VatSyscall](../packages/ocap-kernel/src/VatSyscall.ts) and the [syscall service](../packages/ocap-kernel/src/services/syscall.ts). |
| 74 | +A system call made by a [vat](#vat) to request kernel services. Syscalls include |
| 75 | +operations like sending messages, resolving [promises](#promise-resolution), and accessing |
| 76 | +persistent storage. See [VatSyscall](../packages/ocap-kernel/src/VatSyscall.ts) and the |
| 77 | +[syscall service](../packages/ocap-kernel/src/services/syscall.ts). |
52 | 78 |
|
53 | 79 | ### delivery |
54 | 80 |
|
55 | | -The process of sending a message or notification to a [vat](#vat). Deliveries can be of type 'message', 'notify', 'dropExports', 'retireExports', 'retireImports', or 'bringOutYourDead'. See the [router](#router) ([KernelRouter](../packages/ocap-kernel/src/KernelRouter.ts)) for delivery logic. |
| 81 | +The process of sending a message or notification to a [vat](#vat). Deliveries can be of |
| 82 | +type 'message', 'notify', 'dropExports', 'retireExports', 'retireImports', or |
| 83 | +'bringOutYourDead'. See the [router](#router) |
| 84 | +([KernelRouter](../packages/ocap-kernel/src/KernelRouter.ts)) for delivery logic. |
56 | 85 |
|
57 | 86 | ### marshaling |
58 | 87 |
|
59 | | -The process of serializing and deserializing data for transmission between [vats](#vat). The kernel uses marshaling to convert object references and data structures into a format suitable for cross-vat communication. See the [kernel marshal service](../packages/ocap-kernel/src/services/kernel-marshal.ts) for `kser` and `kunser` functions. |
| 88 | +The process of serializing and deserializing data for transmission between [vats](#vat). |
| 89 | +The kernel uses marshaling to convert object references and data structures into a format |
| 90 | +suitable for cross-vat communication. See the [kernel marshal |
| 91 | +service](../packages/ocap-kernel/src/services/kernel-marshal.ts) for `kser` and `kunser` |
| 92 | +functions. |
60 | 93 |
|
61 | 94 | ### promise resolution |
62 | 95 |
|
63 | | -The process of fulfilling or rejecting a promise. Promise resolutions are delivered as notifications to [vats](#vat) and can trigger cascading resolutions of dependent promises. See the [promise store methods](../packages/ocap-kernel/src/store/methods/promise.ts) for implementation details. |
| 96 | +The process of fulfilling or rejecting a promise. Promise resolutions are delivered as |
| 97 | +notifications to [vats](#vat) and can trigger cascading resolutions of dependent promises. |
| 98 | +See the [promise store methods](../packages/ocap-kernel/src/store/methods/promise.ts) for |
| 99 | +implementation details. |
64 | 100 |
|
65 | 101 | ### garbage collection (GC) |
66 | 102 |
|
67 | | -The process of identifying and cleaning up unreachable objects. The kernel performs GC by tracking reference counts and delivering appropriate notifications to [vats](#vat). **Important**: the garbage collection systems of the kernel, liveslots, and javascript are all mutually independent. See the [GC methods](../packages/ocap-kernel/src/store/methods/gc.ts) and [GC service](../packages/ocap-kernel/src/services/garbage-collection.ts) for implementation details. |
| 103 | +The process of identifying and cleaning up unreachable objects. The kernel performs GC by |
| 104 | +tracking reference counts and delivering appropriate notifications to [vats](#vat). |
| 105 | +**Important**: the garbage collection systems of the kernel, liveslots, and javascript are |
| 106 | +all mutually independent. See the [GC |
| 107 | +methods](../packages/ocap-kernel/src/store/methods/gc.ts) and [GC |
| 108 | +service](../packages/ocap-kernel/src/services/garbage-collection.ts) for implementation |
| 109 | +details. |
68 | 110 |
|
69 | 111 | ### revocation |
70 | 112 |
|
71 | | -The process of invalidating an object reference, preventing further access to the object. Revoked objects return errors when accessed. See the [revocation methods](../packages/ocap-kernel/src/store/methods/revocation.ts) for implementation. |
| 113 | +The process of invalidating an object reference, preventing further access to the object. |
| 114 | +Revoked objects return errors when accessed. See the [revocation |
| 115 | +methods](../packages/ocap-kernel/src/store/methods/revocation.ts) for implementation. |
72 | 116 |
|
73 | 117 | ### channel |
74 | 118 |
|
75 | | -A communication pathway between different components, such as between a [vat](#vat) and the [kernel](#kernel), or between different [clusters](#cluster). Channels use [streams](#stream) for message passing. See the [BaseDuplexStream](../packages/streams/src/BaseDuplexStream.ts) for the core channel implementation. |
| 119 | +A communication pathway between different components, such as between a [vat](#vat) and |
| 120 | +the [kernel](#kernel), or between different [clusters](#cluster). Channels use |
| 121 | +[streams](#stream) for message passing. See the |
| 122 | +[BaseDuplexStream](../packages/streams/src/BaseDuplexStream.ts) for the core channel |
| 123 | +implementation. |
76 | 124 |
|
77 | 125 | ### stream |
78 | 126 |
|
79 | | -A remote asynchronous iterator that provides bidirectional communication between components. Streams implement the `Reader` interface from `@endo/stream` and can be used for message passing between [vats](#vat), kernel components, and external systems. See the [BaseDuplexStream](../packages/streams/src/BaseDuplexStream.ts) for bidirectional streams. |
| 127 | +A remote asynchronous iterator that provides bidirectional communication between |
| 128 | +components. Streams implement the `Reader` interface from `@endo/stream` and can be used |
| 129 | +for message passing between [vats](#vat), kernel components, and external systems. See the |
| 130 | +[BaseDuplexStream](../packages/streams/src/BaseDuplexStream.ts) for bidirectional |
| 131 | +streams. |
80 | 132 |
|
81 | 133 | ### subcluster |
82 | 134 |
|
83 | | -A logically related group of [vats](#vat), intended to be operated together. Defined by a `ClusterConfig`. When a subcluster is launched, all its vats start and the [bootstrap](#bootstrap) vat receives references to the other vats. See the `ClusterConfig` type in [`packages/ocap-kernel/src/types.ts`](../packages/ocap-kernel/src/types.ts). |
| 135 | +A logically related group of [vats](#vat), intended to be operated together. Defined by a |
| 136 | +`ClusterConfig`. When a subcluster is launched, all its vats start and the |
| 137 | +[bootstrap](#bootstrap) vat receives references to the other vats. See the `ClusterConfig` |
| 138 | +type in [`packages/ocap-kernel/src/types.ts`](../packages/ocap-kernel/src/types.ts). |
84 | 139 |
|
85 | 140 | ### system subcluster |
86 | 141 |
|
87 | | -A [subcluster](#subcluster) declared at [kernel](#kernel) initialization that can access privileged (`systemOnly`) [kernel services](#kernel-service). System subclusters persist across kernel restarts and are identified by a unique name. See the [SubclusterManager](../packages/ocap-kernel/src/SubclusterManager.ts). |
| 142 | +A [subcluster](#subcluster) declared at [kernel](#kernel) initialization that can access |
| 143 | +privileged (`systemOnly`) [kernel services](#kernel-service). System subclusters persist |
| 144 | +across kernel restarts and are identified by a unique name. See the |
| 145 | +[SubclusterManager](../packages/ocap-kernel/src/SubclusterManager.ts). |
88 | 146 |
|
89 | 147 | ### run queue |
90 | 148 |
|
91 | | -The kernel's main execution queue that processes messages, notifications, and [garbage collection](#garbage-collection-gc) actions. Each [crank](#crank) processes one item from this queue. See the [KernelQueue](../packages/ocap-kernel/src/KernelQueue.ts) class and [queue methods](../packages/ocap-kernel/src/store/methods/queue.ts) for implementation details. |
| 149 | +The kernel's main execution queue that processes messages, notifications, and [garbage |
| 150 | +collection](#garbage-collection-gc) actions. Each [crank](#crank) processes one item from |
| 151 | +this queue. See the [KernelQueue](../packages/ocap-kernel/src/KernelQueue.ts) class and |
| 152 | +[queue methods](../packages/ocap-kernel/src/store/methods/queue.ts) for implementation |
| 153 | +details. |
92 | 154 |
|
93 | 155 | ### router |
94 | 156 |
|
95 | | -The component responsible for routing messages to the correct [vat](#vat) based on target references and promise states. The router handles [delivery](#delivery) logic. See the [KernelRouter](../packages/ocap-kernel/src/KernelRouter.ts) for routing logic. |
| 157 | +The component responsible for routing messages to the correct [vat](#vat) based on target |
| 158 | +references and promise states. The router handles [delivery](#delivery) logic. See the |
| 159 | +[KernelRouter](../packages/ocap-kernel/src/KernelRouter.ts) for routing logic. |
96 | 160 |
|
97 | 161 | ## Abbreviations |
98 | 162 |
|
99 | 163 | ### clist |
100 | 164 |
|
101 | | -A _clist_ (short for "capability list") is a bidirectional mapping between short, channel-specific identifiers and actual object references. The clist is unique to a channel-runtime pair, and translates between the javascript runtime which holds the object references and the channel which communicates about them. |
| 165 | +A _clist_ (short for "capability list") is a bidirectional mapping between short, |
| 166 | +channel-specific identifiers and actual object references. The clist is unique to a |
| 167 | +channel-runtime pair, and translates between the javascript runtime which holds the object |
| 168 | +references and the channel which communicates about them. |
102 | 169 |
|
103 | 170 | ### eref |
104 | 171 |
|
105 | | -An _ERef_ (short for "endpoint reference") is a generic term for a ref which is either a [vref](#vref) or an [rref](#rref). |
| 172 | +An _ERef_ (short for "endpoint reference") is a generic term for a ref which is either a |
| 173 | +[vref](#vref) or an [rref](#rref). |
106 | 174 |
|
107 | 175 | ### kref |
108 | 176 |
|
109 | | -A _KRef_ (short for "kernel reference") designates an Object within the scope of the Kernel itself. It is used in the translation of References between one Vat and another. A KRef is generated and assigned by the Kernel whenever an Object reference is imported into or exported from a Vat for the first time. |
| 177 | +A _KRef_ (short for "kernel reference") designates an Object within the scope of the |
| 178 | +Kernel itself. It is used in the translation of References between one Vat and another. A |
| 179 | +KRef is generated and assigned by the Kernel whenever an Object reference is imported into |
| 180 | +or exported from a Vat for the first time. |
110 | 181 |
|
111 | 182 | ### rref |
112 | 183 |
|
113 | | -An _RRef_ (short for "remote reference") designates an object within the scope of an established point-to-point communications [Channel](#channel) between two Clusters. An RRef does not survive the Channel it is associated with. An RRef is generated when the Kernel for one Cluster exports an Object Reference into the Channel connecting it to another Cluster's Kernel. |
| 184 | +An _RRef_ (short for "remote reference") designates an object within the scope of an |
| 185 | +established point-to-point communications [Channel](#channel) between two Clusters. An |
| 186 | +RRef does not survive the Channel it is associated with. An RRef is generated when the |
| 187 | +Kernel for one Cluster exports an Object Reference into the Channel connecting it to |
| 188 | +another Cluster's Kernel. |
114 | 189 |
|
115 | 190 | ### vref |
116 | 191 |
|
117 | | -A _VRef_ (short for "vat reference") designates an Object within the scope of the Objects known to a particular Vat. It is used across the Kernel/Vat boundary in the marshaling of messages delivered into or sent by that Vat. A VRef is generated and assigned by the Kernel when importing an Object Reference into a Vat for the first time and by the Vat when exporting an Object Reference from it for the first time. |
| 192 | +A _VRef_ (short for "vat reference") designates an Object within the scope of the Objects |
| 193 | +known to a particular Vat. It is used across the Kernel/Vat boundary in the marshaling of |
| 194 | +messages delivered into or sent by that Vat. A VRef is generated and assigned by the |
| 195 | +Kernel when importing an Object Reference into a Vat for the first time and by the Vat |
| 196 | +when exporting an Object Reference from it for the first time. |
0 commit comments