@elaraai/east 1.0.83 → 1.0.84

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.
Files changed (36) hide show
  1. package/dist/src/naming.d.ts +10 -7
  2. package/dist/src/naming.d.ts.map +1 -1
  3. package/dist/src/naming.js +30 -13
  4. package/dist/src/naming.js.map +1 -1
  5. package/dist/src/naming.spec.js +49 -0
  6. package/dist/src/naming.spec.js.map +1 -1
  7. package/dist/src/runner_protocol.d.ts +49 -2
  8. package/dist/src/runner_protocol.d.ts.map +1 -1
  9. package/dist/src/runner_protocol.js +37 -2
  10. package/dist/src/runner_protocol.js.map +1 -1
  11. package/dist/src/serialization/beast2/index.d.ts +1 -1
  12. package/dist/src/serialization/beast2/index.d.ts.map +1 -1
  13. package/dist/src/serialization/beast2/index.js +1 -1
  14. package/dist/src/serialization/beast2/index.js.map +1 -1
  15. package/dist/src/serialization/beast2/v5/lazy.d.ts +67 -5
  16. package/dist/src/serialization/beast2/v5/lazy.d.ts.map +1 -1
  17. package/dist/src/serialization/beast2/v5/lazy.js +116 -24
  18. package/dist/src/serialization/beast2/v5/lazy.js.map +1 -1
  19. package/dist/src/serialization/beast2/v5/lazy.spec.js +95 -1
  20. package/dist/src/serialization/beast2/v5/lazy.spec.js.map +1 -1
  21. package/dist/src/serialization/beast2/v5/stream.d.ts +29 -2
  22. package/dist/src/serialization/beast2/v5/stream.d.ts.map +1 -1
  23. package/dist/src/serialization/beast2/v5/stream.js +43 -2
  24. package/dist/src/serialization/beast2/v5/stream.js.map +1 -1
  25. package/dist/src/serialization/beast2/v5/type-section.d.ts.map +1 -1
  26. package/dist/src/serialization/beast2/v5/type-section.js +25 -12
  27. package/dist/src/serialization/beast2/v5/type-section.js.map +1 -1
  28. package/dist/src/serialization/beast2/v5/type-section.spec.d.ts +6 -0
  29. package/dist/src/serialization/beast2/v5/type-section.spec.d.ts.map +1 -0
  30. package/dist/src/serialization/beast2/v5/type-section.spec.js +41 -0
  31. package/dist/src/serialization/beast2/v5/type-section.spec.js.map +1 -0
  32. package/dist/src/serialization/index.d.ts +1 -1
  33. package/dist/src/serialization/index.d.ts.map +1 -1
  34. package/dist/src/serialization/index.js +1 -1
  35. package/dist/src/serialization/index.js.map +1 -1
  36. package/package.json +2 -2
@@ -32,13 +32,47 @@
32
32
  * This is what lets a task runner open a huge collection input lazily: a
33
33
  * body that only iterates it once, or reads a few keys, never pays the whole
34
34
  * decode — while a body that does anything else gets the eager value's exact
35
- * semantics.
35
+ * semantics. What a lazy value's reads came to — the segments they decoded,
36
+ * and whether an operation read it whole — {@link beast2LazyStats} says, for a
37
+ * runner's account of its inputs.
36
38
  */
37
39
  import { type EastTypeValue } from "../../../type_of_type.js";
38
40
  import type { EastType, ValueTypeOf } from "../../../types.js";
39
41
  import { type Beast2DecodeOptions } from "../shared.js";
40
42
  import { type Beast2SyncRangeReader } from "./range.js";
41
43
  import { type Beast2ManifestSource } from "./manifest.js";
