@elaraai/east 1.0.94 → 1.0.96

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.
@@ -9,13 +9,25 @@
9
9
  * statement after an awaited call read its promise. A decode marks the nodes
10
10
  * that await (`markAsync`) before it compiles them, and a platform function it
11
11
  * was not given is left for a call to miss. Through both containers.
12
+ *
13
+ * And a whole-value decode compiles each body once (#1353): functions of one
14
+ * content under one platform list run one compiled body, each over its own
15
+ * captures, wherever they sit in the stream — the key is the IR's content
16
+ * and the stream's source map, never the IR's bytes, which back-references
17
+ * make depend on where it sits.
12
18
  */
13
19
  import { describe, test } from "node:test";
14
20
  import assert from "node:assert/strict";
15
- import { AsyncFunctionType, BooleanType, FunctionType, IntegerType, NullType, StringType, VariantType } from "../../types.js";
21
+ import { ArrayType, AsyncFunctionType, BooleanType, FunctionType, IntegerType, NullType, StringType, StructType, VariantType } from "../../types.js";
16
22
  import { variant } from "../../containers/variant.js";
17
23
  import { East } from "../../index.js";
24
+ import { EastError } from "../../error.js";
25
+ import { EAST_IR_SYMBOL } from "../../function_symbols.js";
26
+ import { IRType } from "../../ir.js";
27
+ import { equalFor } from "../../comparison.js";
28
+ import { EastTypeValueType, toEastTypeValue } from "../../type_of_type.js";
18
29
  import { decodeBeast2For, encodeBeast2For } from "./index.js";
30
+ import { COMPILED_BODY_LIMIT, compiledBodiesFor } from "./shared.js";
19
31
  const Outcome = VariantType({ ok: StringType, refused: NullType });
20
32
  /** A check the platform makes asynchronously — here, one every name passes. */
21
33
  const check = East.asyncPlatform("decoded_function_check", [StringType], Outcome);
@@ -63,4 +75,126 @@ describe("a decoded function runs as it was built", () => {
63
75
  await assert.rejects(decoded(true, "ada"), { message: /^Platform function 'decoded_function_check' is not available/ });
64
76
  });
65
77
  });
