@scriptc/compiler 0.0.10 → 0.0.11
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/ambient/scriptc-node-fallback.d.ts +54 -9
- package/dist/backend/emission/emit-exprs.js +34 -2
- package/dist/backend/emission/emit-exprs.js.map +1 -1
- package/dist/backend/emission/emitter.js +25 -1
- package/dist/backend/emission/emitter.js.map +1 -1
- package/dist/backend/llvm/emitter.js +59 -4
- package/dist/backend/llvm/emitter.js.map +1 -1
- package/dist/coverage/surface-manifest.js +16 -2
- package/dist/coverage/surface-manifest.js.map +1 -1
- package/dist/diagnostics/diagnostic.d.ts +20 -7
- package/dist/diagnostics/diagnostic.js +44 -11
- package/dist/diagnostics/diagnostic.js.map +1 -1
- package/dist/frontend/lowering/lower-builtins.d.ts +56 -0
- package/dist/frontend/lowering/lower-builtins.js +235 -4
- package/dist/frontend/lowering/lower-builtins.js.map +1 -1
- package/dist/frontend/lowering/lower-calls.js +38 -4
- package/dist/frontend/lowering/lower-calls.js.map +1 -1
- package/dist/frontend/lowering/lower-classes.d.ts +7 -0
- package/dist/frontend/lowering/lower-classes.js +51 -1
- package/dist/frontend/lowering/lower-classes.js.map +1 -1
- package/dist/frontend/lowering/lower-containers.d.ts +4 -0
- package/dist/frontend/lowering/lower-containers.js +69 -7
- package/dist/frontend/lowering/lower-containers.js.map +1 -1
- package/dist/frontend/lowering/lower-emitter.d.ts +70 -3
- package/dist/frontend/lowering/lower-emitter.js +436 -29
- package/dist/frontend/lowering/lower-emitter.js.map +1 -1
- package/dist/frontend/lowering/lower-exprs.d.ts +80 -5
- package/dist/frontend/lowering/lower-exprs.js +472 -13
- package/dist/frontend/lowering/lower-exprs.js.map +1 -1
- package/dist/frontend/lowering/lower-modules.d.ts +8 -5
- package/dist/frontend/lowering/lower-modules.js +141 -47
- package/dist/frontend/lowering/lower-modules.js.map +1 -1
- package/dist/frontend/lowering/lower-namespaces.d.ts +14 -0
- package/dist/frontend/lowering/lower-namespaces.js +122 -15
- package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
- package/dist/frontend/lowering/lower-stmts.js +80 -6
- package/dist/frontend/lowering/lower-stmts.js.map +1 -1
- package/dist/frontend/lowering/lower-stream.js +113 -6
- package/dist/frontend/lowering/lower-stream.js.map +1 -1
- package/dist/frontend/lowering/lowerer.d.ts +17 -0
- package/dist/frontend/lowering/lowerer.js +105 -17
- package/dist/frontend/lowering/lowerer.js.map +1 -1
- package/dist/frontend/lowering/surfaces.d.ts +44 -0
- package/dist/frontend/lowering/surfaces.js +234 -3
- package/dist/frontend/lowering/surfaces.js.map +1 -1
- package/dist/frontend/npm.d.ts +12 -0
- package/dist/frontend/npm.js +30 -0
- package/dist/frontend/npm.js.map +1 -1
- package/dist/frontend/program.d.ts +25 -0
- package/dist/frontend/program.js +144 -135
- package/dist/frontend/program.js.map +1 -1
- package/dist/frontend/shared.d.ts +1 -1
- package/dist/frontend/shared.js +1 -1
- package/dist/frontend/shared.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +137 -4
- package/dist/index.js.map +1 -1
- package/dist/ir/nodes.d.ts +64 -8
- package/dist/ir/nodes.js +21 -3
- package/dist/ir/nodes.js.map +1 -1
- package/dist/ir/validate.js +11 -2
- package/dist/ir/validate.js.map +1 -1
- package/dist/library/fence-eval.js +12 -2
- package/dist/library/fence-eval.js.map +1 -1
- package/dist/library/int-infer.d.ts +119 -0
- package/dist/library/int-infer.js +1301 -0
- package/dist/library/int-infer.js.map +1 -0
- package/dist/library/int-infer.test.d.ts +1 -0
- package/dist/library/int-infer.test.js +279 -0
- package/dist/library/int-infer.test.js.map +1 -0
- package/dist/library/profile.d.ts +32 -5
- package/dist/library/profile.js +77 -13
- package/dist/library/profile.js.map +1 -1
- package/dist/library/sidecar.d.ts +23 -0
- package/dist/library/sidecar.js +150 -16
- package/dist/library/sidecar.js.map +1 -1
- package/package.json +2 -2
- package/surface-manifest.json +208 -10
package/dist/library/profile.js
CHANGED
|
@@ -78,22 +78,40 @@
|
|
|
78
78
|
* getters are pure data returns exempt from the poisoned guard and every
|
|
79
79
|
* runtime touch (ratified): callable before init and after a trap.
|
|
80
80
|
*
|
|
81
|
-
* Marshalling classes (design §4.2 + session ruling 3): f64, bool,
|
|
82
|
-
* bytes for params and returns; u8/u32/i32 are PARAM-ONLY plumbing
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
81
|
+
* Marshalling classes (design §4.2 + session ruling 3 + ask 4): f64, bool,
|
|
82
|
+
* string, bytes for params and returns; u8/u32/i32 are PARAM-ONLY plumbing
|
|
83
|
+
* classes; i64/u64 are ask-4's declared integer boundary classes (params:
|
|
84
|
+
* wrapper range-check inbound, compile-time proof at internal call sites;
|
|
85
|
+
* returns: prove-or-refuse over every value reaching them); void is
|
|
86
|
+
* return-only. Unknown fields are refused at EVERY level the loader reads
|
|
87
|
+
* — the root included (the anti-inert posture: profiles pin per compiler
|
|
88
|
+
* release, so an unknown root key is a typo or a misplaced section, never
|
|
89
|
+
* forward-compat surface; the ask-5 key names at the root refuse with a
|
|
90
|
+
* pointer to their `determinism.*` home, since a silently inert `fences`
|
|
91
|
+
* array is exactly the footgun the fence machinery refuses everywhere
|
|
92
|
+
* else). Only the INTERIOR of `determinism` keeps a reserved-and-ignored
|
|
93
|
+
* surface beyond the three ask-5 keys. */
|
|
88
94
|
import { readFileSync } from "node:fs";
|
|
89
95
|
import { dirname, isAbsolute, resolve } from "node:path";
|
|
90
96
|
import { libProfileDiag } from "../diagnostics/diagnostic.js";
|
|
91
97
|
import { resolveLibraryFences } from "./fence-eval.js";
|
|
92
|
-
/** Marshalling classes legal in PARAMETER position
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
*
|
|
96
|
-
|
|
98
|
+
/** Marshalling classes legal in PARAMETER position: the v1 classes plus
|
|
99
|
+
* ask 4's declared integer boundary classes. An i64/u64 PARAMETER is an
|
|
100
|
+
* FFI edge contract on both sides: inbound host calls range-check in the
|
|
101
|
+
* marshalled wrapper (values past ±(2^53−1) cannot ride f64 exactly — the
|
|
102
|
+
* SC4012 host-contract trap), and internal call sites must PROVE the
|
|
103
|
+
* argument whole-in-range at compile time (library/int-infer.ts). */
|
|
104
|
+
export const LIB_PARAM_CLASSES = ["f64", "bool", "string", "bytes", "u8", "u32", "i32", "i64", "u64"];
|
|
105
|
+
/** Marshalling classes legal in RETURN position: the value classes, void,
|
|
106
|
+
* and ask 4's i64/u64 — an integer RETURN compiles only when every value
|
|
107
|
+
* reaching it is PROVEN whole and in range (prove-or-refuse; the wrapper's
|
|
108
|
+
* (int64_t)/(uint64_t) conversion is then exact by construction). The
|
|
109
|
+
* u8/u32/i32 plumbing classes stay param-only: they were ratified as
|
|
110
|
+
* inbound plumbing, and outbound integers are the proven classes'
|
|
111
|
+
* business. */
|
|
112
|
+
export const LIB_RETURN_CLASSES = ["f64", "bool", "string", "bytes", "void", "i64", "u64"];
|
|
113
|
+
/** Ask 4's declared integer classes (the prove-or-refuse pair). */
|
|
114
|
+
export const LIB_INT_CLASSES = ["i64", "u64"];
|
|
97
115
|
const C_IDENT = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
98
116
|
class ProfileError extends Error {
|
|
99
117
|
detail;
|
|
@@ -155,6 +173,19 @@ export function loadLibraryProfile(profilePath) {
|
|
|
155
173
|
const format = req(p["profile_format"], "profile_format", "number");
|
|
156
174
|
if (format !== 1)
|
|
157
175
|
throw new ProfileError(`unsupported profile_format ${format} (this scriptc reads format 1)`);
|
|
176
|
+
// Root keys are strict (checked AFTER the format gate, so a future
|
|
177
|
+
// format's profile refuses as the wrong format, not as a typo). The
|
|
178
|
+
// ask-5 key names get the pointed message: a `fences` array pasted at
|
|
179
|
+
// the root would otherwise be silently inert — the exact footgun the
|
|
180
|
+
// fence machinery refuses everywhere else.
|
|
181
|
+
for (const k of Object.keys(p)) {
|
|
182
|
+
if (["profile_format", "name", "entry", "emission", "abi", "exports", "sidecar", "determinism"].includes(k))
|
|
183
|
+
continue;
|
|
184
|
+
if (k === "fences" || k === "teachings" || k === "remediations") {
|
|
185
|
+
throw new ProfileError(`'${k}' at the profile root does nothing — the ask-5 determinism surface lives under 'determinism.${k}'; move it there`);
|
|
186
|
+
}
|
|
187
|
+
throw new ProfileError(`unknown field '${k}' (root keys are strict: a typo here would silently change the build; remove it)`);
|
|
188
|
+
}
|
|
158
189
|
const name = req(p["name"], "name", "string");
|
|
159
190
|
if (name === "")
|
|
160
191
|
throw new ProfileError("'name' must be a non-empty identity string");
|
|
@@ -206,7 +237,7 @@ export function loadLibraryProfile(profilePath) {
|
|
|
206
237
|
const returns = req(ee["returns"], `${path}.returns`, "string");
|
|
207
238
|
if (!LIB_RETURN_CLASSES.includes(returns)) {
|
|
208
239
|
const detail = returns === "u8" || returns === "u32" || returns === "i32"
|
|
209
|
-
? `'${path}.returns':
|
|
240
|
+
? `'${path}.returns': the u8/u32/i32 plumbing classes are parameter-only — an outbound integer return is declared i64 or u64 and compiles only when every value reaching it proves whole and in ±(2^53 − 1) (ask 4's prove-or-refuse)`
|
|
210
241
|
: `'${path}.returns' must be one of ${LIB_RETURN_CLASSES.join("/")}, got '${returns}'`;
|
|
211
242
|
throw new ProfileError(detail);
|
|
212
243
|
}
|
|
@@ -224,6 +255,7 @@ export function loadLibraryProfile(profilePath) {
|
|
|
224
255
|
"path", "wire_version", "abi_version", "snapshot_format",
|
|
225
256
|
"build_id_symbol", "abi_version_symbol", "model", "msg",
|
|
226
257
|
"init_export", "update_export", "subscriptions_export", "source_hash",
|
|
258
|
+
"integer_slots",
|
|
227
259
|
]);
|
|
228
260
|
const s = sc;
|
|
229
261
|
const intField = (key) => {
|
|
@@ -255,6 +287,37 @@ export function loadLibraryProfile(profilePath) {
|
|
|
255
287
|
if (sourceHash !== "module-graph") {
|
|
256
288
|
throw new ProfileError(`'sidecar.source_hash' names an unknown hashing contract '${sourceHash}' (this scriptc implements "module-graph")`);
|
|
257
289
|
}
|
|
290
|
+
// Ask 4's declared integer boundary slots: each entry names a
|
|
291
|
+
// contract slot by its sidecar path and picks the integer class.
|
|
292
|
+
// Path RESOLUTION happens at sidecar build (the contract must
|
|
293
|
+
// exist first); here the shape is pinned — a typo'd key or class
|
|
294
|
+
// would silently change an ABI obligation.
|
|
295
|
+
const integerSlots = [];
|
|
296
|
+
const isRaw = s["integer_slots"];
|
|
297
|
+
if (isRaw !== undefined && isRaw !== null) {
|
|
298
|
+
if (!Array.isArray(isRaw))
|
|
299
|
+
throw new ProfileError("'sidecar.integer_slots' must be an array");
|
|
300
|
+
const seenSlots = new Set();
|
|
301
|
+
isRaw.forEach((entry, i) => {
|
|
302
|
+
const epath = `sidecar.integer_slots[${i}]`;
|
|
303
|
+
if (entry === null || typeof entry !== "object" || Array.isArray(entry)) {
|
|
304
|
+
throw new ProfileError(`'${epath}' must be an object`);
|
|
305
|
+
}
|
|
306
|
+
rejectUnknownKeys(entry, epath, ["slot", "class"]);
|
|
307
|
+
const ee2 = entry;
|
|
308
|
+
const slot = req(ee2["slot"], `${epath}.slot`, "string");
|
|
309
|
+
if (slot === "")
|
|
310
|
+
throw new ProfileError(`'${epath}.slot' must be a non-empty slot path`);
|
|
311
|
+
const cls = req(ee2["class"], `${epath}.class`, "string");
|
|
312
|
+
if (cls !== "i64" && cls !== "u64") {
|
|
313
|
+
throw new ProfileError(`'${epath}.class' must be "i64" or "u64", got '${cls}'`);
|
|
314
|
+
}
|
|
315
|
+
if (seenSlots.has(slot))
|
|
316
|
+
throw new ProfileError(`'${epath}.slot' repeats slot path '${slot}'`);
|
|
317
|
+
seenSlots.add(slot);
|
|
318
|
+
integerSlots.push({ slot, cls });
|
|
319
|
+
});
|
|
320
|
+
}
|
|
258
321
|
sidecar = {
|
|
259
322
|
path,
|
|
260
323
|
wireVersion: intField("wire_version"),
|
|
@@ -268,6 +331,7 @@ export function loadLibraryProfile(profilePath) {
|
|
|
268
331
|
updateExport: nameField("update_export", "update"),
|
|
269
332
|
subscriptionsExport: nameField("subscriptions_export", "subscriptions"),
|
|
270
333
|
sourceHash: "module-graph",
|
|
334
|
+
integerSlots,
|
|
271
335
|
};
|
|
272
336
|
if (sidecar.model === sidecar.msg) {
|
|
273
337
|
throw new ProfileError(`'sidecar.msg' must differ from 'sidecar.model' ('${sidecar.model}')`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/library/profile.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/library/profile.ts"],"names":[],"mappings":"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"}
|
|
@@ -180,10 +180,33 @@ export interface SidecarBuildInput {
|
|
|
180
180
|
sourceHash: string;
|
|
181
181
|
deterministic: boolean;
|
|
182
182
|
}
|
|
183
|
+
/** The declared integer slots (ask 4), resolved by the projection into
|
|
184
|
+
* the facts the boundary inference maps onto lowered IR: helper slots by
|
|
185
|
+
* function name and IR parameter index (the schema's helper param index
|
|
186
|
+
* skips the model receiver, so `index` is already shifted +1), and
|
|
187
|
+
* record-field slots by the containing record's projected field-name
|
|
188
|
+
* list plus the target field (IR record shapes intern structurally by
|
|
189
|
+
* field name, so the list is the join key). */
|
|
190
|
+
export interface SidecarIntegerSlotFacts {
|
|
191
|
+
helpers: {
|
|
192
|
+
fnName: string;
|
|
193
|
+
kind: "param" | "return";
|
|
194
|
+
index?: number;
|
|
195
|
+
cls: "i64" | "u64";
|
|
196
|
+
path: string;
|
|
197
|
+
}[];
|
|
198
|
+
records: {
|
|
199
|
+
fieldNames: string[];
|
|
200
|
+
targetField: string;
|
|
201
|
+
cls: "i64" | "u64";
|
|
202
|
+
path: string;
|
|
203
|
+
}[];
|
|
204
|
+
}
|
|
183
205
|
export type SidecarBuildResult = {
|
|
184
206
|
ok: true;
|
|
185
207
|
doc: SidecarDoc;
|
|
186
208
|
json: string;
|
|
209
|
+
integerSlotFacts: SidecarIntegerSlotFacts;
|
|
187
210
|
} | {
|
|
188
211
|
ok: false;
|
|
189
212
|
diagnostics: ScrDiagnostic[];
|
package/dist/library/sidecar.js
CHANGED
|
@@ -28,10 +28,18 @@
|
|
|
28
28
|
* table derives from the aliased declaration, the alias adds no entry
|
|
29
29
|
* and no reordering.
|
|
30
30
|
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
31
|
+
* Integer slots (ask 4): the profile's `sidecar.integer_slots` declares
|
|
32
|
+
* specific number slots i64/u64 by slot path; the projection spells each
|
|
33
|
+
* declared slot's TypeRef/descriptor `i64` (the frozen format-1
|
|
34
|
+
* vocabulary — u64 is the stricter compile-time obligation over the same
|
|
35
|
+
* wire spelling), refuses paths that resolve to no plain number slot,
|
|
36
|
+
* and emits `integer_slots` as the resolved-decision list, in profile
|
|
37
|
+
* declaration order. The list is an ATTESTATION (schema §5's invariant):
|
|
38
|
+
* compileLibrary runs the integer-boundary inference before writing any
|
|
39
|
+
* artifact, so a sidecar carrying an entry means every value that can
|
|
40
|
+
* reach that slot proved whole-in-range. Undeclared numeric slots keep
|
|
41
|
+
* spelling `f64` and the empty list stays a valid attestation that no
|
|
42
|
+
* slot was integer-classed. `deterministic` is computed from the module
|
|
35
43
|
* graph (ir/nodes.ts's conservative ambient-surface scan), never
|
|
36
44
|
* defaulted. */
|
|
37
45
|
import { Buffer } from "node:buffer";
|
|
@@ -183,6 +191,16 @@ class Projector {
|
|
|
183
191
|
flatArms = new Map();
|
|
184
192
|
flattening = new Set();
|
|
185
193
|
synthCounter = 0;
|
|
194
|
+
/** The profile's declared integer slots (ask 4), by slot path; entries
|
|
195
|
+
* move to `intConsumed` as the projection spells them — a declared path
|
|
196
|
+
* the projection never touches refuses (a typo'd path would silently
|
|
197
|
+
* drop an ABI obligation). */
|
|
198
|
+
intDeclared = new Map();
|
|
199
|
+
intConsumed = new Map();
|
|
200
|
+
/** The record-field slots' resolution facts for the inference: the
|
|
201
|
+
* containing record's full projected field-name list plus the target
|
|
202
|
+
* field (ir shapes intern structurally by field names). */
|
|
203
|
+
intRecordFacts = [];
|
|
186
204
|
constructor(facts, config, entryLoc) {
|
|
187
205
|
this.facts = facts;
|
|
188
206
|
this.config = config;
|
|
@@ -192,6 +210,50 @@ class Projector {
|
|
|
192
210
|
facts.types.forEach((decl, index) => this.byName.set(decl.name, classify(decl, index)));
|
|
193
211
|
for (const m of facts.multiSiteTypes)
|
|
194
212
|
this.multiSite.set(m.name, m.sites);
|
|
213
|
+
for (const e of config.integerSlots)
|
|
214
|
+
this.intDeclared.set(e.slot, e.cls);
|
|
215
|
+
}
|
|
216
|
+
/** Spell a projected slot i64 when the profile declared it (ask 4).
|
|
217
|
+
* Only a PLAIN NUMBER slot can be integer-declared: optionals, slices,
|
|
218
|
+
* and named types refuse — the declaration must match the wire shape
|
|
219
|
+
* the schema freezes. The document spells i64 for both classes (the
|
|
220
|
+
* frozen format-1 vocabulary has no u64; u64 is the stricter
|
|
221
|
+
* compile-time obligation over the same wire spelling). */
|
|
222
|
+
intify(ref, slotPath, loc) {
|
|
223
|
+
const cls = this.intDeclared.get(slotPath);
|
|
224
|
+
if (cls === undefined)
|
|
225
|
+
return ref;
|
|
226
|
+
if (ref.kind !== "f64") {
|
|
227
|
+
throw new SidecarError(`the profile declares integer slot '${slotPath}' (${cls}), but that slot is not a plain number slot (it projects as '${ref.kind}')`, loc);
|
|
228
|
+
}
|
|
229
|
+
this.intConsumed.set(slotPath, cls);
|
|
230
|
+
return { kind: "i64" };
|
|
231
|
+
}
|
|
232
|
+
/** intify for a struct field (declared or synthesized), recording the
|
|
233
|
+
* record-resolution fact the inference maps onto interned IR shapes. */
|
|
234
|
+
intifyStructField(ref, container, field, allFields, loc) {
|
|
235
|
+
const slotPath = `${container}.${field}`;
|
|
236
|
+
const before = this.intConsumed.has(slotPath);
|
|
237
|
+
const out = this.intify(ref, slotPath, loc);
|
|
238
|
+
if (!before && this.intConsumed.has(slotPath)) {
|
|
239
|
+
this.intRecordFacts.push({
|
|
240
|
+
fieldNames: allFields,
|
|
241
|
+
targetField: field,
|
|
242
|
+
cls: this.intConsumed.get(slotPath),
|
|
243
|
+
path: slotPath,
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
return out;
|
|
247
|
+
}
|
|
248
|
+
/** A declared slot path that the whole projection never spelled: the
|
|
249
|
+
* path names nothing (or names a slot outside the schema's integer
|
|
250
|
+
* grammar), and silently ignoring it would drop an ABI obligation. */
|
|
251
|
+
checkIntConsumed() {
|
|
252
|
+
for (const [slot, cls] of this.intDeclared) {
|
|
253
|
+
if (!this.intConsumed.has(slot)) {
|
|
254
|
+
throw new SidecarError(`the profile declares integer slot '${slot}' (${cls}), but the projected contract has no number slot at that path (paths: 'Type.field', 'Union.arm', '<msg>.arm', '<msg>.arm.numberField', 'helpers.<name>.params[i]', 'helpers.<name>.return')`, this.entryLoc);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
195
257
|
}
|
|
196
258
|
lookup(name, loc) {
|
|
197
259
|
const c = this.byName.get(name);
|
|
@@ -387,7 +449,10 @@ class Projector {
|
|
|
387
449
|
if (seen.has(f.name))
|
|
388
450
|
throw new SidecarError(`record '${name}' repeats field '${f.name}'`, f.loc);
|
|
389
451
|
seen.add(f.name);
|
|
390
|
-
entry.fields.push({
|
|
452
|
+
entry.fields.push({
|
|
453
|
+
name: f.name,
|
|
454
|
+
type: this.intifyStructField(this.fieldRef(f, name), name, f.name, c.fields.map((x) => x.name), f.loc),
|
|
455
|
+
});
|
|
391
456
|
}
|
|
392
457
|
this.table.set(name, { kind: "struct", entry, anchor: c.index, sub: -1 });
|
|
393
458
|
return;
|
|
@@ -397,7 +462,21 @@ class Projector {
|
|
|
397
462
|
// in unionArms).
|
|
398
463
|
const entry = { name, arms: [] };
|
|
399
464
|
for (const arm of this.unionArms(name, loc)) {
|
|
400
|
-
|
|
465
|
+
let payload = this.armPayloadRef(name, arm);
|
|
466
|
+
const slotPath = `${name}.${arm.name}`;
|
|
467
|
+
const before = this.intConsumed.has(slotPath);
|
|
468
|
+
payload = this.intify(payload, slotPath, arm.loc);
|
|
469
|
+
if (!before && this.intConsumed.has(slotPath)) {
|
|
470
|
+
// The one intifiable arm shape is a single number payload
|
|
471
|
+
// field; its IR record carries the 'kind' discriminant too.
|
|
472
|
+
this.intRecordFacts.push({
|
|
473
|
+
fieldNames: [...arm.fields.map((f) => f.name), "kind"],
|
|
474
|
+
targetField: arm.fields[0].name,
|
|
475
|
+
cls: this.intConsumed.get(slotPath),
|
|
476
|
+
path: slotPath,
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
entry.arms.push({ name: arm.name, payload });
|
|
401
480
|
}
|
|
402
481
|
this.table.set(name, { kind: "union", entry, anchor: c.index, sub: -1 });
|
|
403
482
|
}
|
|
@@ -435,7 +514,10 @@ class Projector {
|
|
|
435
514
|
if (seen.has(f.name))
|
|
436
515
|
throw new SidecarError(`the inline record at '${container}.${member}' repeats field '${f.name}'`, f.loc);
|
|
437
516
|
seen.add(f.name);
|
|
438
|
-
entry.fields.push({
|
|
517
|
+
entry.fields.push({
|
|
518
|
+
name: f.name,
|
|
519
|
+
type: this.intifyStructField(this.fieldRef(f, name), name, f.name, fields.map((x) => x.name), f.loc),
|
|
520
|
+
});
|
|
439
521
|
}
|
|
440
522
|
return name;
|
|
441
523
|
}
|
|
@@ -453,11 +535,37 @@ class Projector {
|
|
|
453
535
|
!second.optional &&
|
|
454
536
|
first.shape.k === "number" &&
|
|
455
537
|
(second.shape.k === "text" || second.shape.k === "bytes")) {
|
|
456
|
-
|
|
538
|
+
// The number half is an ask-4 declarable slot:
|
|
539
|
+
// `<msg>.<arm>.<numberField>` (the schema's number_bytes path).
|
|
540
|
+
const slotPath = `${msgName}.${arm.name}.${first.name}`;
|
|
541
|
+
const numRef = this.intify({ kind: "f64" }, slotPath, first.loc);
|
|
542
|
+
if (numRef.kind === "i64") {
|
|
543
|
+
this.intRecordFacts.push({
|
|
544
|
+
fieldNames: [first.name, second.name, "kind"],
|
|
545
|
+
targetField: first.name,
|
|
546
|
+
cls: this.intConsumed.get(slotPath),
|
|
547
|
+
path: slotPath,
|
|
548
|
+
});
|
|
549
|
+
}
|
|
550
|
+
return { kind: "number_bytes", number_field: first.name, number_class: numRef.kind, bytes_field: second.name };
|
|
457
551
|
}
|
|
458
552
|
}
|
|
459
553
|
if (fields.length === 1 && !fields[0].optional) {
|
|
460
|
-
|
|
554
|
+
let ref = this.fieldRef(fields[0], msgName);
|
|
555
|
+
if (ref.kind === "f64") {
|
|
556
|
+
// A plain number payload is an ask-4 declarable slot: `<msg>.<arm>`.
|
|
557
|
+
const slotPath = `${msgName}.${arm.name}`;
|
|
558
|
+
const before = this.intConsumed.has(slotPath);
|
|
559
|
+
ref = this.intify(ref, slotPath, arm.loc);
|
|
560
|
+
if (!before && this.intConsumed.has(slotPath)) {
|
|
561
|
+
this.intRecordFacts.push({
|
|
562
|
+
fieldNames: [fields[0].name, "kind"],
|
|
563
|
+
targetField: fields[0].name,
|
|
564
|
+
cls: this.intConsumed.get(slotPath),
|
|
565
|
+
path: slotPath,
|
|
566
|
+
});
|
|
567
|
+
}
|
|
568
|
+
}
|
|
461
569
|
switch (ref.kind) {
|
|
462
570
|
case "bytes":
|
|
463
571
|
return { kind: "bytes" };
|
|
@@ -510,6 +618,7 @@ export function buildSidecar(input) {
|
|
|
510
618
|
return { ok: false, diagnostics };
|
|
511
619
|
try {
|
|
512
620
|
const projector = new Projector(facts, config, entryLoc);
|
|
621
|
+
const helperIntFacts = [];
|
|
513
622
|
// The model: the designated root state type, a record in the table.
|
|
514
623
|
const modelClass = projector.lookup(config.model, entryLoc);
|
|
515
624
|
if (modelClass.c !== "struct") {
|
|
@@ -553,7 +662,13 @@ export function buildSidecar(input) {
|
|
|
553
662
|
if (p.shape === null) {
|
|
554
663
|
throw new SidecarError(`helper '${fn.name}' parameter ${i + 2} ('${p.name}') has no type annotation`, fn.loc);
|
|
555
664
|
}
|
|
556
|
-
|
|
665
|
+
const pPath = `helpers.${fn.name}.params[${i}]`;
|
|
666
|
+
const ref = projector.intify(projector.shapeRef(p.shape, `helpers_${fn.name}`, p.name, fn.loc), pPath, fn.loc);
|
|
667
|
+
if (projector.intConsumed.has(pPath)) {
|
|
668
|
+
// IR param 0 is the model receiver the schema's index skips.
|
|
669
|
+
helperIntFacts.push({ fnName: fn.name, kind: "param", index: i + 1, cls: projector.intConsumed.get(pPath), path: pPath });
|
|
670
|
+
}
|
|
671
|
+
params.push(ref);
|
|
557
672
|
});
|
|
558
673
|
if (fn.returns === null) {
|
|
559
674
|
throw new SidecarError(`helper '${fn.name}' has no return type annotation`, fn.loc);
|
|
@@ -564,7 +679,11 @@ export function buildSidecar(input) {
|
|
|
564
679
|
// Helper-return synthesized names are two-part like everything else:
|
|
565
680
|
// container 'helpers', member the helper's name — `helpers_<name>`,
|
|
566
681
|
// never a '_return' suffix (the ratified spelling).
|
|
567
|
-
const
|
|
682
|
+
const rPath = `helpers.${fn.name}.return`;
|
|
683
|
+
const returns = projector.intify(projector.shapeRef(fn.returns, "helpers", fn.name, fn.loc), rPath, fn.loc);
|
|
684
|
+
if (projector.intConsumed.has(rPath)) {
|
|
685
|
+
helperIntFacts.push({ fnName: fn.name, kind: "return", cls: projector.intConsumed.get(rPath), path: rPath });
|
|
686
|
+
}
|
|
568
687
|
if (helpers.some((h) => h.name === fn.name)) {
|
|
569
688
|
throw new SidecarError(`helper '${fn.name}' is declared twice`, fn.loc);
|
|
570
689
|
}
|
|
@@ -636,6 +755,9 @@ export function buildSidecar(input) {
|
|
|
636
755
|
throw new SidecarError(`envMsgs targets arm '${e.msg}', whose payload descriptor is '${payload.kind}' — the host delivers an environment value as bytes`, facts.envMsgs.loc);
|
|
637
756
|
}
|
|
638
757
|
}
|
|
758
|
+
// Every declared integer slot must have been spelled by now — the
|
|
759
|
+
// whole contract (model, msg, helpers, channels) is projected.
|
|
760
|
+
projector.checkIntConsumed();
|
|
639
761
|
const doc = {
|
|
640
762
|
format: SIDECAR_FORMAT,
|
|
641
763
|
wire_version: config.wireVersion,
|
|
@@ -662,17 +784,29 @@ export function buildSidecar(input) {
|
|
|
662
784
|
env_msgs: envMsgs,
|
|
663
785
|
},
|
|
664
786
|
abi: { prefix: profile.prefix, exports, snapshot_format: config.snapshotFormat },
|
|
665
|
-
//
|
|
666
|
-
// slot
|
|
667
|
-
//
|
|
668
|
-
|
|
787
|
+
// Ask 4's resolved integer-class decisions, one entry per declared
|
|
788
|
+
// slot in profile declaration order, every one spelled i64 (the
|
|
789
|
+
// frozen format-1 vocabulary; a u64 declaration is the stricter
|
|
790
|
+
// compile-time obligation over the same wire spelling). The V10
|
|
791
|
+
// bijection with the i64-spelled slots above holds by construction
|
|
792
|
+
// (intify is the only i64 speller and checkIntConsumed just proved
|
|
793
|
+
// every declaration was spelled). The list is an ATTESTATION: the
|
|
794
|
+
// compiler refuses the build before writing any artifact when an
|
|
795
|
+
// integer-slot proof fails, so a sidecar carrying these entries
|
|
796
|
+
// means every listed slot's obligations were discharged (§5).
|
|
797
|
+
integer_slots: config.integerSlots.map((e) => ({ slot: e.slot, class: "i64" })),
|
|
669
798
|
deterministic: input.deterministic,
|
|
670
799
|
// Structural in library mode: the SC4005 gate refused any graph
|
|
671
800
|
// reaching async/timer/event-loop surface before emission, so a
|
|
672
801
|
// sidecar exists only for async_free graphs.
|
|
673
802
|
async_free: true,
|
|
674
803
|
};
|
|
675
|
-
return {
|
|
804
|
+
return {
|
|
805
|
+
ok: true,
|
|
806
|
+
doc,
|
|
807
|
+
json: JSON.stringify(doc, null, 2) + "\n",
|
|
808
|
+
integerSlotFacts: { helpers: helperIntFacts, records: projector.intRecordFacts },
|
|
809
|
+
};
|
|
676
810
|
}
|
|
677
811
|
catch (e) {
|
|
678
812
|
if (e instanceof SidecarRefusal) {
|