44
+ /**
45
+ * Options accepted by {@link openBeast2LazyFor}: the decode options, and the
46
+ * gauge a whole read of the value is weighed by.
47
+ */
48
+ export type Beast2LazyOptions = Beast2DecodeOptions & {
49
+ /** The process's resident memory now, in bytes. It is read before and after
50
+ * an operation the pager cannot serve reads the value whole, so the value
51
+ * can say what that read added ({@link beast2LazyStats}). Core reads no
52
+ * process state of its own, so a runner passes it: east-node's reads
53
+ * `process.memoryUsage.rss()`. Without it, a whole read adds 0. */
54
+ resident?: () => number;
55
+ };
56
+ /**
57
+ * What reading a lazily opened collection has come to — the account a
58
+ * runner's `-v` gives of each input it opened lazily, which east-c's pager
59
+ * keeps for its runners too.
60
+ */
61
+ export type Beast2LazyStats = {
62
+ /** The segments the collection is stored in. */
63
+ segments: number;
64
+ /** The segment decodes its reads have made: above `segments` when its reads
65
+ * decoded a segment again, beyond the few the pager keeps. */
66
+ segmentsDecoded: number;
67
+ /** The segment fences its reads probed. */
68
+ fencesProbed: number;
69
+ /** Whether an operation the pager cannot serve has read it whole. */
70
+ hydrated: boolean;
71
+ /** What that whole read added to resident memory, in bytes, by the
72
+ * `resident` gauge the value was opened with: 0 without a gauge, and
73
+ * before the value is read whole. */
74
+ hydratedBytes: number;
75
+ };
42
76
  /**
43
77
  * What a compiled loop over a Set or Dict walks: a Set's elements, a Dict's
44
78
  * entries. A lazy one not yet read whole is walked as east-c's paged loop
@@ -68,6 +102,30 @@ export declare function loopWalk<E>(collection: Iterable<E>): Iterable<E>;
68
102
  * @internal
69
103
  */
70
104
  export declare function readLazyWhole(value: unknown): void;
105
+ /**
106
+ * Reads what reading a lazily opened collection has come to: the segment
107
+ * decodes and fence probes its reads made, and whether an operation the pager
108
+ * cannot serve read it whole, with what that added to resident memory.
109
+ *
110
+ * A runner's `-v` gives this account of each input it opened lazily, as
111
+ * east-c's runners give theirs from east-c's pager: reads that decode segments
112
+ * again, or an operation that read the input whole anyway, say that decoding
113
+ * it whole before the program runs would serve the program better.
114
+ *
115
+ * @param value - an East value
116
+ * @returns the account, or `undefined` when `value` is not a collection
117
+ * {@link openBeast2LazyFor} opened
118
+ *
119
+ * @example
120
+ * ```ts
121
+ * const open = openBeast2LazyFor(TableType, { frozen: true, resident: () => process.memoryUsage.rss() });
122
+ * const table = open(blob);
123
+ * table.get(42n);
124
+ * beast2LazyStats(table); // { segments: 4, segmentsDecoded: 1, fencesProbed: 4, hydrated: false, hydratedBytes: 0 }
125
+ * beast2LazyStats(new Map()); // undefined
126
+ * ```
127
+ */
128
+ export declare function beast2LazyStats(value: unknown): Beast2LazyStats | undefined;
71
129
  /**
72
130
  * Builds a curried lazy opener: `open(source)` returns an ordinary collection
73
131
  * value — a `SortedMap`, `SortedSet`, or array — backed by the blob's
@@ -95,13 +153,17 @@ export declare function readLazyWhole(value: unknown): void;
95
153
  * raises at the operation that made the read. A hydration that fails leaves
96
154
  * the value unread, so the next access reads the blob again.
97
155
  *
156
+ * What the value's reads came to — its segment decodes and fence probes, and
157
+ * whether it was read whole, weighed by `options.resident` — is
158
+ * {@link beast2LazyStats}'s to say.
159
+ *
98
160
  * @param type - the collection type (Array/Set/Dict)
99
161
  * @param options - decode options (platform functions for decoded functions,
100
- * frozen)
162
+ * frozen), and the gauge a whole read of the value is weighed by
101
163
  * @returns a function opening a blob as a lazy collection value
102
164
  * @throws {TypeError} When `type` is not an Array, Set or Dict type.
103
165
  */
104
- export declare function openBeast2LazyFor<T extends EastType>(type: T | EastTypeValue, options?: Beast2DecodeOptions): (source: Uint8Array | Beast2SyncRangeReader | Beast2ManifestSource) => ValueTypeOf<T>;
166
+ export declare function openBeast2LazyFor<T extends EastType>(type: T | EastTypeValue, options?: Beast2LazyOptions): (source: Uint8Array | Beast2SyncRangeReader | Beast2ManifestSource) => ValueTypeOf<T>;
105
167
  /** Options accepted by {@link isBeast2LazySafe}. */