78
+ const Named = FunctionType([], StringType);
79
+ const Key = StructType({ key: StringType });
80
+ /** A maker of closures over a key, as a record Slice's methods are made over a descriptor: one body, many closures. */
81
+ const greeter = East.compile(East.function([Key], Named, (_$, d) => East.function([], StringType, () => East.str `hello ${d.key}`)), []);
82
+ /** The same maker built again: an IR of the very same content, another object. */
83
+ const greeterAgain = East.compile(East.function([Key], Named, (_$, d) => East.function([], StringType, () => East.str `hello ${d.key}`)), []);
84
+ /** A maker of another body. */
85
+ const shouter = East.compile(East.function([Key], Named, (_$, d) => East.function([], StringType, () => East.str `HEY ${d.key}`)), []);
86
+ /** Rows each defining a container of their own, so a body's later places back-reference its first at other distances. */
87
+ const Row = StructType({ fn: Named, tags: ArrayType(StringType) });
88
+ const Rows = ArrayType(Row);
89
+ const makers = [greeter, greeterAgain, shouter];
90
+ const rows = Array.from({ length: 12 }, (_, i) => ({ fn: makers[i % 3]({ key: `k${i}` }), tags: [`k${i}`] }));
91
+ const said = (i) => `${i % 3 === 2 ? "HEY" : "hello"} k${i}`;
92
+ /** Whether `object` is reachable from `root`, by identity. */
93
+ function reaches(root, object, seen = new Set()) {
94
+ if (root === object)
95
+ return true;
96
+ if (root === null || typeof root !== "object" || seen.has(root))
97
+ return false;
98
+ seen.add(root);
99
+ return Object.values(root).some((child) => reaches(child, object, seen));
100
+ }
101
+ /** The error a call raises. */
102
+ function raised(fn) {
103
+ try {
104
+ fn(1n);
105
+ }
106
+ catch (e) {
107
+ if (e instanceof EastError)
108
+ return e;
109
+ throw e;
110
+ }
111
+ throw new Error("expected the call to raise");
112
+ }
113
+ describe("a decode compiles each body once (#1353)", () => {
114
+ test("functions of one content compile it once, wherever they sit in the stream, and a decode again compiles none", () => {
115
+ const platform = [];
116
+ const bodies = compiledBodiesFor(platform);
117
+ const blob = encodeBeast2For(Rows)(rows);
118
+ const decoded = decodeBeast2For(Rows, { platform })(blob);
119
+ assert.equal(bodies.compiled, 2, "the two greeters' content is one body, the shouter's another");
120
+ decoded.forEach((row, i) => assert.equal(row.fn(), said(i), "each runs over its own captures"));
121
+ decodeBeast2For(Rows, { platform })(blob);
122
+ const frozen = decodeBeast2For(Rows, { platform, frozen: true })(blob);
123
+ assert.equal(bodies.compiled, 2, "decoding again, frozen or not, compiles nothing");
124
+ frozen.forEach((row, i) => assert.equal(row.fn(), said(i)));
125
+ });
126
+ test("a decode then an encode gives back the bytes it was read from", () => {
127
+ const blob = encodeBeast2For(Rows)(rows);
128
+ const decoded = decodeBeast2For(Rows, { platform: [] })(blob);
129
+ // Each function keeps the IR it was decoded with, so the two greeters re-encode as the two they were written as.
130
+ assert.deepEqual(Array.from(encodeBeast2For(Rows)(decoded)), Array.from(blob));
131
+ });
132
+ test("an error names the location its own stream gives it: one content under two maps compiles twice", () => {
133
+ const Div = FunctionType([IntegerType], IntegerType);
134
+ const first = East.compile(East.function([IntegerType], IntegerType, (_$, x) => x.divide(0n)), []);
135
+ const second = East.compile(East.function([IntegerType], IntegerType, (_$, x) => x.divide(0n)), []);
136
+ // One content authored on two lines: only the source maps tell them apart.
137
+ const irOf = (fn) => fn[EAST_IR_SYMBOL];
138
+ assert.ok(equalFor(IRType)(irOf(first), irOf(second)), "one content");
139
+ assert.notDeepEqual(raised(first).location, raised(second).location, "two lines");
140
+ const platform = [];
141
+ const decode = decodeBeast2For(Div, { platform });
142
+ const one = decode(encodeBeast2For(Div)(first));
143
+ const two = decode(encodeBeast2For(Div)(second));
144
+ assert.equal(compiledBodiesFor(platform).compiled, 2, "the maps differ, so the bodies do");
145
+ assert.deepEqual(raised(one).location, raised(first).location);
146
+ assert.deepEqual(raised(two).location, raised(second).location);
147
+ });
148
+ test("two platform lists never share a body, and a list that changes compiles again", () => {
149
+ const answer = East.platform("decoded_function_answer", [], IntegerType);
150
+ const Ask = FunctionType([], IntegerType);
151
+ const ask = East.compile(East.function([], IntegerType, () => answer()), [answer.implement(() => 0n)]);
152
+ const blob = encodeBeast2For(Ask)(ask);
153
+ const one = [answer.implement(() => 1n)];
154
+ const two = [answer.implement(() => 2n)];
155
+ assert.equal(decodeBeast2For(Ask, { platform: one })(blob)(), 1n);
156
+ assert.equal(decodeBeast2For(Ask, { platform: two })(blob)(), 2n);
157
+ one[0] = answer.implement(() => 3n);
158
+ assert.equal(decodeBeast2For(Ask, { platform: one })(blob)(), 3n, "the list holds another function now");
159
+ const given = [];
160
+ assert.throws(() => decodeBeast2For(Ask, { platform: given })(blob)(), { message: /^Platform function 'decoded_function_answer' is not available/ });
161
+ given.push(answer.implement(() => 4n));
162
+ assert.equal(decodeBeast2For(Ask, { platform: given })(blob)(), 4n, "a list given the function it lacked");
163
+ });
164
+ test(`at most ${COMPILED_BODY_LIMIT} bodies are kept, the least recently used going first`, () => {
165
+ const Const = FunctionType([], IntegerType);
166
+ const Consts = ArrayType(Const);
167
+ // One build, so every function carries one source map, and the bodies' keys differ by their content alone.
168
+ const consts = East.compile(East.function([], Consts, () => Array.from({ length: COMPILED_BODY_LIMIT + 1 }, (_, i) => East.function([], IntegerType, () => BigInt(i)))), [])();
169
+ const platform = [];
170
+ const bodies = compiledBodiesFor(platform);
171
+ const decode = (fns) => decodeBeast2For(Consts, { platform })(encodeBeast2For(Consts)(fns));
172
+ decode(consts.slice(0, COMPILED_BODY_LIMIT));
173
+ assert.equal(bodies.size, COMPILED_BODY_LIMIT);
174
+ assert.equal(bodies.compiled, COMPILED_BODY_LIMIT);
175
+ assert.equal(decode([consts[0]])[0](), 0n);
176
+ assert.equal(bodies.compiled, COMPILED_BODY_LIMIT, "the first is kept, and used again it is the most recent");
177
+ decode([consts[COMPILED_BODY_LIMIT]]);
178
+ assert.equal(bodies.size, COMPILED_BODY_LIMIT, "one more, and the least recently used goes");
179
+ assert.equal(bodies.compiled, COMPILED_BODY_LIMIT + 1);
180
+ decode([consts[0]]);
181
+ assert.equal(bodies.compiled, COMPILED_BODY_LIMIT + 1, "the first, used since, stays");
182
+ assert.equal(decode([consts[1]])[0](), 1n);
183
+ assert.equal(bodies.compiled, COMPILED_BODY_LIMIT + 2, "the second, the least recently used, went");
184
+ });
185
+ test("a function whose IR back-references a container no function's IR defined compiles on its own", () => {
186
+ const Point = StructType({ x: IntegerType, y: IntegerType });
187
+ const Holder = StructType({ schema: EastTypeValueType, fn: FunctionType([Point], IntegerType) });
188
+ const getX = East.compile(East.function([Point], IntegerType, (_$, p) => p.x), []);
189
+ const platform = [];
190
+ const decode = decodeBeast2For(Holder, { platform });
191
+ // The schema is written first, and the IR's types are its very objects, so the IR back-references the schema's.
192
+ const blob = encodeBeast2For(Holder)({ schema: toEastTypeValue(Point), fn: getX });
193
+ const held = decode(blob);
194
+ assert.ok(reaches(held.fn[EAST_IR_SYMBOL], held.schema.value), "the IR holds the schema's own fields");
195
+ assert.equal(held.fn({ x: 7n, y: 1n }), 7n);
196
+ assert.equal(decode(blob).fn({ x: 8n, y: 1n }), 8n);
197
+ assert.equal(compiledBodiesFor(platform).compiled, 0, "neither decode keeps it");
198
+ });
199
+ });
66
200
  //# sourceMappingURL=decoded-function.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"decoded-function.spec.js","sourceRoot":"","sources":["../../../../src/serialization/beast2/decoded-function.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decoded-function.spec.js","sourceRoot":"","sources":["../../../../src/serialization/beast2/decoded-function.spec.ts"],"names":[],"mappings":"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"}
