@bradensbay/globals-core 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +69 -0
- package/dist/src/allocator.d.ts +78 -0
- package/dist/src/allocator.d.ts.map +1 -0
- package/dist/src/allocator.js +211 -0
- package/dist/src/allocator.js.map +1 -0
- package/dist/src/arena.d.ts +81 -0
- package/dist/src/arena.d.ts.map +1 -0
- package/dist/src/arena.js +224 -0
- package/dist/src/arena.js.map +1 -0
- package/dist/src/checksum.d.ts +5 -0
- package/dist/src/checksum.d.ts.map +1 -0
- package/dist/src/checksum.js +35 -0
- package/dist/src/checksum.js.map +1 -0
- package/dist/src/draft.d.ts +48 -0
- package/dist/src/draft.d.ts.map +1 -0
- package/dist/src/draft.js +427 -0
- package/dist/src/draft.js.map +1 -0
- package/dist/src/errors.d.ts +56 -0
- package/dist/src/errors.d.ts.map +1 -0
- package/dist/src/errors.js +69 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/external.d.ts +52 -0
- package/dist/src/external.d.ts.map +1 -0
- package/dist/src/external.js +68 -0
- package/dist/src/external.js.map +1 -0
- package/dist/src/hamt.d.ts +87 -0
- package/dist/src/hamt.d.ts.map +1 -0
- package/dist/src/hamt.js +643 -0
- package/dist/src/hamt.js.map +1 -0
- package/dist/src/history.d.ts +45 -0
- package/dist/src/history.d.ts.map +1 -0
- package/dist/src/history.js +49 -0
- package/dist/src/history.js.map +1 -0
- package/dist/src/index.d.ts +55 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +38 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/inspect.d.ts +74 -0
- package/dist/src/inspect.d.ts.map +1 -0
- package/dist/src/inspect.js +127 -0
- package/dist/src/inspect.js.map +1 -0
- package/dist/src/layout.d.ts +130 -0
- package/dist/src/layout.d.ts.map +1 -0
- package/dist/src/layout.js +149 -0
- package/dist/src/layout.js.map +1 -0
- package/dist/src/liveness.d.ts +48 -0
- package/dist/src/liveness.d.ts.map +1 -0
- package/dist/src/liveness.js +92 -0
- package/dist/src/liveness.js.map +1 -0
- package/dist/src/owner.d.ts +130 -0
- package/dist/src/owner.d.ts.map +1 -0
- package/dist/src/owner.js +368 -0
- package/dist/src/owner.js.map +1 -0
- package/dist/src/reader.d.ts +122 -0
- package/dist/src/reader.d.ts.map +1 -0
- package/dist/src/reader.js +325 -0
- package/dist/src/reader.js.map +1 -0
- package/dist/src/readers.d.ts +60 -0
- package/dist/src/readers.d.ts.map +1 -0
- package/dist/src/readers.js +122 -0
- package/dist/src/readers.js.map +1 -0
- package/dist/src/retained.d.ts +39 -0
- package/dist/src/retained.d.ts.map +1 -0
- package/dist/src/retained.js +99 -0
- package/dist/src/retained.js.map +1 -0
- package/dist/src/schema.d.ts +82 -0
- package/dist/src/schema.d.ts.map +1 -0
- package/dist/src/schema.js +18 -0
- package/dist/src/schema.js.map +1 -0
- package/dist/src/store.d.ts +83 -0
- package/dist/src/store.d.ts.map +1 -0
- package/dist/src/store.js +127 -0
- package/dist/src/store.js.map +1 -0
- package/dist/src/strings.d.ts +37 -0
- package/dist/src/strings.d.ts.map +1 -0
- package/dist/src/strings.js +144 -0
- package/dist/src/strings.js.map +1 -0
- package/dist/src/tags.d.ts +47 -0
- package/dist/src/tags.d.ts.map +1 -0
- package/dist/src/tags.js +53 -0
- package/dist/src/tags.js.map +1 -0
- package/dist/src/values.d.ts +90 -0
- package/dist/src/values.d.ts.map +1 -0
- package/dist/src/values.js +458 -0
- package/dist/src/values.js.map +1 -0
- package/dist/src/vector.d.ts +64 -0
- package/dist/src/vector.d.ts.map +1 -0
- package/dist/src/vector.js +387 -0
- package/dist/src/vector.js.map +1 -0
- package/dist/src/verify.d.ts +38 -0
- package/dist/src/verify.d.ts.map +1 -0
- package/dist/src/verify.js +179 -0
- package/dist/src/verify.js.map +1 -0
- package/dist/src/view.d.ts +66 -0
- package/dist/src/view.d.ts.map +1 -0
- package/dist/src/view.js +278 -0
- package/dist/src/view.js.map +1 -0
- package/package.json +28 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hamt.js","sourceRoot":"","sources":["../../src/hamt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ArenaReader, Snapshot } from "./reader.js";
|
|
2
|
+
/**
|
|
3
|
+
* Time travel over the retained version ring.
|
|
4
|
+
*
|
|
5
|
+
* The ring already holds the last N roots, because reclamation needs it to. Exposing it
|
|
6
|
+
* costs nothing and answers the objection that decides adoption for a lot of people: an
|
|
7
|
+
* opaque store is rejected regardless of how fast it is.
|
|
8
|
+
*
|
|
9
|
+
* What this is not: an undo stack. Retention is bounded, so history extends back exactly as
|
|
10
|
+
* far as the ring and no further, and a version drops off the end without warning. An
|
|
11
|
+
* application that needs durable undo should record its own operations.
|
|
12
|
+
*/
|
|
13
|
+
export interface HistoryEntry {
|
|
14
|
+
readonly versionId: number;
|
|
15
|
+
readonly rootTag: number;
|
|
16
|
+
readonly rootPayload: number;
|
|
17
|
+
/** True while the version can still be read. */
|
|
18
|
+
readonly live: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare class VersionHistory {
|
|
21
|
+
#private;
|
|
22
|
+
constructor(reader: ArenaReader);
|
|
23
|
+
/** Every version still retained, oldest first. */
|
|
24
|
+
list(): HistoryEntry[];
|
|
25
|
+
/** How far back history currently extends. */
|
|
26
|
+
get depth(): number;
|
|
27
|
+
/**
|
|
28
|
+
* Read a retained version.
|
|
29
|
+
*
|
|
30
|
+
* The version is pinned for the duration of the call and released afterwards, so browsing
|
|
31
|
+
* history does not hold memory the writer needs. That means the value is materialised
|
|
32
|
+
* rather than returned as a lazy view: a view outliving its pin is exactly the bug the
|
|
33
|
+
* validity checks exist to catch.
|
|
34
|
+
*/
|
|
35
|
+
read(versionId: number): unknown;
|
|
36
|
+
/**
|
|
37
|
+
* Pin a retained version and hand back a snapshot.
|
|
38
|
+
*
|
|
39
|
+
* The caller owns the pin and must release it. Holding one blocks reclamation of that
|
|
40
|
+
* version and everything after it, which is exactly what a debugger wants and exactly what
|
|
41
|
+
* a render loop must not do.
|
|
42
|
+
*/
|
|
43
|
+
pin(versionId: number): Snapshot;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/history.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIzD;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,gDAAgD;IAChD,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,cAAc;;IAIzB,YAAY,MAAM,EAAE,WAAW,EAG9B;IAED,kDAAkD;IAClD,IAAI,IAAI,YAAY,EAAE,CAOrB;IAED,8CAA8C;IAC9C,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;;;;;;OAOG;IACH,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAM/B;IAED;;;;;;OAMG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAE/B;CACF"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { RetainedRing } from "./retained.js";
|
|
2
|
+
import { StaleSnapshotError } from "./errors.js";
|
|
3
|
+
export class VersionHistory {
|
|
4
|
+
#reader;
|
|
5
|
+
#ring;
|
|
6
|
+
constructor(reader) {
|
|
7
|
+
this.#reader = reader;
|
|
8
|
+
this.#ring = new RetainedRing(reader.arena);
|
|
9
|
+
}
|
|
10
|
+
/** Every version still retained, oldest first. */
|
|
11
|
+
list() {
|
|
12
|
+
return this.#ring.live().map((entry) => ({
|
|
13
|
+
versionId: entry.versionId,
|
|
14
|
+
rootTag: entry.rootTag,
|
|
15
|
+
rootPayload: entry.rootPayload,
|
|
16
|
+
live: true,
|
|
17
|
+
}));
|
|
18
|
+
}
|
|
19
|
+
/** How far back history currently extends. */
|
|
20
|
+
get depth() {
|
|
21
|
+
return this.#ring.live().length;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Read a retained version.
|
|
25
|
+
*
|
|
26
|
+
* The version is pinned for the duration of the call and released afterwards, so browsing
|
|
27
|
+
* history does not hold memory the writer needs. That means the value is materialised
|
|
28
|
+
* rather than returned as a lazy view: a view outliving its pin is exactly the bug the
|
|
29
|
+
* validity checks exist to catch.
|
|
30
|
+
*/
|
|
31
|
+
read(versionId) {
|
|
32
|
+
const entry = this.#ring.read(versionId);
|
|
33
|
+
if (entry === undefined || !this.#ring.isLive(versionId)) {
|
|
34
|
+
throw new StaleSnapshotError(versionId, this.#ring.reclaimFloor());
|
|
35
|
+
}
|
|
36
|
+
return this.#reader.readVersion(versionId);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Pin a retained version and hand back a snapshot.
|
|
40
|
+
*
|
|
41
|
+
* The caller owns the pin and must release it. Holding one blocks reclamation of that
|
|
42
|
+
* version and everything after it, which is exactly what a debugger wants and exactly what
|
|
43
|
+
* a render loop must not do.
|
|
44
|
+
*/
|
|
45
|
+
pin(versionId) {
|
|
46
|
+
return this.#reader.acquireVersion(versionId);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/history.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAwB,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAsBjD,MAAM,OAAO,cAAc;IAChB,OAAO,CAAc;IACrB,KAAK,CAAe;IAE7B,YAAY,MAAmB;QAC7B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,kDAAkD;IAClD,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,KAAsB,EAAE,EAAE,CAAC,CAAC;YACxD,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,IAAI,EAAE,IAAI;SACX,CAAC,CAAC,CAAC;IACN,CAAC;IAED,8CAA8C;IAC9C,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;IAClC,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,CAAC,SAAiB;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;OAMG;IACH,GAAG,CAAC,SAAiB;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;CACF"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @bradensbay/globals-core
|
|
3
|
+
*
|
|
4
|
+
* The runtime agnostic core: one shared memory arena, a tagged value encoding, persistent
|
|
5
|
+
* data structures, an allocator, and epoch based reclamation. Nothing here imports Electron,
|
|
6
|
+
* so the arena can be exercised in plain Node with worker threads, which is how it is tested.
|
|
7
|
+
*
|
|
8
|
+
* The contract this package implements:
|
|
9
|
+
*
|
|
10
|
+
* Reads are synchronous. A reader returns the current committed value on the line you call
|
|
11
|
+
* it, with no await and no round trip.
|
|
12
|
+
*
|
|
13
|
+
* Writes are asynchronous. Only the owner writes, and every other process observes the
|
|
14
|
+
* result shortly after.
|
|
15
|
+
*/
|
|
16
|
+
export { SharedArena } from "./arena.js";
|
|
17
|
+
export { Allocator, SIZE_CLASSES } from "./allocator.js";
|
|
18
|
+
export type { AllocatorStats } from "./allocator.js";
|
|
19
|
+
export { ArenaOwner } from "./owner.js";
|
|
20
|
+
export type { OwnerOptions, OwnerStats } from "./owner.js";
|
|
21
|
+
export { ArenaReader, Snapshot } from "./reader.js";
|
|
22
|
+
export type { ReaderOptions, SnapshotInfo } from "./reader.js";
|
|
23
|
+
export { defineSchema } from "./schema.js";
|
|
24
|
+
export type { Draft, Encodable, Immutable, OperationMap, PayloadOf, StateShape, TypedDispatcher, TypedReadableStore, TypedWritableStore, } from "./schema.js";
|
|
25
|
+
export { diffShallow, formatArena, reportArena, reportReader } from "./inspect.js";
|
|
26
|
+
export type { ArenaReport, ReaderReport } from "./inspect.js";
|
|
27
|
+
export { VersionHistory } from "./history.js";
|
|
28
|
+
export type { HistoryEntry } from "./history.js";
|
|
29
|
+
export { deepChecksum, headerChecksum, publishChecksum, verifyMode, verifyRoot } from "./verify.js";
|
|
30
|
+
export { LivenessMonitor } from "./liveness.js";
|
|
31
|
+
export type { LivenessOptions } from "./liveness.js";
|
|
32
|
+
export { OwnerStore, ReaderStore } from "./store.js";
|
|
33
|
+
export type { ReadableStore, WritableStore } from "./store.js";
|
|
34
|
+
export { ReaderTable } from "./readers.js";
|
|
35
|
+
export { RetainedRing } from "./retained.js";
|
|
36
|
+
export type { RetainedVersion } from "./retained.js";
|
|
37
|
+
export { StringTable, decodeString, stringEquals, stringHash } from "./strings.js";
|
|
38
|
+
export { Tag, tagName, isKnownTag } from "./tags.js";
|
|
39
|
+
export type { TagValue } from "./tags.js";
|
|
40
|
+
export { ExternalRef, ExternalTier } from "./external.js";
|
|
41
|
+
export type { ExternalTransport } from "./external.js";
|
|
42
|
+
export { TYPED_ARRAY_KINDS, collectBlocks, containerSize, decodeValue, encodeValue, } from "./values.js";
|
|
43
|
+
export type { EncodeContext, Slot, TypedArrayKind } from "./values.js";
|
|
44
|
+
export { createDraft, finalizeState } from "./draft.js";
|
|
45
|
+
export type { DraftContext, DraftNode } from "./draft.js";
|
|
46
|
+
export { isView, readPath, sameNode, viewSlot, viewValue } from "./view.js";
|
|
47
|
+
export type { ViewContext } from "./view.js";
|
|
48
|
+
export { EMPTY_NODE, hamtEntries, hamtGet, hamtGetString, hamtSize, keyEquals, keyHash, } from "./hamt.js";
|
|
49
|
+
export type { HamtContext, HamtEntry } from "./hamt.js";
|
|
50
|
+
export { EMPTY_VECTOR, vectorAssoc, vectorFromSlots, vectorGet, vectorLength, vectorPush, vectorSlots, } from "./vector.js";
|
|
51
|
+
export type { VectorContext, VectorHeader } from "./vector.js";
|
|
52
|
+
export { ArenaCorruptError, ArenaFullError, GlobalsError, NoReaderSlotError, StaleSnapshotError, UnencodableValueError, } from "./errors.js";
|
|
53
|
+
export { LAYOUT_VERSION, RetainedState, VerifyMode, computeGeometry } from "./layout.js";
|
|
54
|
+
export type { ArenaGeometry, VerifyModeValue } from "./layout.js";
|
|
55
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACpD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,YAAY,EACV,KAAK,EACL,SAAS,EACT,SAAS,EACT,YAAY,EACZ,SAAS,EACT,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACnF,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACpG,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACrD,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACrD,YAAY,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC1D,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC5E,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EACL,UAAU,EACV,WAAW,EACX,OAAO,EACP,aAAa,EACb,QAAQ,EACR,SAAS,EACT,OAAO,GACR,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EACL,YAAY,EACZ,WAAW,EACX,eAAe,EACf,SAAS,EACT,YAAY,EACZ,UAAU,EACV,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACzF,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @bradensbay/globals-core
|
|
3
|
+
*
|
|
4
|
+
* The runtime agnostic core: one shared memory arena, a tagged value encoding, persistent
|
|
5
|
+
* data structures, an allocator, and epoch based reclamation. Nothing here imports Electron,
|
|
6
|
+
* so the arena can be exercised in plain Node with worker threads, which is how it is tested.
|
|
7
|
+
*
|
|
8
|
+
* The contract this package implements:
|
|
9
|
+
*
|
|
10
|
+
* Reads are synchronous. A reader returns the current committed value on the line you call
|
|
11
|
+
* it, with no await and no round trip.
|
|
12
|
+
*
|
|
13
|
+
* Writes are asynchronous. Only the owner writes, and every other process observes the
|
|
14
|
+
* result shortly after.
|
|
15
|
+
*/
|
|
16
|
+
export { SharedArena } from "./arena.js";
|
|
17
|
+
export { Allocator, SIZE_CLASSES } from "./allocator.js";
|
|
18
|
+
export { ArenaOwner } from "./owner.js";
|
|
19
|
+
export { ArenaReader, Snapshot } from "./reader.js";
|
|
20
|
+
export { defineSchema } from "./schema.js";
|
|
21
|
+
export { diffShallow, formatArena, reportArena, reportReader } from "./inspect.js";
|
|
22
|
+
export { VersionHistory } from "./history.js";
|
|
23
|
+
export { deepChecksum, headerChecksum, publishChecksum, verifyMode, verifyRoot } from "./verify.js";
|
|
24
|
+
export { LivenessMonitor } from "./liveness.js";
|
|
25
|
+
export { OwnerStore, ReaderStore } from "./store.js";
|
|
26
|
+
export { ReaderTable } from "./readers.js";
|
|
27
|
+
export { RetainedRing } from "./retained.js";
|
|
28
|
+
export { StringTable, decodeString, stringEquals, stringHash } from "./strings.js";
|
|
29
|
+
export { Tag, tagName, isKnownTag } from "./tags.js";
|
|
30
|
+
export { ExternalRef, ExternalTier } from "./external.js";
|
|
31
|
+
export { TYPED_ARRAY_KINDS, collectBlocks, containerSize, decodeValue, encodeValue, } from "./values.js";
|
|
32
|
+
export { createDraft, finalizeState } from "./draft.js";
|
|
33
|
+
export { isView, readPath, sameNode, viewSlot, viewValue } from "./view.js";
|
|
34
|
+
export { EMPTY_NODE, hamtEntries, hamtGet, hamtGetString, hamtSize, keyEquals, keyHash, } from "./hamt.js";
|
|
35
|
+
export { EMPTY_VECTOR, vectorAssoc, vectorFromSlots, vectorGet, vectorLength, vectorPush, vectorSlots, } from "./vector.js";
|
|
36
|
+
export { ArenaCorruptError, ArenaFullError, GlobalsError, NoReaderSlotError, StaleSnapshotError, UnencodableValueError, } from "./errors.js";
|
|
37
|
+
export { LAYOUT_VERSION, RetainedState, VerifyMode, computeGeometry } from "./layout.js";
|
|
38
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAY3C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEnF,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACpG,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE1D,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAExD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE5E,OAAO,EACL,UAAU,EACV,WAAW,EACX,OAAO,EACP,aAAa,EACb,QAAQ,EACR,SAAS,EACT,OAAO,GACR,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,YAAY,EACZ,WAAW,EACX,eAAe,EACf,SAAS,EACT,YAAY,EACZ,UAAU,EACV,WAAW,GACZ,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { ArenaOwner } from "./owner.js";
|
|
2
|
+
import type { ArenaReader } from "./reader.js";
|
|
3
|
+
/**
|
|
4
|
+
* Inspection.
|
|
5
|
+
*
|
|
6
|
+
* The loudest objection to a store like this is "I cannot see my state in DevTools", and it
|
|
7
|
+
* decides adoption regardless of how fast the reads are. So this is a required deliverable
|
|
8
|
+
* rather than a stretch goal, and it covers three things: values print as values, the arena
|
|
9
|
+
* can be examined, and recent versions can be diffed.
|
|
10
|
+
*
|
|
11
|
+
* Values already print well, because every view implements `toJSON` and the object views are
|
|
12
|
+
* proxies over plain shapes. What was missing is everything below the values, which is what
|
|
13
|
+
* this module provides.
|
|
14
|
+
*/
|
|
15
|
+
export interface ArenaReport {
|
|
16
|
+
readonly layoutVersion: number;
|
|
17
|
+
readonly version: number;
|
|
18
|
+
readonly reclaimFloor: number;
|
|
19
|
+
readonly ownerGeneration: number;
|
|
20
|
+
readonly capacityBytes: number;
|
|
21
|
+
readonly usedBytes: number;
|
|
22
|
+
readonly liveBytes: number;
|
|
23
|
+
readonly freeListBytes: number;
|
|
24
|
+
readonly strandedBytes: number;
|
|
25
|
+
readonly utilisation: number;
|
|
26
|
+
readonly internedStrings: number;
|
|
27
|
+
readonly commits: number;
|
|
28
|
+
readonly forcedAdvances: number;
|
|
29
|
+
readonly retained: {
|
|
30
|
+
versionId: number;
|
|
31
|
+
rootTag: string;
|
|
32
|
+
}[];
|
|
33
|
+
readonly readers: {
|
|
34
|
+
slot: number;
|
|
35
|
+
generation: number;
|
|
36
|
+
epoch: number;
|
|
37
|
+
heartbeat: number;
|
|
38
|
+
lagVersions: number;
|
|
39
|
+
}[];
|
|
40
|
+
}
|
|
41
|
+
/** A machine readable picture of the arena, for a debug panel or a log line. */
|
|
42
|
+
export declare function reportArena(owner: ArenaOwner): ArenaReport;
|
|
43
|
+
/** The same picture as text, for a console or a bug report. */
|
|
44
|
+
export declare function formatArena(owner: ArenaOwner): string;
|
|
45
|
+
export interface ReaderReport {
|
|
46
|
+
readonly slot: number;
|
|
47
|
+
readonly generation: number;
|
|
48
|
+
readonly pinnedEpoch: number;
|
|
49
|
+
readonly publishedVersion: number;
|
|
50
|
+
readonly reclaimFloor: number;
|
|
51
|
+
readonly lagVersions: number;
|
|
52
|
+
readonly headroomVersions: number;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* What a window can see about its own position.
|
|
56
|
+
*
|
|
57
|
+
* `headroomVersions` is the number this actually answers: how many more commits can happen
|
|
58
|
+
* before this reader is force advanced and its snapshot fails closed. A window that keeps
|
|
59
|
+
* seeing a small number here is not keeping up.
|
|
60
|
+
*/
|
|
61
|
+
export declare function reportReader(reader: ArenaReader): ReaderReport;
|
|
62
|
+
/**
|
|
63
|
+
* A shallow diff between two values, for a version to version view in a debug panel.
|
|
64
|
+
*
|
|
65
|
+
* Deliberately shallow and deliberately simple. A deep structural diff would duplicate what
|
|
66
|
+
* the HAMT already knows, and comparing arena nodes by offset would be the right way to
|
|
67
|
+
* build one later.
|
|
68
|
+
*/
|
|
69
|
+
export declare function diffShallow(before: unknown, after: unknown): {
|
|
70
|
+
key: string;
|
|
71
|
+
before: unknown;
|
|
72
|
+
after: unknown;
|
|
73
|
+
}[];
|
|
74
|
+
//# sourceMappingURL=inspect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,YAAY,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAO/C;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5D,QAAQ,CAAC,OAAO,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB,EAAE,CAAC;CACL;AAED,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAgC1D;AAED,+DAA+D;AAC/D,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CA0CrD;AAQD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,YAAY,CAS9D;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,OAAO,GACb;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,EAAE,CAiBpD"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { SIZE_CLASSES } from "./allocator.js";
|
|
2
|
+
import { RetainedRing } from "./retained.js";
|
|
3
|
+
import { ReaderTable } from "./readers.js";
|
|
4
|
+
import { Header } from "./layout.js";
|
|
5
|
+
import { tagName } from "./tags.js";
|
|
6
|
+
/** A machine readable picture of the arena, for a debug panel or a log line. */
|
|
7
|
+
export function reportArena(owner) {
|
|
8
|
+
const stats = owner.stats();
|
|
9
|
+
const ring = new RetainedRing(owner.arena);
|
|
10
|
+
const table = new ReaderTable(owner.arena);
|
|
11
|
+
const used = stats.bumpPointer - owner.arena.geometry.arenaOffset;
|
|
12
|
+
return {
|
|
13
|
+
layoutVersion: owner.arena.loadHeader(Header.LayoutVersion),
|
|
14
|
+
version: stats.versionId,
|
|
15
|
+
reclaimFloor: stats.reclaimFloor,
|
|
16
|
+
ownerGeneration: owner.arena.ownerGeneration,
|
|
17
|
+
capacityBytes: stats.capacityBytes,
|
|
18
|
+
usedBytes: used,
|
|
19
|
+
liveBytes: stats.liveBytes,
|
|
20
|
+
freeListBytes: stats.freeListBytes,
|
|
21
|
+
strandedBytes: stats.strandedBytes,
|
|
22
|
+
utilisation: used === 0 ? 0 : stats.liveBytes / used,
|
|
23
|
+
internedStrings: stats.internedStrings,
|
|
24
|
+
commits: stats.commits,
|
|
25
|
+
forcedAdvances: stats.forcedAdvances,
|
|
26
|
+
retained: ring.live().map((entry) => ({
|
|
27
|
+
versionId: entry.versionId,
|
|
28
|
+
rootTag: tagName(entry.rootTag),
|
|
29
|
+
})),
|
|
30
|
+
readers: table.claimedSlots().map((reader) => ({
|
|
31
|
+
slot: reader.slot,
|
|
32
|
+
generation: reader.generation,
|
|
33
|
+
epoch: reader.epoch,
|
|
34
|
+
heartbeat: reader.heartbeat,
|
|
35
|
+
lagVersions: reader.epoch === 0 ? 0 : stats.versionId - reader.epoch,
|
|
36
|
+
})),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/** The same picture as text, for a console or a bug report. */
|
|
40
|
+
export function formatArena(owner) {
|
|
41
|
+
const report = reportArena(owner);
|
|
42
|
+
const lines = [
|
|
43
|
+
`globals arena, layout ${report.layoutVersion}, owner generation ${report.ownerGeneration}`,
|
|
44
|
+
``,
|
|
45
|
+
` version ${report.version}`,
|
|
46
|
+
` reclaim floor ${report.reclaimFloor}`,
|
|
47
|
+
` commits ${report.commits}`,
|
|
48
|
+
` forced advances ${report.forcedAdvances}`,
|
|
49
|
+
``,
|
|
50
|
+
` capacity ${bytes(report.capacityBytes)}`,
|
|
51
|
+
` used ${bytes(report.usedBytes)}`,
|
|
52
|
+
` live ${bytes(report.liveBytes)} (${(report.utilisation * 100).toFixed(1)}%)`,
|
|
53
|
+
` free lists ${bytes(report.freeListBytes)}`,
|
|
54
|
+
` stranded ${bytes(report.strandedBytes)}`,
|
|
55
|
+
` interned strings ${report.internedStrings}`,
|
|
56
|
+
``,
|
|
57
|
+
` retained versions ${report.retained.length}` +
|
|
58
|
+
(report.retained.length === 0
|
|
59
|
+
? ""
|
|
60
|
+
: `, ${report.retained[0]?.versionId} to ${report.retained[report.retained.length - 1]?.versionId}`),
|
|
61
|
+
];
|
|
62
|
+
if (report.readers.length === 0) {
|
|
63
|
+
lines.push(` readers none attached`);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
lines.push(` readers`);
|
|
67
|
+
for (const reader of report.readers) {
|
|
68
|
+
const state = reader.epoch === 0 ? "idle" : `pinned at ${reader.epoch}, ${reader.lagVersions} behind`;
|
|
69
|
+
lines.push(` slot ${reader.slot} generation ${reader.generation}, ${state}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (report.strandedBytes > report.liveBytes) {
|
|
73
|
+
lines.push(``, ` note: stranded bytes exceed live bytes, which means blocks larger than the biggest`, ` size class (${SIZE_CLASSES[SIZE_CLASSES.length - 1]} bytes) are being freed and dropped rather than reused.`);
|
|
74
|
+
}
|
|
75
|
+
return lines.join("\n");
|
|
76
|
+
}
|
|
77
|
+
function bytes(value) {
|
|
78
|
+
if (value < 1024)
|
|
79
|
+
return `${value} B`;
|
|
80
|
+
if (value < 1024 * 1024)
|
|
81
|
+
return `${(value / 1024).toFixed(1)} KB`;
|
|
82
|
+
return `${(value / (1024 * 1024)).toFixed(2)} MB`;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* What a window can see about its own position.
|
|
86
|
+
*
|
|
87
|
+
* `headroomVersions` is the number this actually answers: how many more commits can happen
|
|
88
|
+
* before this reader is force advanced and its snapshot fails closed. A window that keeps
|
|
89
|
+
* seeing a small number here is not keeping up.
|
|
90
|
+
*/
|
|
91
|
+
export function reportReader(reader) {
|
|
92
|
+
const stats = reader.stats();
|
|
93
|
+
const retained = new RetainedRing(reader.arena).capacity;
|
|
94
|
+
const lag = stats.pinnedEpoch === 0 ? 0 : stats.publishedVersion - stats.pinnedEpoch;
|
|
95
|
+
return {
|
|
96
|
+
...stats,
|
|
97
|
+
lagVersions: lag,
|
|
98
|
+
headroomVersions: stats.pinnedEpoch === 0 ? retained : retained - lag,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* A shallow diff between two values, for a version to version view in a debug panel.
|
|
103
|
+
*
|
|
104
|
+
* Deliberately shallow and deliberately simple. A deep structural diff would duplicate what
|
|
105
|
+
* the HAMT already knows, and comparing arena nodes by offset would be the right way to
|
|
106
|
+
* build one later.
|
|
107
|
+
*/
|
|
108
|
+
export function diffShallow(before, after) {
|
|
109
|
+
const changes = [];
|
|
110
|
+
if (before === null || after === null || typeof before !== "object" || typeof after !== "object") {
|
|
111
|
+
if (!Object.is(before, after))
|
|
112
|
+
changes.push({ key: "", before, after });
|
|
113
|
+
return changes;
|
|
114
|
+
}
|
|
115
|
+
const keys = new Set([
|
|
116
|
+
...Object.keys(before),
|
|
117
|
+
...Object.keys(after),
|
|
118
|
+
]);
|
|
119
|
+
for (const key of keys) {
|
|
120
|
+
const left = before[key];
|
|
121
|
+
const right = after[key];
|
|
122
|
+
if (!Object.is(left, right))
|
|
123
|
+
changes.push({ key, before: left, after: right });
|
|
124
|
+
}
|
|
125
|
+
return changes;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=inspect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/inspect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The shared memory layout.
|
|
3
|
+
*
|
|
4
|
+
* Everything here is a fixed offset agreed between the owner and every reader. A change to
|
|
5
|
+
* any of it is a breaking change to the wire format and requires a LAYOUT_VERSION bump,
|
|
6
|
+
* because an owner and a reader from different builds may map the same buffer.
|
|
7
|
+
*
|
|
8
|
+
* Byte map:
|
|
9
|
+
*
|
|
10
|
+
* 0 header, HEADER_BYTES
|
|
11
|
+
* HEADER_BYTES reader table, maxReaders * READER_SLOT_BYTES
|
|
12
|
+
* ... retained version ring, retainedCap * RETAINED_SLOT_BYTES
|
|
13
|
+
* ... arena, grows upward from a bump pointer
|
|
14
|
+
*/
|
|
15
|
+
/** "GLOB" in ASCII. A buffer that does not start with this is not one of ours. */
|
|
16
|
+
export declare const MAGIC = 1196183362;
|
|
17
|
+
/** Bump on any change to the byte map, the block header, or the tag meanings. */
|
|
18
|
+
export declare const LAYOUT_VERSION = 1;
|
|
19
|
+
export declare const WORD = 4;
|
|
20
|
+
export declare const SLOT_BYTES = 8;
|
|
21
|
+
/** Every allocation starts on an eight byte boundary so float64 stores are aligned. */
|
|
22
|
+
export declare const ALIGNMENT = 8;
|
|
23
|
+
export declare const Header: {
|
|
24
|
+
readonly Magic: 0;
|
|
25
|
+
readonly LayoutVersion: 1;
|
|
26
|
+
/** Total byte length the owner believes the buffer has. Updated on grow. */
|
|
27
|
+
readonly CapacityBytes: 2;
|
|
28
|
+
/** Guards the configuration words, so a reader can detect a stomped header. */
|
|
29
|
+
readonly ConfigChecksum: 3;
|
|
30
|
+
/**
|
|
31
|
+
* Seqlock over the root publication. Even means stable, odd means a commit is in
|
|
32
|
+
* progress. Readers retry rather than block.
|
|
33
|
+
*/
|
|
34
|
+
readonly Sequence: 4;
|
|
35
|
+
readonly RootTag: 5;
|
|
36
|
+
readonly RootPayload: 6;
|
|
37
|
+
/** Monotonic. Doubles as the epoch a reader pins. */
|
|
38
|
+
readonly VersionId: 7;
|
|
39
|
+
/** Byte offset of the next unallocated byte. */
|
|
40
|
+
readonly BumpPointer: 8;
|
|
41
|
+
readonly MaxReaders: 9;
|
|
42
|
+
readonly ReaderTableOffset: 10;
|
|
43
|
+
readonly RetainedRingOffset: 11;
|
|
44
|
+
readonly RetainedCapacity: 12;
|
|
45
|
+
readonly ArenaOffset: 13;
|
|
46
|
+
/** Oldest version still retained. A snapshot below this is stale. */
|
|
47
|
+
readonly ReclaimFloor: 14;
|
|
48
|
+
/** Verification mode, see VerifyMode. */
|
|
49
|
+
readonly Flags: 15;
|
|
50
|
+
/** Bumped by the owner on every liveness tick so readers can detect a dead owner. */
|
|
51
|
+
readonly OwnerHeartbeat: 16;
|
|
52
|
+
/** Bumped when a new owner adopts the buffer, so stale readers fail closed. */
|
|
53
|
+
readonly OwnerGeneration: 17;
|
|
54
|
+
readonly StatCommits: 18;
|
|
55
|
+
readonly StatBytesAllocated: 19;
|
|
56
|
+
readonly StatBytesFreed: 20;
|
|
57
|
+
readonly StatBytesLive: 21;
|
|
58
|
+
readonly StatForcedAdvances: 22;
|
|
59
|
+
/** Checksum over the header and the current root, when verification is on. */
|
|
60
|
+
readonly RootChecksum: 23;
|
|
61
|
+
};
|
|
62
|
+
export declare const HEADER_WORDS = 32;
|
|
63
|
+
export declare const HEADER_BYTES: number;
|
|
64
|
+
/** Words the ConfigChecksum covers. These never change after creation. */
|
|
65
|
+
export declare const CONFIG_WORDS: readonly [0, 1, 9, 10, 11, 12, 13];
|
|
66
|
+
export declare const ReaderSlot: {
|
|
67
|
+
/** 0 free, 1 claimed. Claimed with compareExchange so two readers cannot share a slot. */
|
|
68
|
+
readonly State: 0;
|
|
69
|
+
/** Bumped on each claim. A snapshot from an earlier generation is not valid. */
|
|
70
|
+
readonly Generation: 1;
|
|
71
|
+
/** The version this reader is pinned to. Zero means it is not reading. */
|
|
72
|
+
readonly Epoch: 2;
|
|
73
|
+
/** Monotonic counter the reader bumps. A stalled counter means a dead or frozen reader. */
|
|
74
|
+
readonly Heartbeat: 3;
|
|
75
|
+
};
|
|
76
|
+
export declare const READER_SLOT_WORDS = 4;
|
|
77
|
+
export declare const READER_SLOT_BYTES: number;
|
|
78
|
+
export declare const SLOT_FREE = 0;
|
|
79
|
+
export declare const SLOT_CLAIMED = 1;
|
|
80
|
+
export declare const RetainedSlot: {
|
|
81
|
+
readonly VersionId: 0;
|
|
82
|
+
readonly RootTag: 1;
|
|
83
|
+
readonly RootPayload: 2;
|
|
84
|
+
/** See RetainedState. */
|
|
85
|
+
readonly State: 3;
|
|
86
|
+
};
|
|
87
|
+
export declare const RETAINED_SLOT_WORDS = 4;
|
|
88
|
+
export declare const RETAINED_SLOT_BYTES: number;
|
|
89
|
+
export declare const RetainedState: {
|
|
90
|
+
readonly Empty: 0;
|
|
91
|
+
/** Readers may pin this version. */
|
|
92
|
+
readonly Live: 1;
|
|
93
|
+
/** Reclaimed normally, every reader had moved past it. */
|
|
94
|
+
readonly Reclaimed: 2;
|
|
95
|
+
/** Reclaimed while a reader was still pinned, because retention hit its cap. */
|
|
96
|
+
readonly ForceReclaimed: 3;
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* Every allocation is preceded by two words. The magic makes a wild offset detectable
|
|
100
|
+
* instead of merely wrong, and the size class lets the allocator return the block to the
|
|
101
|
+
* right free list without a side table.
|
|
102
|
+
*/
|
|
103
|
+
export declare const Block: {
|
|
104
|
+
/** BLOCK_MAGIC in the high 24 bits, size class index in the low 8. */
|
|
105
|
+
readonly Header: -2;
|
|
106
|
+
/** Payload bytes, not counting this header. */
|
|
107
|
+
readonly ByteSize: -1;
|
|
108
|
+
};
|
|
109
|
+
export declare const BLOCK_HEADER_BYTES = 8;
|
|
110
|
+
export declare const BLOCK_MAGIC = 4344907;
|
|
111
|
+
export declare const BLOCK_MAGIC_SHIFT = 8;
|
|
112
|
+
export declare const BLOCK_CLASS_MASK = 255;
|
|
113
|
+
/** Size class 255 means the block was allocated at an exact size and has no free list. */
|
|
114
|
+
export declare const SIZE_CLASS_EXACT = 255;
|
|
115
|
+
export declare const VerifyMode: {
|
|
116
|
+
readonly Off: 0;
|
|
117
|
+
readonly Header: 1;
|
|
118
|
+
readonly Full: 2;
|
|
119
|
+
};
|
|
120
|
+
export type VerifyModeValue = (typeof VerifyMode)[keyof typeof VerifyMode];
|
|
121
|
+
export interface ArenaGeometry {
|
|
122
|
+
readonly maxReaders: number;
|
|
123
|
+
readonly retainedCapacity: number;
|
|
124
|
+
readonly readerTableOffset: number;
|
|
125
|
+
readonly retainedRingOffset: number;
|
|
126
|
+
readonly arenaOffset: number;
|
|
127
|
+
}
|
|
128
|
+
export declare function computeGeometry(maxReaders: number, retainedCapacity: number): ArenaGeometry;
|
|
129
|
+
export declare function align(bytes: number): number;
|
|
130
|
+
//# sourceMappingURL=layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/layout.ts"],"names":[],"mappings":"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"}
|