106
168
  export type Beast2LazySafeOptions = {
107
169
  /** Judge the shape for a frozen open ({@link openBeast2LazyFor} with
@@ -130,8 +192,8 @@ export type Beast2LazySafeOptions = {
130
192
  * for every practical shape. Only `Ref`- and function-bearing element shapes
131
193
  * still force the eager (frozen) decode.
132
194
  *
133
- * Runners consult this before opening a large input lazily; an unsafe shape
134
- * falls back to the eager whole decode (always correct, just not O(segment)).
195
+ * Runners consult this before opening an input lazily; an unsafe shape falls
196
+ * back to the eager whole decode (always correct, just not O(segment)).
135
197
  *
136
198
  * @param type - the candidate input type
137
199
  * @param options - gate options (`frozen` for frozen opens)
@@ -1 +1 @@
1
- {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/beast2/v5/lazy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAM/D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAIxD,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AA4e1D;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAIhE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAIlD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,aAAa,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,qBAAqB,GAAG,oBAAoB,KAAK,WAAW,CAAC,CAAC,CAAC,CAyBnM;AAiED,oDAAoD;AACpD,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;mEAG+D;IAC/D,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,aAAa,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CASzG"}
1
+ {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../../../../src/serialization/beast2/v5/lazy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAM/D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAIxD,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAqE1D;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,GAAG;IACpD;;;;wEAIoE;IACpE,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC;CACzB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB;mEAC+D;IAC/D,eAAe,EAAE,MAAM,CAAC;IACxB,2CAA2C;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,QAAQ,EAAE,OAAO,CAAC;IAClB;;0CAEsC;IACtC,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AA4eF;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAIhE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAIlD;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,GAAG,SAAS,CAG3E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,aAAa,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,qBAAqB,GAAG,oBAAoB,KAAK,WAAW,CAAC,CAAC,CAAC,CA0BjM;AAiED,oDAAoD;AACpD,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;mEAG+D;IAC/D,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,aAAa,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CASzG"}
@@ -32,7 +32,9 @@
32
32
  * This is what lets a task runner open a huge collection input lazily: a
33
33
  * body that only iterates it once, or reads a few keys, never pays the whole
34
34
  * decode — while a body that does anything else gets the eager value's exact
35
- * semantics.
35
+ * semantics. What a lazy value's reads came to — the segments they decoded,
36
+ * and whether an operation read it whole — {@link beast2LazyStats} says, for a
37
+ * runner's account of its inputs.
36
38
  */
37
39
  import {} from "../../../type_of_type.js";
38
40
  import { compareFor } from "../../../comparison.js";
@@ -109,6 +111,25 @@ function* lazySetKeys(pages, cmp, from) {
109
111
  * lookup, cheap on the eager values a constructor is given far more
110
112
  * often. */
111
113
  const READ_WHOLE = Symbol("east.lazy.readWhole");
114
+ /** The key of a lazy value's method that says what reading it has come to
115
+ * ({@link beast2LazyStats}). */
116
+ const LAZY_STATS = Symbol("east.lazy.stats");
117
+ /** A lazy value's account of its reads: its pager's, and what reading it
118
+ * whole added — `undefined` until an operation the pager cannot serve has. */
119
+ function statsOf(pages, wholeBytes) {
120
+ return {
121
+ segments: pages.segmentCount,
122
+ segmentsDecoded: pages.segmentsDecoded,
123
+ fencesProbed: pages.fencesProbed,
124
+ hydrated: wholeBytes !== undefined,
125
+ hydratedBytes: wholeBytes ?? 0,
126
+ };
127
+ }
128
+ /** What a whole read that began at `before` added to resident memory by
129
+ * `resident`: 0 without a gauge, and never below 0. */
130
+ function grownSince(resident, before) {
131
+ return resident === undefined ? 0 : Math.max(0, resident() - before);
132
+ }
112
133
  /** Streams a Set or Dict blob's elements — pairs, for a Dict — as east-c's
113
134
  * paged loop walks them: every segment fence verified before the first
114
135
  * element, and each segment checked against the next fence as it is read. */
@@ -128,22 +149,31 @@ class LazySortedMap extends SortedMap {
128
149
  pages;
129
150
  cmp;
130
151
  frozen;
152
+ resident;
131
153
  hydrated = false;
154
+ /** What reading the map whole added to resident memory, once an operation
155
+ * the pager cannot serve has; `undefined` until then. */
156
+ wholeBytes;
157
+ /** The greatest key, once {@link maxKey} has read it from the last segment:
158
+ * the map cannot change unread, so the segment is decoded once. */
159
+ greatest;
132
160
  // A frozen lazy map cannot be Object.freeze'd — hydration writes through
133
161
  // its own internals — so the flag guards the mutators and the frozen
134
162
  // registry carries the brand (see openBeast2LazyFor).
135
- constructor(pages, cmp, frozen = false) {
163
+ constructor(pages, cmp, frozen = false, resident) {
136
164
  super(undefined, cmp);
137
165
  this.pages = pages;
138
166
  this.cmp = cmp;
139
167
  this.frozen = frozen;
168
+ this.resident = resident;
140
169
  }
141
- /** Decodes every segment into the underlying B-tree once. A read that fails
142
- * leaves the map unread rather than half-filled, so the next access reads
143
- * again. */
170
+ /** Decodes every segment into the underlying B-tree once, weighing what that
171
+ * adds to resident memory. A read that fails leaves the map unread rather
172
+ * than half-filled, so the next access reads again. */
144
173
  hydrate() {
145
174
  if (this.hydrated)
146
175
  return;
176
+ const before = this.resident?.() ?? 0;
147
177
  try {
148
178
  for (const [k, v] of lazyDictEntries(this.pages, this.cmp)) {
149
179
  super.set(k, v);
@@ -154,11 +184,16 @@ class LazySortedMap extends SortedMap {
154
184
  throw err;
155
185
  }
156
186
  this.hydrated = true;
187
+ this.wholeBytes = grownSince(this.resident, before);
157
188
  }
158
189
  /** What {@link readLazyWhole} runs. */
159
190
  [READ_WHOLE]() {
160
191
  this.hydrate();
161
192
  }
193
+ /** What {@link beast2LazyStats} reads. */
194
+ [LAZY_STATS]() {
195
+ return statsOf(this.pages, this.wholeBytes);
196
+ }
162
197
  /** The entries a compiled loop walks ({@link loopWalk}). */
163
198
  loopWalk() {
164
199
  return this.hydrated ? super.entries() : walkDisjoint(this.pages);
@@ -222,10 +257,11 @@ class LazySortedMap extends SortedMap {
222
257
  const n = this.pages.segmentCount;
223
258
  if (n === 0)
224
259
  return undefined;
225
- let last;
226
- for (const k of served(() => this.pages.segment(n - 1)).keys())
227
- last = k;
228
- return last;
260
+ if (this.greatest === undefined) {
261
+ for (const k of served(() => this.pages.segment(n - 1)).keys())
262
+ this.greatest = k;
263
+ }
264
+ return this.greatest;
229
265
  }
230
266
  keys(firstKey) {
231
267
  if (!this.hydrated) {
@@ -271,22 +307,31 @@ class LazySortedSet extends SortedSet {
271
307
  pages;
272
308
  cmp;
273
309
  frozen;
310
+ resident;
274
311
  hydrated = false;
312
+ /** What reading the set whole added to resident memory, once an operation
313
+ * the pager cannot serve has; `undefined` until then. */
314
+ wholeBytes;
315
+ /** The greatest element, once {@link maxKey} has read it from the last
316
+ * segment: the set cannot change unread, so the segment is decoded once. */
317
+ greatest;
275
318
  // A frozen lazy set cannot be Object.freeze'd — hydration writes through
276
319
  // its own internals — so the flag guards the mutators and the frozen
277
320
  // registry carries the brand (see openBeast2LazyFor).
278
- constructor(pages, cmp, frozen = false) {
321
+ constructor(pages, cmp, frozen = false, resident) {
279
322
  super(undefined, cmp);
280
323
  this.pages = pages;
281
324
  this.cmp = cmp;
282
325
  this.frozen = frozen;
326
+ this.resident = resident;
283
327
  }
284
- /** Decodes every segment into the underlying B-tree once. A read that fails
285
- * leaves the set unread rather than half-filled, so the next access reads
286
- * again. */
328
+ /** Decodes every segment into the underlying B-tree once, weighing what that
329
+ * adds to resident memory. A read that fails leaves the set unread rather
330
+ * than half-filled, so the next access reads again. */
287
331
  hydrate() {
288
332
  if (this.hydrated)
289
333
  return;
334
+ const before = this.resident?.() ?? 0;
290
335
  try {
291
336
  for (const k of lazySetKeys(this.pages, this.cmp)) {
292
337
  super.add(k);
@@ -297,11 +342,16 @@ class LazySortedSet extends SortedSet {
297
342
  throw err;
298
343
  }
299
344
  this.hydrated = true;
345
+ this.wholeBytes = grownSince(this.resident, before);
300
346
  }
301
347
  /** What {@link readLazyWhole} runs. */
302
348
  [READ_WHOLE]() {
303
349
  this.hydrate();
304
350
  }
351
+ /** What {@link beast2LazyStats} reads. */
352
+ [LAZY_STATS]() {
353
+ return statsOf(this.pages, this.wholeBytes);
354
+ }
305
355
  /** The elements a compiled loop walks ({@link loopWalk}). */
306
356
  loopWalk() {
307
357
  return this.hydrated ? super.keys() : walkDisjoint(this.pages);
@@ -390,10 +440,11 @@ class LazySortedSet extends SortedSet {
390
440
  const n = this.pages.segmentCount;
391
441
  if (n === 0)
392
442
  return undefined;
393
- let last;
394
- for (const k of served(() => this.pages.segment(n - 1)))
395
- last = k;
396
- return last;
443
+ if (this.greatest === undefined) {
444
+ for (const k of served(() => this.pages.segment(n - 1)))
445
+ this.greatest = k;
446
+ }
447
+ return this.greatest;
397
448
  }
398
449
  keys(firstKey) {
399
450
  if (!this.hydrated) {
@@ -426,14 +477,18 @@ const LAZY_ARRAY_READS = new Set(["entries", "keys", "values", "forEach", Symbol
426
477
  * the pager; any other access hydrates the target array in place. The
427
478
  * proxy IS the value, so identity-keyed host state (iteration locks,
428
479
  * freezes) survives hydration. */
429
- function lazyArray(pages, frozen = false) {
480
+ function lazyArray(pages, frozen = false, resident) {
430
481
  const target = [];
431
482
  let hydrated = false;
483
+ // What reading the array whole added to resident memory, once an operation
484
+ // the pager cannot serve has.
485
+ let wholeBytes;
432
486
  // A read that fails leaves the array unread rather than half-filled, so
433
487
  // the next access reads again.
434
488
  const hydrate = () => {
435
489
  if (hydrated)
436
490
  return;
491
+ const before = resident?.() ?? 0;
437
492
  try {
438
493
  for (let i = 0; i < pages.segmentCount; i++) {
439
494
  // Element-by-element append — a spread (`push(...segment)`) passes the
@@ -448,7 +503,9 @@ function lazyArray(pages, frozen = false) {
448
503
  throw err;
449
504
  }
450
505
  hydrated = true;
506
+ wholeBytes = grownSince(resident, before);
451
507
  };
508
+ const stats = () => statsOf(pages, wholeBytes);
452
509
  function* elements() {
453
510
  for (let i = 0; i < pages.segmentCount; i++) {
454
511
  yield* served(() => pages.segment(i));
@@ -476,6 +533,8 @@ function lazyArray(pages, frozen = false) {
476
533
  get(t, prop, receiver) {
477
534
  if (prop === READ_WHOLE)
478
535
  return hydrate;
536
+ if (prop === LAZY_STATS)
537
+ return stats;
479
538
  if (!hydrated) {
480
539
  if (prop === "length")
481
540
  return pages.elementCount;
@@ -570,6 +629,34 @@ export function readLazyWhole(value) {
570
629
  value[READ_WHOLE]?.();
571
630
  }
572
631
  }
632
+ /**
633
+ * Reads what reading a lazily opened collection has come to: the segment
634
+ * decodes and fence probes its reads made, and whether an operation the pager
635
+ * cannot serve read it whole, with what that added to resident memory.
636
+ *
637
+ * A runner's `-v` gives this account of each input it opened lazily, as
638
+ * east-c's runners give theirs from east-c's pager: reads that decode segments
639
+ * again, or an operation that read the input whole anyway, say that decoding
640
+ * it whole before the program runs would serve the program better.
641
+ *
642
+ * @param value - an East value
643
+ * @returns the account, or `undefined` when `value` is not a collection
644
+ * {@link openBeast2LazyFor} opened
645
+ *
646
+ * @example
647
+ * ```ts
648
+ * const open = openBeast2LazyFor(TableType, { frozen: true, resident: () => process.memoryUsage.rss() });
649
+ * const table = open(blob);
650
+ * table.get(42n);
651
+ * beast2LazyStats(table); // { segments: 4, segmentsDecoded: 1, fencesProbed: 4, hydrated: false, hydratedBytes: 0 }
652
+ * beast2LazyStats(new Map()); // undefined
653
+ * ```
654
+ */
655
+ export function beast2LazyStats(value) {
656
+ if (typeof value !== "object" || value === null)
657
+ return undefined;
658
+ return value[LAZY_STATS]?.();
659
+ }
573
660
  /**
574
661
  * Builds a curried lazy opener: `open(source)` returns an ordinary collection
575
662
  * value — a `SortedMap`, `SortedSet`, or array — backed by the blob's
@@ -597,9 +684,13 @@ export function readLazyWhole(value) {
597
684
  * raises at the operation that made the read. A hydration that fails leaves
598
685
  * the value unread, so the next access reads the blob again.
599
686
  *
687
+ * What the value's reads came to — its segment decodes and fence probes, and
688
+ * whether it was read whole, weighed by `options.resident` — is
689
+ * {@link beast2LazyStats}'s to say.
690
+ *
600
691
  * @param type - the collection type (Array/Set/Dict)
601
692
  * @param options - decode options (platform functions for decoded functions,
602
- * frozen)
693
+ * frozen), and the gauge a whole read of the value is weighed by
603
694
  * @returns a function opening a blob as a lazy collection value
604
695
  * @throws {TypeError} When `type` is not an Array, Set or Dict type.
605
696
  */
@@ -609,21 +700,22 @@ export function openBeast2LazyFor(type, options) {
609
700
  throw new TypeError(`beast2 v5 lazy values hold Array, Set or Dict roots, not ${typeValue.type}`);
610
701
  }
611
702
  const frozen = options?.frozen ?? false;
703
+ const resident = options?.resident;
612
704
  return (source) => {
613
705
  // The pages carry the decode options, so every segment (and fence) the
614
706
  // lazy value serves is decoded frozen at construction.
615
707
  const pages = new Beast2Pages(source, typeValue, options);
616
708
  let value;
617
709
  if (typeValue.type === "Array") {
618
- value = lazyArray(pages, frozen);
710
+ value = lazyArray(pages, frozen, resident);
619
711
  }
620
712
  else if (typeValue.type === "Set") {
621
713
  const cmp = compareFor(typeValue.value);
622
- value = new LazySortedSet(pages, cmp, frozen);
714
+ value = new LazySortedSet(pages, cmp, frozen, resident);
623
715
  }
624
716
  else {
625
717
  const cmp = compareFor(typeValue.value.key);
626
- value = new LazySortedMap(pages, cmp, frozen);
718
+ value = new LazySortedMap(pages, cmp, frozen, resident);
627
719
  }
628
720
  // Lazy values cannot be Object.freeze'd (hydration writes through their
629
721
  // own internals), so the registry carries the frozen brand.
@@ -713,8 +805,8 @@ function isLazySafeElementFrozen(type) {
713
805
  * for every practical shape. Only `Ref`- and function-bearing element shapes
714
806
  * still force the eager (frozen) decode.
715
807
  *
716
- * Runners consult this before opening a large input lazily; an unsafe shape
717
- * falls back to the eager whole decode (always correct, just not O(segment)).
808
+ * Runners consult this before opening an input lazily; an unsafe shape falls
809
+ * back to the eager whole decode (always correct, just not O(segment)).
718
810
  *
719
811
  * @param type - the candidate input type
720
812
  * @param options - gate options (`frozen` for frozen opens)
@@ -1 +1 @@
1
- {"version":3,"file":"lazy.js","sourceRoot":"","sources":["../../../../../src/serialization/beast2/v5/lazy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lazy.js","sourceRoot":"","sources":["../../../../../src/serialization/beast2/v5/lazy.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ import { IntegerType, StringType, ArrayType, SetType, DictType, StructType, Floa
13
13
  import { compareFor, equalFor } from "../../../comparison.js";
14
14
  import { LazyReadError } from "../../../error.js";
15
15
  import { SortedMap, SortedSet, isEastDict, isEastSet } from "../../../index.js";
16
- import { decodeBeast2For, encodeBeast2For, encodeBeast2PagedFor, encodeBeast2SegmentsFor, iterBeast2SegmentsFor, openBeast2LazyFor, openBeast2PagesFor, isBeast2LazySafe, readBeast2Extents, spliceBeast2, } from "../index.js";
16
+ import { decodeBeast2For, encodeBeast2For, encodeBeast2PagedFor, encodeBeast2SegmentsFor, iterBeast2SegmentsFor, openBeast2LazyFor, openBeast2PagesFor, isBeast2LazySafe, beast2LazyStats, readBeast2Extents, spliceBeast2, } from "../index.js";
17
17
  const RowType = StructType({ id: IntegerType, name: StringType });
18
18
  const TableType = DictType(IntegerType, RowType);
19
19
  /** A collection in canonical order as a blob of 100-element segments — a
@@ -342,6 +342,100 @@ describe("Beast2 v5 — pages segment cache", () => {
342
342
  assert.equal(v1.name, "row-42");
343
343
  assert.notEqual(pages.segment(0), pages.segment(0), "segment() decodes fresh so callers cannot poison the cache");
344
344
  });
345
+ test("counts the segments it decodes and the fences it probes, a kept segment's read not among them", () => {
346
+ const rows = openBeast2PagesFor(RowsT)(paged(RowsT, structRows));
347
+ rows.element(42);
348
+ rows.element(43);
349
+ assert.equal(rows.segmentsDecoded, 1, "the second read is served by the kept segment");
350
+ rows.segment(0);
351
+ assert.equal(rows.segmentsDecoded, 2, "segment() decodes fresh, and counts");
352
+ assert.equal(rows.fencesProbed, 0, "an Array read probes no fence");
353
+ const table = openBeast2PagesFor(TableType)(paged(TableType, makeTable(350)));
354
+ assert.equal(table.segmentCount, 4);
355
+ table.get(42n);
356
+ table.get(43n);
357
+ assert.equal(table.fencesProbed, 4, "the first keyed read verifies every fence, once");
358
+ assert.equal(table.segmentsDecoded, 1);
359
+ assert.equal(table.fence(3), 300n);
360
+ assert.equal(table.fencesProbed, 4, "a fence the keyed read probed is kept: asking for it again probes nothing");
361
+ const fresh = openBeast2PagesFor(TableType)(paged(TableType, makeTable(350)));
362
+ assert.equal(fresh.fence(2), 200n);
363
+ assert.equal(fresh.fence(2), 200n);
364
+ assert.equal(fresh.fencesProbed, 1, "a Dict fence is probed once and kept");
365
+ assert.equal(fresh.get(42n)?.name, "row-42");
366
+ assert.equal(fresh.fencesProbed, 4, "a keyed read probes only the fences not yet kept");
367
+ // An Array's first element may be a container its caller changes, so it
368
+ // is never kept.
369
+ rows.fence(1);
370
+ rows.fence(1);
371
+ assert.equal(rows.fencesProbed, 2, "an Array's fence is probed afresh each time");
372
+ });
373
+ });
374
+ describe("Beast2 v5 — what a lazy value's reads came to (beast2LazyStats)", () => {
375
+ test("counts a Dict's segment decodes and fence probes, and weighs the whole read an operation makes", () => {
376
+ const blob = paged(TableType, makeTable(500));
377
+ // The gauge the whole read is weighed by: read once before it, once after.
378
+ const readings = [1_000, 4_096];
379
+ const lazy = openBeast2LazyFor(TableType, { resident: () => readings.shift() })(blob);
380
+ assert.deepEqual(beast2LazyStats(lazy), { segments: 5, segmentsDecoded: 0, fencesProbed: 0, hydrated: false, hydratedBytes: 0 });
381
+ lazy.get(42n);
382
+ lazy.get(43n);
383
+ assert.deepEqual(beast2LazyStats(lazy), { segments: 5, segmentsDecoded: 1, fencesProbed: 5, hydrated: false, hydratedBytes: 0 });
384
+ // Keyed reads that cycle over more segments than the pager keeps decode
385
+ // each again: every read of the second round misses.
386
+ for (let round = 0; round < 2; round++) {
387
+ for (const key of [0n, 100n, 200n, 300n, 400n])
388
+ lazy.get(key);
389
+ }
390
+ assert.deepEqual(beast2LazyStats(lazy), { segments: 5, segmentsDecoded: 10, fencesProbed: 5, hydrated: false, hydratedBytes: 0 });
391
+ assert.equal(readings.length, 2, "reads the pager serves weigh nothing");
392
+ // A write is an operation the pager cannot serve: it reads the map whole,
393
+ // a decode of each segment, and the gauge says what that added.
394
+ lazy.set(9999n, { id: 9999n, name: "added" });
395
+ assert.deepEqual(beast2LazyStats(lazy), { segments: 5, segmentsDecoded: 15, fencesProbed: 5, hydrated: true, hydratedBytes: 3_096 });
396
+ });
397
+ test("says an Array was read whole, adding nothing without a gauge", () => {
398
+ const Rows = ArrayType(StringType);
399
+ const lazy = openBeast2LazyFor(Rows)(paged(Rows, Array.from({ length: 260 }, (_, i) => `row-${i}`)));
400
+ assert.equal(lazy[150], "row-150");
401
+ assert.deepEqual(beast2LazyStats(lazy), { segments: 3, segmentsDecoded: 1, fencesProbed: 0, hydrated: false, hydratedBytes: 0 });
402
+ lazy.push("appended");
403
+ assert.deepEqual(beast2LazyStats(lazy), { segments: 3, segmentsDecoded: 4, fencesProbed: 0, hydrated: true, hydratedBytes: 0 });
404
+ });
405
+ test("a gauge that reads lower after the whole read adds nothing, and a clear is no whole read", () => {
406
+ const Tags = SetType(StringType);
407
+ const tags = new SortedSet(Array.from({ length: 150 }, (_, i) => `tag-${String(i).padStart(4, "0")}`), compareFor(StringType));
408
+ const readings = [8_192, 4_096];
409
+ const shrunk = openBeast2LazyFor(Tags, { resident: () => readings.shift() })(paged(Tags, tags));
410
+ assert.equal(shrunk.union(new SortedSet(["extra"], compareFor(StringType))).size, 151);
411
+ assert.deepEqual(beast2LazyStats(shrunk), { segments: 2, segmentsDecoded: 2, fencesProbed: 0, hydrated: true, hydratedBytes: 0 });
412
+ const cleared = openBeast2LazyFor(Tags)(paged(Tags, tags));
413
+ cleared.clear();
414
+ assert.equal(cleared.size, 0);
415
+ assert.deepEqual(beast2LazyStats(cleared), { segments: 2, segmentsDecoded: 0, fencesProbed: 0, hydrated: false, hydratedBytes: 0 });
416
+ });
417
+ test("reads a Dict's and a Set's least and greatest keys once, however often they are asked for", () => {
418
+ const table = openBeast2LazyFor(TableType)(paged(TableType, makeTable(500)));
419
+ const Tags = SetType(StringType);
420
+ const tags = openBeast2LazyFor(Tags)(paged(Tags, new SortedSet(Array.from({ length: 250 }, (_, i) => `tag-${String(i).padStart(4, "0")}`), compareFor(StringType))));
421
+ for (let i = 0; i < 3; i++) {
422
+ assert.equal(table.minKey(), 0n);
423
+ assert.equal(table.maxKey(), 499n);
424
+ assert.equal(tags.minKey(), "tag-0000");
425
+ assert.equal(tags.maxKey(), "tag-0249");
426
+ }
427
+ // The least is the first fence, probed once; the greatest is the last
428
+ // segment's last, decoded once.
429
+ assert.deepEqual(beast2LazyStats(table), { segments: 5, segmentsDecoded: 1, fencesProbed: 1, hydrated: false, hydratedBytes: 0 });
430
+ assert.deepEqual(beast2LazyStats(tags), { segments: 3, segmentsDecoded: 1, fencesProbed: 1, hydrated: false, hydratedBytes: 0 });
431
+ });
432
+ test("says nothing of a value not opened lazily", () => {
433
+ const blob = paged(TableType, makeTable(10));
434
+ assert.equal(beast2LazyStats(decodeBeast2For(TableType)(blob)), undefined);
435
+ assert.equal(beast2LazyStats(["row-0"]), undefined);
436
+ assert.equal(beast2LazyStats(42n), undefined);
437
+ assert.equal(beast2LazyStats(null), undefined);
438
+ });
345
439
  });
346
440
  describe("Beast2 v5 — negative zero keys", () => {
347
441
  // A plain JS Set or Map reads -0 as 0 and merges the two; every paged read