@@ -82,12 +82,72 @@ export declare function fnv1a64(bytes: Uint8Array): bigint;
82
82
  * @returns a single-line, length-bounded description
83
83
  */
84
84
  export declare function describeNoIrValue(value: unknown): string;
85
+ /** At most this many compiled bodies are kept per platform list, the least
86
+ * recently used going first: the print works Plan's payload compiles 552,
87
+ * the operations Calendar's 352 (#1353). */
88
+ export declare const COMPILED_BODY_LIMIT = 4096;
89
+ /**
90
+ * The bodies compiled against one platform list, by their functions' content
91
+ * key (#1353): a decoded function whose key is here runs the body already
92
+ * compiled, over its own captures, so a payload holding a body at many places
93
+ * compiles it once, and decoding it again compiles nothing.
94
+ *
95
+ * @remarks
96
+ * A compiled body is the closure tree the compiler builds from an IR. It
97
+ * takes its variables when it runs, a literal it returns is a primitive, and
98
+ * it binds the platform's functions as it compiles — so one body serves every
99
+ * function of its content under one platform list, and a changed list compiles
100
+ * again ({@link compiledBodiesFor}).
101
+ *
102
+ * @internal
103
+ */
104
+ export declare class CompiledBodies {
105
+ /** The bodies by content key, the least recently used first. */
106
+ private readonly bodies;
107
+ /** The list's entries these compiled against, in order. */
108
+ private readonly entries;
109
+ private compiles;
110
+ /** @param platform - the platform list the bodies compile against */
111
+ constructor(platform: readonly PlatformFunction[]);
112
+ /**
113
+ * Whether `platform` holds the entries these bodies compiled against.
114
+ *
115
+ * @param platform - the list a decode was given
116
+ * @returns whether it holds the same platform functions, in order
117
+ */
118
+ compiledAgainst(platform: readonly PlatformFunction[]): boolean;
119
+ /**
120
+ * The body of the functions of content `key`, compiled the first time it is
121
+ * asked for.
122
+ *
123
+ * @param key - the functions' content key
124
+ * @param compile - compiles the body
125
+ * @returns the compiled body
126
+ */
127
+ bodyFor(key: string, compile: () => (ctx: RuntimeContext) => any): (ctx: RuntimeContext) => any;
128
+ /** How many bodies are kept. */
129
+ get size(): number;
130
+ /** How many bodies have been compiled. */
131
+ get compiled(): number;
132
+ }
133
+ /**
134
+ * The bodies compiled against a platform list: kept with the list, and started
135
+ * afresh once the list holds other functions.
136
+ *
137
+ * @param platform - the list a decode was given
138
+ * @returns its compiled bodies
139
+ * @internal
140
+ */
141
+ export declare function compiledBodiesFor(platform: readonly PlatformFunction[]): CompiledBodies;
85
142
  /** Platform bindings threaded through a decode pass, pre-resolved from
86
143
  * {@link Beast2DecodeOptions} so per-function compiles don't re-derive them. */
87
144
  export interface PlatformDecodeContext {
88
145
  platform: PlatformFunction[];
89
146
  platformFns: Record<string, any>;
90
147
  asyncPlatformFns: Set<string>;
148
+ /** The bodies compiled against `platform`, which a keyed function compiles once into (#1353); found
149
+ * when the decode meets its first keyed function, so a decode of data pays nothing for them. */
150
+ compiled?: CompiledBodies;
91
151
  }
92
152
  /**
93
153
  * Resolves decode options into the platform bindings used when compiling
@@ -113,13 +173,20 @@ export declare function buildPlatformContext(options?: Beast2DecodeOptions): Pla
113
173
  * decode was not given is stubbed by the compiler, so the value decodes
114
174
  * wherever it is read, and only a call needs the platform.
115
175
  *
116
- * @param ir - the decoded Function or AsyncFunction IR, whose nodes are marked in place
176
+ * A function with a content key runs the body compiled for its key under the
177
+ * decode's platform list, compiling it only the first time (#1353,
178
+ * {@link CompiledBodies}). It keeps the IR it was decoded with, unmarked when
179
+ * its body was compiled before: that IR is what it re-encodes and compares as,
180
+ * so a decode then an encode gives back the bytes it was read from.
181
+ *
182
+ * @param ir - the decoded Function or AsyncFunction IR, whose nodes are marked in place when it compiles
117
183
  * @param isAsync - whether the declared type is AsyncFunction
118
184
  * @param captureContext - decoded capture values keyed by capture name
119
185
  * @param typeContext - capture types keyed by capture name
120
186
  * @param platformCtx - pre-resolved platform bindings
121
187
  * @param sourceMap - the source map to attach, if the blob carried one
188
+ * @param key - the function's content key: its IR's and its stream's source map's, when the codec keys it
122
189
  * @returns the compiled callable with re-serialization symbols attached
123
190
  */
124
- export declare function finishDecodedFunction(ir: FunctionIR | AsyncFunctionIR, isAsync: boolean, captureContext: RuntimeContext, typeContext: Record<string, EastTypeValue>, platformCtx: PlatformDecodeContext, sourceMap: SourceMap | null): (...inputs: any[]) => any;
191
+ export declare function finishDecodedFunction(ir: FunctionIR | AsyncFunctionIR, isAsync: boolean, captureContext: RuntimeContext, typeContext: Record<string, EastTypeValue>, platformCtx: PlatformDecodeContext, sourceMap: SourceMap | null, key?: string): (...inputs: any[]) => any;
125
192
  //# sourceMappingURL=shared.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/serialization/beast2/shared.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AAEH,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE5E,OAAO,EAAmG,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAExJ,OAAO,EAAU,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAG5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAmB,MAAM,mBAAmB,CAAC;AAE/D,2DAA2D;AAC3D,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC9B;;;;;+BAK2B;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;6DAC6D;AAC7D,eAAO,MAAM,WAAW,eAA0B,CAAC;AAOnD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI,CAQ/E;AAgFD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAUjD;AAKD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAqBxD;AAED;iFACiF;AACjF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,qBAAqB,CAOzF;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,UAAU,GAAG,eAAe,EAChC,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAC1C,WAAW,EAAE,qBAAqB,EAClC,SAAS,EAAE,SAAS,GAAG,IAAI,GAC1B,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,KAAK,GAAG,CA+B3B"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/serialization/beast2/shared.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AAEH,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE5E,OAAO,EAAmG,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAExJ,OAAO,EAAU,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAG5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAmB,MAAM,mBAAmB,CAAC;AAE/D,2DAA2D;AAC3D,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC9B;;;;;+BAK2B;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;6DAC6D;AAC7D,eAAO,MAAM,WAAW,eAA0B,CAAC;AAOnD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI,CAQ/E;AAgFD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAUjD;AAKD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAqBxD;AAMD;;6CAE6C;AAC7C,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC;;;;;;;;;;;;;;GAcG;AACH,qBAAa,cAAc;IACzB,gEAAgE;IAChE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmD;IAC1E,2DAA2D;IAC3D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAK;IAErB,qEAAqE;gBACzD,QAAQ,EAAE,SAAS,gBAAgB,EAAE;IAIjD;;;;;OAKG;IACH,eAAe,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,GAAG,OAAO;IAQ/D;;;;;;;OAOG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,cAAc,KAAK,GAAG,GAAG,CAAC,GAAG,EAAE,cAAc,KAAK,GAAG;IAc/F,gCAAgC;IAChC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,0CAA0C;IAC1C,IAAI,QAAQ,IAAI,MAAM,CAErB;CACF;AAKD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,GAAG,cAAc,CAMvF;AAED;iFACiF;AACjF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B;qGACiG;IACjG,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,qBAAqB,CAOzF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,UAAU,GAAG,eAAe,EAChC,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAC1C,WAAW,EAAE,qBAAqB,EAClC,SAAS,EAAE,SAAS,GAAG,IAAI,EAC3B,GAAG,CAAC,EAAE,MAAM,GACX,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,KAAK,GAAG,CAmC3B"}
@@ -204,6 +204,102 @@ export function describeNoIrValue(value) {
204
204
  }
205
205
  return parts.join(" ");
206
206
  }
207
+ /** The platform list of a decode given none: one list, so that such decodes
208
+ * share their compiled bodies ({@link CompiledBodies}). */
209
+ const NO_PLATFORM = Object.freeze([]);
210
+ /** At most this many compiled bodies are kept per platform list, the least
211
+ * recently used going first: the print works Plan's payload compiles 552,
212
+ * the operations Calendar's 352 (#1353). */
213
+ export const COMPILED_BODY_LIMIT = 4096;
214
+ /**
215
+ * The bodies compiled against one platform list, by their functions' content
216
+ * key (#1353): a decoded function whose key is here runs the body already
217
+ * compiled, over its own captures, so a payload holding a body at many places
218
+ * compiles it once, and decoding it again compiles nothing.
219
+ *
220
+ * @remarks
221
+ * A compiled body is the closure tree the compiler builds from an IR. It
222
+ * takes its variables when it runs, a literal it returns is a primitive, and
223
+ * it binds the platform's functions as it compiles — so one body serves every
224
+ * function of its content under one platform list, and a changed list compiles
225
+ * again ({@link compiledBodiesFor}).
226
+ *
227
+ * @internal
228
+ */
229
+ export class CompiledBodies {
230
+ /** The bodies by content key, the least recently used first. */
231
+ bodies = new Map();
232
+ /** The list's entries these compiled against, in order. */
233
+ entries;
234
+ compiles = 0;
235
+ /** @param platform - the platform list the bodies compile against */
236
+ constructor(platform) {
237
+ this.entries = [...platform];
238
+ }
239
+ /**
240
+ * Whether `platform` holds the entries these bodies compiled against.
241
+ *
242
+ * @param platform - the list a decode was given
243
+ * @returns whether it holds the same platform functions, in order
244
+ */
245
+ compiledAgainst(platform) {
246
+ if (platform.length !== this.entries.length)
247
+ return false;
248
+ for (let i = 0; i < platform.length; i++) {
249
+ if (platform[i] !== this.entries[i])
250
+ return false;
251
+ }
252
+ return true;
253
+ }
254
+ /**
255
+ * The body of the functions of content `key`, compiled the first time it is
256
+ * asked for.
257
+ *
258
+ * @param key - the functions' content key
259
+ * @param compile - compiles the body
260
+ * @returns the compiled body
261
+ */
262
+ bodyFor(key, compile) {
263
+ const held = this.bodies.get(key);
264
+ if (held !== undefined) {
265
+ this.bodies.delete(key);
266
+ this.bodies.set(key, held);
267
+ return held;
268
+ }
269
+ const body = compile();
270
+ this.compiles++;
271
+ this.bodies.set(key, body);
272
+ if (this.bodies.size > COMPILED_BODY_LIMIT)
273
+ this.bodies.delete(this.bodies.keys().next().value);
274
+ return body;
275
+ }
276
+ /** How many bodies are kept. */
277
+ get size() {
278
+ return this.bodies.size;
279
+ }
280
+ /** How many bodies have been compiled. */
281
+ get compiled() {
282
+ return this.compiles;
283
+ }
284
+ }
285
+ /** The compiled bodies of each platform list, while the list lives. */
286
+ const compiledBodiesOf = new WeakMap();
287
+ /**
288
+ * The bodies compiled against a platform list: kept with the list, and started
289
+ * afresh once the list holds other functions.
290
+ *
291
+ * @param platform - the list a decode was given
292
+ * @returns its compiled bodies
293
+ * @internal
294
+ */
295
+ export function compiledBodiesFor(platform) {
296
+ const held = compiledBodiesOf.get(platform);
297
+ if (held !== undefined && held.compiledAgainst(platform))
298
+ return held;
299
+ const fresh = new CompiledBodies(platform);
300
+ compiledBodiesOf.set(platform, fresh);
301
+ return fresh;
302
+ }
207
303
  /**
208
304
  * Resolves decode options into the platform bindings used when compiling
209
305
  * decoded functions.
@@ -212,7 +308,7 @@ export function describeNoIrValue(value) {
212
308
  * @returns the pre-resolved platform context
213
309
  */
214
310
  export function buildPlatformContext(options) {
215
- const platform = options?.platform ?? [];
311
+ const platform = options?.platform ?? NO_PLATFORM;
216
312
  return {
217
313
  platform,
218
314
  platformFns: Object.fromEntries(platform.map(fn => [fn.name, fn.fn])),
@@ -235,24 +331,35 @@ export function buildPlatformContext(options) {
235
331
  * decode was not given is stubbed by the compiler, so the value decodes
236
332
  * wherever it is read, and only a call needs the platform.
237
333
  *
238
- * @param ir - the decoded Function or AsyncFunction IR, whose nodes are marked in place
334
+ * A function with a content key runs the body compiled for its key under the
335
+ * decode's platform list, compiling it only the first time (#1353,
336
+ * {@link CompiledBodies}). It keeps the IR it was decoded with, unmarked when
337
+ * its body was compiled before: that IR is what it re-encodes and compares as,
338
+ * so a decode then an encode gives back the bytes it was read from.
339
+ *
340
+ * @param ir - the decoded Function or AsyncFunction IR, whose nodes are marked in place when it compiles
239
341
  * @param isAsync - whether the declared type is AsyncFunction
240
342
  * @param captureContext - decoded capture values keyed by capture name
241
343
  * @param typeContext - capture types keyed by capture name
242
344
  * @param platformCtx - pre-resolved platform bindings
243
345
  * @param sourceMap - the source map to attach, if the blob carried one
346
+ * @param key - the function's content key: its IR's and its stream's source map's, when the codec keys it
244
347
  * @returns the compiled callable with re-serialization symbols attached
245
348
  */
246
- export function finishDecodedFunction(ir, isAsync, captureContext, typeContext, platformCtx, sourceMap) {
247
- markAsync(ir, platformCtx.asyncPlatformFns);
248
- // The compile snapshots the AMBIENT source map (compile_internal's
249
- // fresh_ctx), so it must run under the map the blob carried: that is the
250
- // map the IR's loc_ids index, and the only one that makes a runtime error
251
- // inside the decoded function name its authoring site. Outside a scope the
252
- // ambient map is null — or, decoding inside a build, that build's map,
253
- // against which the blob's ids mean nothing. A blob without a map compiles
254
- // under an empty one for the same reason (#626).
255
- const compiled = with_source_map(sourceMap ?? new SourceMap(), () => compile_internal(ir, typeContext, platformCtx.platformFns, platformCtx.asyncPlatformFns, platformCtx.platform, true, EMPTY_SET));
349
+ export function finishDecodedFunction(ir, isAsync, captureContext, typeContext, platformCtx, sourceMap, key) {
350
+ const compile = () => {
351
+ markAsync(ir, platformCtx.asyncPlatformFns);
352
+ // The compile snapshots the AMBIENT source map (compile_internal's
353
+ // fresh_ctx), so it must run under the map the blob carried: that is the
354
+ // map the IR's loc_ids index, and the only one that makes a runtime error
355
+ // inside the decoded function name its authoring site. Outside a scope the
356
+ // ambient map is null — or, decoding inside a build, that build's map,
357
+ // against which the blob's ids mean nothing. A blob without a map compiles
358
+ // under an empty one for the same reason (#626). A key holds the map, so a
359
+ // body compiled under one serves only functions read under its like.
360
+ return with_source_map(sourceMap ?? new SourceMap(), () => compile_internal(ir, typeContext, platformCtx.platformFns, platformCtx.asyncPlatformFns, platformCtx.platform, true, EMPTY_SET));
361
+ };
362
+ const compiled = key === undefined ? compile() : (platformCtx.compiled ??= compiledBodiesFor(platformCtx.platform)).bodyFor(key, compile);
256
363
  const rawFn = compiled(captureContext);
257
364
  const fn = isAsync
258
365
  ? async (...inputs) => {
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/serialization/beast2/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/serialization/beast2/shared.ts"],"names":[],"mappings":"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"}