behavior-contracts 0.4.0 → 0.6.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.
Files changed (111) hide show
  1. package/README.md +78 -29
  2. package/dist/behavior.d.ts +7 -0
  3. package/dist/behavior.d.ts.map +1 -1
  4. package/dist/behavior.js.map +1 -1
  5. package/dist/builder.d.ts.map +1 -1
  6. package/dist/builder.js +10 -3
  7. package/dist/builder.js.map +1 -1
  8. package/dist/generator/async-plan.d.ts +78 -0
  9. package/dist/generator/async-plan.d.ts.map +1 -0
  10. package/dist/generator/async-plan.js +116 -0
  11. package/dist/generator/async-plan.js.map +1 -0
  12. package/dist/generator/core.d.ts +35 -0
  13. package/dist/generator/core.d.ts.map +1 -1
  14. package/dist/generator/core.js +1 -0
  15. package/dist/generator/core.js.map +1 -1
  16. package/dist/generator/{emit-straightline-typed-go.d.ts → emit-shared-go-typed.d.ts} +28 -17
  17. package/dist/generator/emit-shared-go-typed.d.ts.map +1 -0
  18. package/dist/generator/emit-shared-go-typed.js +572 -0
  19. package/dist/generator/emit-shared-go-typed.js.map +1 -0
  20. package/dist/generator/emit-shared-go.d.ts +29 -0
  21. package/dist/generator/emit-shared-go.d.ts.map +1 -0
  22. package/dist/generator/{emit-straightline-go.js → emit-shared-go.js} +17 -31
  23. package/dist/generator/emit-shared-go.js.map +1 -0
  24. package/dist/generator/{emit-straightline-typed-rust.d.ts → emit-shared-rust-typed.d.ts} +27 -17
  25. package/dist/generator/emit-shared-rust-typed.d.ts.map +1 -0
  26. package/dist/generator/emit-shared-rust-typed.js +576 -0
  27. package/dist/generator/emit-shared-rust-typed.js.map +1 -0
  28. package/dist/generator/{emit-straightline-rust.d.ts → emit-shared-rust.d.ts} +1 -36
  29. package/dist/generator/emit-shared-rust.d.ts.map +1 -0
  30. package/dist/generator/{emit-straightline-rust.js → emit-shared-rust.js} +7 -28
  31. package/dist/generator/emit-shared-rust.js.map +1 -0
  32. package/dist/generator/emit-shared-typescript.d.ts +12 -0
  33. package/dist/generator/emit-shared-typescript.d.ts.map +1 -0
  34. package/dist/generator/{emit-straightline-typescript.js → emit-shared-typescript.js} +9 -30
  35. package/dist/generator/emit-shared-typescript.js.map +1 -0
  36. package/dist/generator/emit-straightline-typed-typescript.d.ts +1 -1
  37. package/dist/generator/emit-straightline-typed-typescript.d.ts.map +1 -1
  38. package/dist/generator/emit-straightline-typed-typescript.js +1 -1
  39. package/dist/generator/emit-straightline-typed-typescript.js.map +1 -1
  40. package/dist/generator/emit-typed-native-go.d.ts +63 -0
  41. package/dist/generator/emit-typed-native-go.d.ts.map +1 -0
  42. package/dist/generator/emit-typed-native-go.js +2260 -0
  43. package/dist/generator/emit-typed-native-go.js.map +1 -0
  44. package/dist/generator/emit-typed-native-rust.d.ts +53 -0
  45. package/dist/generator/emit-typed-native-rust.d.ts.map +1 -0
  46. package/dist/generator/emit-typed-native-rust.js +2123 -0
  47. package/dist/generator/emit-typed-native-rust.js.map +1 -0
  48. package/dist/generator/index.d.ts +4 -12
  49. package/dist/generator/index.d.ts.map +1 -1
  50. package/dist/generator/index.js +16 -52
  51. package/dist/generator/index.js.map +1 -1
  52. package/dist/generator/native-expr.d.ts +120 -0
  53. package/dist/generator/native-expr.d.ts.map +1 -0
  54. package/dist/generator/native-expr.js +456 -0
  55. package/dist/generator/native-expr.js.map +1 -0
  56. package/dist/generator/straightline.d.ts +46 -0
  57. package/dist/generator/straightline.d.ts.map +1 -1
  58. package/dist/generator/straightline.js +65 -0
  59. package/dist/generator/straightline.js.map +1 -1
  60. package/dist/generator/typed.d.ts.map +1 -1
  61. package/dist/generator/typed.js +8 -0
  62. package/dist/generator/typed.js.map +1 -1
  63. package/dist/guard.js +14 -0
  64. package/dist/guard.js.map +1 -1
  65. package/dist/index.d.ts +2 -2
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +1 -1
  68. package/dist/index.js.map +1 -1
  69. package/dist/plan.d.ts +6 -2
  70. package/dist/plan.d.ts.map +1 -1
  71. package/dist/plan.js +4 -0
  72. package/dist/plan.js.map +1 -1
  73. package/package.json +1 -1
  74. package/dist/generator/emit-go.d.ts +0 -19
  75. package/dist/generator/emit-go.d.ts.map +0 -1
  76. package/dist/generator/emit-go.js +0 -79
  77. package/dist/generator/emit-go.js.map +0 -1
  78. package/dist/generator/emit-raw-abi-go.d.ts +0 -45
  79. package/dist/generator/emit-raw-abi-go.d.ts.map +0 -1
  80. package/dist/generator/emit-raw-abi-go.js +0 -345
  81. package/dist/generator/emit-raw-abi-go.js.map +0 -1
  82. package/dist/generator/emit-raw-abi-rust.d.ts +0 -45
  83. package/dist/generator/emit-raw-abi-rust.d.ts.map +0 -1
  84. package/dist/generator/emit-raw-abi-rust.js +0 -380
  85. package/dist/generator/emit-raw-abi-rust.js.map +0 -1
  86. package/dist/generator/emit-rust.d.ts +0 -25
  87. package/dist/generator/emit-rust.d.ts.map +0 -1
  88. package/dist/generator/emit-rust.js +0 -125
  89. package/dist/generator/emit-rust.js.map +0 -1
  90. package/dist/generator/emit-straightline-go.d.ts +0 -58
  91. package/dist/generator/emit-straightline-go.d.ts.map +0 -1
  92. package/dist/generator/emit-straightline-go.js.map +0 -1
  93. package/dist/generator/emit-straightline-php.d.ts +0 -46
  94. package/dist/generator/emit-straightline-php.d.ts.map +0 -1
  95. package/dist/generator/emit-straightline-php.js +0 -941
  96. package/dist/generator/emit-straightline-php.js.map +0 -1
  97. package/dist/generator/emit-straightline-python.d.ts +0 -36
  98. package/dist/generator/emit-straightline-python.d.ts.map +0 -1
  99. package/dist/generator/emit-straightline-python.js +0 -855
  100. package/dist/generator/emit-straightline-python.js.map +0 -1
  101. package/dist/generator/emit-straightline-rust.d.ts.map +0 -1
  102. package/dist/generator/emit-straightline-rust.js.map +0 -1
  103. package/dist/generator/emit-straightline-typed-go.d.ts.map +0 -1
  104. package/dist/generator/emit-straightline-typed-go.js +0 -1111
  105. package/dist/generator/emit-straightline-typed-go.js.map +0 -1
  106. package/dist/generator/emit-straightline-typed-rust.d.ts.map +0 -1
  107. package/dist/generator/emit-straightline-typed-rust.js +0 -1153
  108. package/dist/generator/emit-straightline-typed-rust.js.map +0 -1
  109. package/dist/generator/emit-straightline-typescript.d.ts +0 -47
  110. package/dist/generator/emit-straightline-typescript.d.ts.map +0 -1
  111. package/dist/generator/emit-straightline-typescript.js.map +0 -1
@@ -0,0 +1,456 @@
1
+ /**
2
+ * native-expr.ts — the RUNTIME-FREE native expression compiler (#108 / bc#101).
3
+ *
4
+ * The typed-native emitters (emit-typed-native-go.ts / -rust.ts) are static mirrors of runBehavior.
5
+ * runBehavior's cond node (behavior.ts:425-429) and map guard (behavior.ts:443-445) lower an
6
+ * arbitrary Expression IR through the reference evaluator `evaluate` (expr-eval.ts). To mirror those
7
+ * on the RUNTIME-FREE covered plane (bc#90 — NO boxed Value, NO bc-runtime import), this module
8
+ * compiles an Expression IR node to a NATIVE Go/Rust expression whose observable result (value +
9
+ * fail-closed failure code) is BYTE-EQUAL to `evaluate`.
10
+ *
11
+ * # The closed op set (25)
12
+ * literals: int({int:"…"}), float({float:n}), bare-number, str, bool, null
13
+ * refs: ref, refOpt construction: obj, arr
14
+ * numeric: add, sub, mul, neg, div, mod string: concat
15
+ * compare: eq, ne, lt, le, gt, ge bool/null: and, or, not, coalesce, cond arr: len
16
+ *
17
+ * # Static typing
18
+ * On the covered plane every operand's type is STATICALLY known (input port scalar type / input
19
+ * array elemType / prior-node outType field / map $as element type / literal kind). So the compiler
20
+ * infers a `TypeRef` for every sub-expression. A TYPE_MISMATCH that `evaluate` would raise at runtime
21
+ * is a GENERATION-TIME fail-closed reject here (the shape is not covered) — never a silent miscompile.
22
+ * The ONLY runtime failures a covered expression can still raise are the value-dependent arithmetic
23
+ * ones: INT_OVERFLOW / NAN_OR_INF / MOD_ZERO / PRECISION_LOSS, and the literal INVALID_LITERAL. Those
24
+ * are emitted as calls to a small fixed set of RUNTIME-FREE local helper funcs (bcAdd/bcMod/… in Go,
25
+ * bc_add/bc_mod/… in Rust) that carry the exact failure code — so the covered module still imports
26
+ * ZERO bc runtime.
27
+ *
28
+ * # Fallible → statements
29
+ * A fallible sub-expression (checked arith, div, mod, an int literal, len over a possibly-huge arr)
30
+ * is hoisted to a temp with an early error-return, so the final `expr` is pure. `compile` returns
31
+ * `{ stmts, expr, ref }`: `stmts` are the hoisted statements (in evaluation order — left-to-right,
32
+ * short-circuit-aware), `expr` the final native value expression, `ref` its static TypeRef.
33
+ */
34
+ import { GeneratorFailure } from "./core.js";
35
+ const SCALARS = ["string", "int", "float", "bool"];
36
+ /**
37
+ * fail — a GENERATION-TIME fail-closed reject. On the covered plane a statically-detectable violation
38
+ * (a TYPE_MISMATCH the reference evaluator would raise at runtime, an INVALID_LITERAL / out-of-range
39
+ * literal, an uncovered shape) is surfaced as the emitter's fail-closed `UNSUPPORTED_NODE_STRAIGHTLINE`
40
+ * with the SPECIFIC semantic reason (`why`) in the message — never a silent miscompile. The
41
+ * value-dependent RUNTIME failures (INT_OVERFLOW / NAN_OR_INF / MOD_ZERO / PRECISION_LOSS) are NOT
42
+ * thrown here; they are emitted into the generated runtime-free helpers with their exact codes.
43
+ */
44
+ function fail(why, msg) {
45
+ throw new GeneratorFailure("UNSUPPORTED_NODE_STRAIGHTLINE", `[${why}] ${msg}`);
46
+ }
47
+ function isScalar(r, s) {
48
+ return r.kind === "scalar" && (s === undefined ? r.scalar !== "null" : r.scalar === s);
49
+ }
50
+ /** classify a single-key operator node; else null. */
51
+ function opOf(node) {
52
+ if (node === null || typeof node !== "object" || Array.isArray(node))
53
+ return null;
54
+ const keys = Object.keys(node);
55
+ if (keys.length !== 1)
56
+ return null;
57
+ return { op: keys[0], arg: node[keys[0]] };
58
+ }
59
+ const I64_MAX = 9223372036854775807n;
60
+ const I64_MIN = -9223372036854775808n;
61
+ const SAFE_INT = 9007199254740991n; // 2^53-1
62
+ /**
63
+ * NativeExprCompiler — compiles Expression IR to native code via a backend. One instance per
64
+ * expression-compilation context (it accumulates hoisted statements through `compile`).
65
+ */
66
+ export class NativeExprCompiler {
67
+ be;
68
+ constructor(be) {
69
+ this.be = be;
70
+ }
71
+ /** compile a node to {stmts, expr, ref}. Fallible sub-exprs are hoisted into stmts. */
72
+ compile(node) {
73
+ // ── literals ──
74
+ if (node === null)
75
+ return fail("UNSUPPORTED_NODE_STRAIGHTLINE", `${this.be.lang} native expr: a bare null literal has no native scalar type on the runtime-free plane (wrap it in an opt-typed position)`);
76
+ if (typeof node === "boolean")
77
+ return { stmts: [], expr: this.be.boolLit(node), ref: { kind: "scalar", scalar: "bool" } };
78
+ if (typeof node === "string")
79
+ return { stmts: [], expr: this.be.strLit(node), ref: { kind: "scalar", scalar: "string" } };
80
+ if (typeof node === "number")
81
+ return this.numberLit(node);
82
+ const o = opOf(node);
83
+ if (o === null)
84
+ fail("UNSUPPORTED_NODE_STRAIGHTLINE", `${this.be.lang} native expr: not a portable expression node: ${JSON.stringify(node).slice(0, 80)}`);
85
+ switch (o.op) {
86
+ case "int":
87
+ return this.intLit(o.arg);
88
+ case "float":
89
+ return this.floatLit(o.arg);
90
+ case "ref":
91
+ case "refOpt":
92
+ return this.ref(o.arg, o.op === "refOpt");
93
+ case "obj":
94
+ return this.obj(o.arg);
95
+ case "arr":
96
+ return this.arr(o.arg);
97
+ case "add":
98
+ case "sub":
99
+ case "mul":
100
+ return this.arith(o.op, o.arg);
101
+ case "neg":
102
+ return this.neg(o.arg);
103
+ case "div":
104
+ return this.div(o.arg);
105
+ case "mod":
106
+ return this.mod(o.arg);
107
+ case "concat":
108
+ return this.concat(o.arg);
109
+ case "eq":
110
+ case "ne":
111
+ return this.eqNe(o.op, o.arg);
112
+ case "lt":
113
+ case "le":
114
+ case "gt":
115
+ case "ge":
116
+ return this.compare(o.op, o.arg);
117
+ case "and":
118
+ case "or":
119
+ return this.andOr(o.op, o.arg);
120
+ case "not":
121
+ return this.not(o.arg);
122
+ case "coalesce":
123
+ return this.coalesce(o.arg);
124
+ case "cond":
125
+ return this.cond(o.arg);
126
+ case "len":
127
+ return this.len(o.arg);
128
+ default:
129
+ return fail("UNSUPPORTED_NODE_STRAIGHTLINE", `${this.be.lang} native expr: operator '${o.op}' is not in the covered closed set (fail-closed)`);
130
+ }
131
+ }
132
+ /** compile a node and require it to produce a native `bool` (the cond `if` / guard `when` gate). A
133
+ * non-bool result is a GENERATION-TIME fail-closed reject (strict-bool, mirrors requireBool). */
134
+ compileBool(node) {
135
+ const c = this.compile(node);
136
+ if (!isScalar(c.ref, "bool"))
137
+ fail("UNSUPPORTED_NODE_STRAIGHTLINE", `${this.be.lang} native expr: condition must be a bool (strict-bool, no truthiness), got ${JSON.stringify(c.ref)}`);
138
+ return c;
139
+ }
140
+ /**
141
+ * compileTo — compile a node to the given expected TypeRef, MATERIALIZING an {obj}/{arr}/scalar
142
+ * literal against `expected` (the cond-branch / boundary shape — mirrors emitTypedValue). A ref /
143
+ * operator sub-node is compiled by `compile` and must already carry the expected type. `named`
144
+ * targets require the plan-resolved decl fields (passed via `resolveDecl`).
145
+ */
146
+ compileTo(node, expected, resolveDecl) {
147
+ const op = opOf(node);
148
+ // {obj:{...}} → a named struct literal, each field lowered to its declared type.
149
+ if (op !== null && op.op === "obj" && expected.kind === "named") {
150
+ if (op.arg === null || typeof op.arg !== "object" || Array.isArray(op.arg))
151
+ fail("INVALID_NODE", `${this.be.lang} native expr: {obj} expects an object`);
152
+ const fields = op.arg;
153
+ const decl = resolveDecl(expected.name);
154
+ const stmts = [];
155
+ const inits = [];
156
+ for (const f of decl) {
157
+ if (!(f.name in fields))
158
+ fail("MISSING_PROP", `${this.be.lang} native expr: {obj} missing field '${f.name}' for ${expected.name}`);
159
+ const sub = this.compileTo(fields[f.name], f.type, resolveDecl);
160
+ stmts.push(...sub.stmts);
161
+ inits.push({ field: f.name, expr: sub.expr });
162
+ }
163
+ return { stmts, expr: this.be.structLit(expected.name, inits), ref: expected };
164
+ }
165
+ // {arr:[...]} → a native slice/vec literal of the element type.
166
+ if (op !== null && op.op === "arr" && expected.kind === "arr") {
167
+ if (!Array.isArray(op.arg))
168
+ fail("INVALID_NODE", `${this.be.lang} native expr: {arr} expects an array`);
169
+ const stmts = [];
170
+ const items = [];
171
+ for (const el of op.arg) {
172
+ const sub = this.compileTo(el, expected.elem, resolveDecl);
173
+ stmts.push(...sub.stmts);
174
+ items.push(sub.expr);
175
+ }
176
+ return { stmts, expr: this.be.arrLit(this.be.renderType(expected.elem), items), ref: expected };
177
+ }
178
+ // otherwise a scalar literal / ref / operator: compile and require the expected type.
179
+ const c = this.compile(node);
180
+ if (!typeRefEqual(c.ref, expected))
181
+ fail("UNSUPPORTED_NODE_STRAIGHTLINE", `${this.be.lang} native expr: expression type ${JSON.stringify(c.ref)} does not match expected ${JSON.stringify(expected)} (fail-closed)`);
182
+ return c;
183
+ }
184
+ // ── literals ──────────────────────────────────────────────────────────────────────
185
+ numberLit(n) {
186
+ // bare number (§2.3): integral → int (must be safe-integer), else float.
187
+ if (Number.isInteger(n)) {
188
+ if (n < -Number(SAFE_INT) || n > Number(SAFE_INT))
189
+ fail("INVALID_LITERAL", `${this.be.lang} native expr: integral number literal ${n} exceeds safe range; use {int:"..."}`);
190
+ return { stmts: [], expr: this.be.intLit(String(n)), ref: { kind: "scalar", scalar: "int" } };
191
+ }
192
+ if (!Number.isFinite(n))
193
+ fail("NAN_OR_INF", `${this.be.lang} native expr: non-finite float literal ${n}`);
194
+ return { stmts: [], expr: this.be.floatLit(n), ref: { kind: "scalar", scalar: "float" } };
195
+ }
196
+ intLit(arg) {
197
+ if (typeof arg !== "string")
198
+ fail("INVALID_NODE", `${this.be.lang} native expr: {int:...} expects a string`);
199
+ // parse + i64 range check AT GENERATION TIME (the literal is static). INVALID_LITERAL / INT_OVERFLOW
200
+ // become a generation-time reject — the runtime never re-checks a static literal.
201
+ let v;
202
+ try {
203
+ v = BigInt(arg);
204
+ }
205
+ catch {
206
+ fail("INVALID_LITERAL", `${this.be.lang} native expr: invalid int literal: ${arg}`);
207
+ }
208
+ if (v < I64_MIN || v > I64_MAX)
209
+ fail("INT_OVERFLOW", `${this.be.lang} native expr: i64 overflow in literal: ${arg}`);
210
+ return { stmts: [], expr: this.be.intLit(v.toString()), ref: { kind: "scalar", scalar: "int" } };
211
+ }
212
+ floatLit(arg) {
213
+ if (typeof arg !== "number")
214
+ fail("INVALID_NODE", `${this.be.lang} native expr: {float:...} expects a number`);
215
+ if (!Number.isFinite(arg))
216
+ fail("NAN_OR_INF", `${this.be.lang} native expr: non-finite {float} literal ${arg}`);
217
+ return { stmts: [], expr: this.be.floatLit(arg), ref: { kind: "scalar", scalar: "float" } };
218
+ }
219
+ // ── refs ──────────────────────────────────────────────────────────────────────────
220
+ ref(arg, opt) {
221
+ if (!Array.isArray(arg) || arg.length === 0 || !arg.every((p) => typeof p === "string"))
222
+ fail("INVALID_NODE", `${this.be.lang} native expr: ${opt ? "refOpt" : "ref"} expects a non-empty string path`);
223
+ const path = arg;
224
+ const head = this.be.resolveHead(path[0]);
225
+ if (head === null)
226
+ fail("UNKNOWN_BINDING", `${this.be.lang} native expr: unknown binding: ${path[0]}`);
227
+ // A refOpt into a possibly-null intermediate would need opt-nil propagation; on the covered plane
228
+ // the cond/guard exprs read REQUIRED typed fields (the corpus + graphddb shapes). A refOpt or a
229
+ // walk through an opt field is fail-closed here (keep the boxed path for that shape).
230
+ if (opt)
231
+ fail("UNSUPPORTED_NODE_STRAIGHTLINE", `${this.be.lang} native expr: refOpt inside a cond/guard expression is not native-covered (fail-closed)`);
232
+ const { expr, ref } = this.be.fieldAccess(head.expr, head.ref, path.slice(1));
233
+ if (ref.kind === "opt")
234
+ fail("UNSUPPORTED_NODE_STRAIGHTLINE", `${this.be.lang} native expr: a required ref resolving to an opt field is not native-covered in a cond/guard expression (fail-closed)`);
235
+ return { stmts: [], expr, ref };
236
+ }
237
+ // ── construction ────────────────────────────────────────────────────────────────────
238
+ obj(_arg) {
239
+ fail("UNSUPPORTED_NODE_STRAIGHTLINE", `${this.be.lang} native expr: an {obj} inside a nested expression has no inferable named type here; obj is materialized only at the cond-branch/output boundary against an expected type (compileTo)`);
240
+ }
241
+ arr(_arg) {
242
+ fail("UNSUPPORTED_NODE_STRAIGHTLINE", `${this.be.lang} native expr: an {arr} inside a nested expression has no inferable element type here; arr is materialized only against an expected type (compileTo)`);
243
+ }
244
+ // ── numeric ─────────────────────────────────────────────────────────────────────────
245
+ binArgs(op, arg) {
246
+ if (!Array.isArray(arg) || arg.length !== 2)
247
+ fail("INVALID_NODE", `${this.be.lang} native expr: ${op} expects 2 args`);
248
+ return [arg[0], arg[1]];
249
+ }
250
+ arith(op, arg) {
251
+ const [ea, eb] = this.binArgs(op, arg);
252
+ const a = this.compile(ea);
253
+ const b = this.compile(eb);
254
+ if (isScalar(a.ref, "int") && isScalar(b.ref, "int")) {
255
+ // checked i64 → fallible helper (INT_OVERFLOW).
256
+ const helper = op === "add" ? "addI64" : op === "sub" ? "subI64" : "mulI64";
257
+ const temp = this.be.freshTemp();
258
+ const stmts = [...a.stmts, ...b.stmts, ...this.be.hoistFallible(temp, this.be.scalarType("int"), this.be.helperCall(helper, [a.expr, b.expr]))];
259
+ return { stmts, expr: temp, ref: { kind: "scalar", scalar: "int" } };
260
+ }
261
+ if (isScalar(a.ref, "float") && isScalar(b.ref, "float")) {
262
+ // checked finite f64 → fallible helper (NAN_OR_INF).
263
+ const helper = op === "add" ? "addF" : op === "sub" ? "subF" : "mulF";
264
+ const temp = this.be.freshTemp();
265
+ const stmts = [...a.stmts, ...b.stmts, ...this.be.hoistFallible(temp, this.be.scalarType("float"), this.be.helperCall(helper, [a.expr, b.expr]))];
266
+ return { stmts, expr: temp, ref: { kind: "scalar", scalar: "float" } };
267
+ }
268
+ fail("TYPE_MISMATCH", `${this.be.lang} native expr: ${op} requires int×int or float×float (got ${scalarName(a.ref)}×${scalarName(b.ref)})`);
269
+ }
270
+ neg(arg) {
271
+ if (!Array.isArray(arg) || arg.length !== 1)
272
+ fail("INVALID_NODE", `${this.be.lang} native expr: neg expects 1 arg`);
273
+ const a = this.compile(arg[0]);
274
+ if (isScalar(a.ref, "int")) {
275
+ const temp = this.be.freshTemp();
276
+ const stmts = [...a.stmts, ...this.be.hoistFallible(temp, this.be.scalarType("int"), this.be.helperCall("negI64", [a.expr]))];
277
+ return { stmts, expr: temp, ref: { kind: "scalar", scalar: "int" } };
278
+ }
279
+ if (isScalar(a.ref, "float")) {
280
+ const temp = this.be.freshTemp();
281
+ const stmts = [...a.stmts, ...this.be.hoistFallible(temp, this.be.scalarType("float"), this.be.helperCall("negF", [a.expr]))];
282
+ return { stmts, expr: temp, ref: { kind: "scalar", scalar: "float" } };
283
+ }
284
+ fail("TYPE_MISMATCH", `${this.be.lang} native expr: neg requires numeric (got ${scalarName(a.ref)})`);
285
+ }
286
+ div(arg) {
287
+ const [ea, eb] = this.binArgs("div", arg);
288
+ const a = this.compile(ea);
289
+ const b = this.compile(eb);
290
+ // div ALWAYS widens to float (PRECISION_LOSS if an int operand |x|>2^53) then checks finite
291
+ // (NAN_OR_INF for /0). The widen+divide is one fallible helper taking each operand as its native
292
+ // type. To keep the helper monomorphic per operand kind, we widen int operands via widenI64F first.
293
+ const wa = this.widenToFloat(a);
294
+ const wb = this.widenToFloat(b);
295
+ const temp = this.be.freshTemp();
296
+ const stmts = [...wa.stmts, ...wb.stmts, ...this.be.hoistFallible(temp, this.be.scalarType("float"), this.be.helperCall("divF", [wa.expr, wb.expr]))];
297
+ return { stmts, expr: temp, ref: { kind: "scalar", scalar: "float" } };
298
+ }
299
+ /** widen an int/float compiled value to a fallible f64 (PRECISION_LOSS for int out of ±2^53). */
300
+ widenToFloat(c) {
301
+ if (isScalar(c.ref, "float"))
302
+ return c;
303
+ if (isScalar(c.ref, "int")) {
304
+ const temp = this.be.freshTemp();
305
+ const stmts = [...c.stmts, ...this.be.hoistFallible(temp, this.be.scalarType("float"), this.be.helperCall("widenI64F", [c.expr]))];
306
+ return { stmts, expr: temp, ref: { kind: "scalar", scalar: "float" } };
307
+ }
308
+ fail("TYPE_MISMATCH", `${this.be.lang} native expr: numeric operand expected for div, got ${scalarName(c.ref)}`);
309
+ }
310
+ mod(arg) {
311
+ const [ea, eb] = this.binArgs("mod", arg);
312
+ const a = this.compile(ea);
313
+ const b = this.compile(eb);
314
+ if (isScalar(a.ref, "int") && isScalar(b.ref, "int")) {
315
+ const temp = this.be.freshTemp();
316
+ const stmts = [...a.stmts, ...b.stmts, ...this.be.hoistFallible(temp, this.be.scalarType("int"), this.be.helperCall("modI64", [a.expr, b.expr]))];
317
+ return { stmts, expr: temp, ref: { kind: "scalar", scalar: "int" } };
318
+ }
319
+ if (isScalar(a.ref, "float") && isScalar(b.ref, "float")) {
320
+ const temp = this.be.freshTemp();
321
+ const stmts = [...a.stmts, ...b.stmts, ...this.be.hoistFallible(temp, this.be.scalarType("float"), this.be.helperCall("modF", [a.expr, b.expr]))];
322
+ return { stmts, expr: temp, ref: { kind: "scalar", scalar: "float" } };
323
+ }
324
+ fail("TYPE_MISMATCH", `${this.be.lang} native expr: mod requires int×int or float×float (got ${scalarName(a.ref)}×${scalarName(b.ref)})`);
325
+ }
326
+ // ── string ──────────────────────────────────────────────────────────────────────────
327
+ concat(arg) {
328
+ if (!Array.isArray(arg) || arg.length < 2)
329
+ fail("INVALID_NODE", `${this.be.lang} native expr: concat expects >= 2 args`);
330
+ const parts = arg.map((p) => this.compile(p));
331
+ for (const p of parts)
332
+ if (!isScalar(p.ref, "string"))
333
+ fail("TYPE_MISMATCH", `${this.be.lang} native expr: concat requires string parts (got ${scalarName(p.ref)})`);
334
+ const stmts = parts.flatMap((p) => p.stmts);
335
+ return { stmts, expr: this.be.concat(parts.map((p) => p.expr)), ref: { kind: "scalar", scalar: "string" } };
336
+ }
337
+ // ── compare ─────────────────────────────────────────────────────────────────────────
338
+ eqNe(op, arg) {
339
+ const [ea, eb] = this.binArgs(op, arg);
340
+ const a = this.compile(ea);
341
+ const b = this.compile(eb);
342
+ // eq/ne: same scalar type only (null-eq is via opt; not on this plane). arr/obj eq is undefined.
343
+ if (!isScalar(a.ref) || !isScalar(b.ref) || scalarName(a.ref) !== scalarName(b.ref))
344
+ fail("TYPE_MISMATCH", `${this.be.lang} native expr: ${op} requires same scalar type (got ${scalarName(a.ref)}×${scalarName(b.ref)})`);
345
+ const sc = a.ref.scalar;
346
+ const stmts = [...a.stmts, ...b.stmts];
347
+ const cmp = this.be.binOp(op === "eq" ? "==" : "!=", a.expr, b.expr, sc);
348
+ return { stmts, expr: cmp, ref: { kind: "scalar", scalar: "bool" } };
349
+ }
350
+ compare(op, arg) {
351
+ const [ea, eb] = this.binArgs(op, arg);
352
+ const a = this.compile(ea);
353
+ const b = this.compile(eb);
354
+ if (!isScalar(a.ref) || !isScalar(b.ref) || scalarName(a.ref) !== scalarName(b.ref))
355
+ fail("TYPE_MISMATCH", `${this.be.lang} native expr: ${op} requires same scalar int/float/string (got ${scalarName(a.ref)}×${scalarName(b.ref)})`);
356
+ const sc = a.ref.scalar;
357
+ if (sc === "bool")
358
+ fail("TYPE_MISMATCH", `${this.be.lang} native expr: ${op} on bool is not defined`);
359
+ const sym = op === "lt" ? "<" : op === "le" ? "<=" : op === "gt" ? ">" : ">=";
360
+ const stmts = [...a.stmts, ...b.stmts];
361
+ // string compare must be CODE-POINT order (helper); int/float use native operators.
362
+ if (sc === "string") {
363
+ return { stmts, expr: this.be.helperCall(cmpHelper(op), [a.expr, b.expr]), ref: { kind: "scalar", scalar: "bool" } };
364
+ }
365
+ return { stmts, expr: this.be.binOp(sym, a.expr, b.expr, sc), ref: { kind: "scalar", scalar: "bool" } };
366
+ }
367
+ // ── bool / null (short-circuit) ───────────────────────────────────────────────────────
368
+ andOr(op, arg) {
369
+ const [ea, eb] = this.binArgs(op, arg);
370
+ const a = this.compile(ea);
371
+ if (!isScalar(a.ref, "bool"))
372
+ fail("TYPE_MISMATCH", `${this.be.lang} native expr: ${op} requires bool operands (got ${scalarName(a.ref)})`);
373
+ // SHORT-CIRCUIT: the right operand (and its fallible temps + failures) must NOT be evaluated when
374
+ // the left settles the result. We realize this with a ternary over the LEFT: and → a?compileR:false,
375
+ // or → a?true:compileR — and any hoisted temps of b live INSIDE the taken branch. To keep the
376
+ // right side's statements from leaking to the unconditional prefix, we compile b to a self-contained
377
+ // block-expression when it has stmts; when b is pure, a native `&&`/`||` is exact and simpler.
378
+ const b = this.compile(eb);
379
+ if (!isScalar(b.ref, "bool"))
380
+ fail("TYPE_MISMATCH", `${this.be.lang} native expr: ${op} requires bool operands (got ${scalarName(b.ref)})`);
381
+ if (b.stmts.length === 0) {
382
+ // pure right side: native &&/|| short-circuits exactly (no failure to guard).
383
+ return { stmts: a.stmts, expr: `(${a.expr} ${op === "and" ? "&&" : "||"} ${b.expr})`, ref: { kind: "scalar", scalar: "bool" } };
384
+ }
385
+ // right side is fallible: guard its evaluation behind the left's short-circuit via a temp+if.
386
+ const temp = this.be.freshTemp();
387
+ const guard = this.be.shortCircuitBool(op, temp, a.expr, b.stmts, b.expr);
388
+ return { stmts: [...a.stmts, ...guard], expr: temp, ref: { kind: "scalar", scalar: "bool" } };
389
+ }
390
+ not(arg) {
391
+ if (!Array.isArray(arg) || arg.length !== 1)
392
+ fail("INVALID_NODE", `${this.be.lang} native expr: not expects 1 arg`);
393
+ const a = this.compile(arg[0]);
394
+ if (!isScalar(a.ref, "bool"))
395
+ fail("TYPE_MISMATCH", `${this.be.lang} native expr: not requires bool (got ${scalarName(a.ref)})`);
396
+ return { stmts: a.stmts, expr: this.be.notOp(a.expr), ref: { kind: "scalar", scalar: "bool" } };
397
+ }
398
+ coalesce(arg) {
399
+ // coalesce needs a nullable left (opt). On the runtime-free covered plane an opt operand in a
400
+ // cond/guard expr is not covered (opt-nil requires the boxed path). Fail closed.
401
+ fail("UNSUPPORTED_NODE_STRAIGHTLINE", `${this.be.lang} native expr: coalesce (needs a nullable/opt operand) is not native-covered inside a cond/guard expression (fail-closed)`);
402
+ }
403
+ cond(arg) {
404
+ if (!Array.isArray(arg) || arg.length !== 3)
405
+ fail("INVALID_NODE", `${this.be.lang} native expr: cond expects [c,t,e]`);
406
+ const c = this.compileBool(arg[0]);
407
+ const t = this.compile(arg[1]);
408
+ const e = this.compile(arg[2]);
409
+ if (!typeRefEqual(t.ref, e.ref))
410
+ fail("TYPE_MISMATCH", `${this.be.lang} native expr: cond branches must have the same type (got ${JSON.stringify(t.ref)} vs ${JSON.stringify(e.ref)})`);
411
+ const ty = this.be.renderType(t.ref);
412
+ // SHORT-CIRCUIT: only the taken branch is evaluated. If both branches are pure, a native ternary is
413
+ // exact. If a branch is fallible, we guard both branches inside an if/else assigning a temp.
414
+ if (t.stmts.length === 0 && e.stmts.length === 0) {
415
+ return { stmts: c.stmts, expr: this.be.ternary(c.expr, t.expr, e.expr, ty), ref: t.ref };
416
+ }
417
+ const temp = this.be.freshTemp();
418
+ const guard = this.be.condGuard(temp, ty, c.expr, t.stmts, t.expr, e.stmts, e.expr);
419
+ return { stmts: [...c.stmts, ...guard], expr: temp, ref: t.ref };
420
+ }
421
+ // ── arr ───────────────────────────────────────────────────────────────────────────
422
+ len(arg) {
423
+ if (!Array.isArray(arg) || arg.length !== 1)
424
+ fail("INVALID_NODE", `${this.be.lang} native expr: len expects 1 arg`);
425
+ const a = this.compile(arg[0]);
426
+ if (a.ref.kind !== "arr")
427
+ fail("TYPE_MISMATCH", `${this.be.lang} native expr: len requires an array (got ${JSON.stringify(a.ref)})`);
428
+ // len returns i64. A native slice length is usize/int; the only failure is i64 overflow for an
429
+ // astronomically large slice — the helper checks it (INT_OVERFLOW), matching lenCore→checkI64.
430
+ const temp = this.be.freshTemp();
431
+ const stmts = [...a.stmts, ...this.be.hoistFallible(temp, this.be.scalarType("int"), this.be.helperCall("lenArr", [a.expr]))];
432
+ return { stmts, expr: temp, ref: { kind: "scalar", scalar: "int" } };
433
+ }
434
+ }
435
+ /** the code-point compare helper name for a string comparison. */
436
+ function cmpHelper(op) {
437
+ return op === "lt" ? "strLt" : op === "le" ? "strLe" : op === "gt" ? "strGt" : "strGe";
438
+ }
439
+ function scalarName(r) {
440
+ return r.kind === "scalar" ? r.scalar : r.kind;
441
+ }
442
+ /** structural TypeRef equality (for cond-branch join + expected checks). */
443
+ export function typeRefEqual(a, b) {
444
+ if (a.kind !== b.kind)
445
+ return false;
446
+ if (a.kind === "scalar" && b.kind === "scalar")
447
+ return a.scalar === b.scalar;
448
+ if (a.kind === "opt" && b.kind === "opt")
449
+ return typeRefEqual(a.inner, b.inner);
450
+ if (a.kind === "arr" && b.kind === "arr")
451
+ return typeRefEqual(a.elem, b.elem);
452
+ if (a.kind === "named" && b.kind === "named")
453
+ return a.name === b.name;
454
+ return false;
455
+ }
456
+ //# sourceMappingURL=native-expr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-expr.js","sourceRoot":"","sources":["../../src/generator/native-expr.ts"],"names":[],"mappings":"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"}
@@ -158,6 +158,52 @@ export declare function emitStraightlineModule(ctx: EmitContext, dialect: Straig
158
158
  * の意味論を RunPlan に保存させる)は null。
159
159
  */
160
160
  export declare function sequentialOrder(comp: Component): number[] | null;
161
+ /**
162
+ * concurrencyPlan (bc#87) — the component's plan is a valid staged plan WITH at least one
163
+ * real-concurrency stage (a stage with 2+ mutually-independent members). Returns the staged
164
+ * execution plan (each stage = op indices, ASCENDING — matching plan.go/plan.rs's `sort` before
165
+ * commit) + the static concurrency bound, so the emitter can lay down explicit static parallel
166
+ * orchestration (goroutine/scoped-thread per member, bounded by `concurrency`). The staging, the
167
+ * bound, and WHICH ops run in parallel are ALL fully static (baked from `plan.groups`).
168
+ *
169
+ * Returns null (keep the runtime RunPlan/run_plan path — this analyzer does not cover it) when:
170
+ * - the plan is strictly sequential (`sequentialOrder != null` already covers it),
171
+ * - coverage is invalid (out-of-range / duplicate / under-cover) — that INVALID_PLAN semantics
172
+ * stays runtime,
173
+ * - a multi-op stage has an INTRA-STAGE parent/child dependency (a §1-violating plan; run_behavior
174
+ * falls back to sequential there, but we do NOT statically claim it — fail-closed conservative),
175
+ * - concurrency <= 1 (a bounded-parallel stage with bound 1 degenerates to sequential; run_behavior
176
+ * keeps sequential dispatch — no static parallel orchestration to emit, stays sequential-eligible
177
+ * via sequentialOrder only if all stages are single-op; a multi-op stage at bound 1 is left to the
178
+ * runtime so we never emit a "parallel" form that is actually serial).
179
+ *
180
+ * The emitted parallel form is byte-equivalent to run_behavior BECAUSE the deterministic protocol is
181
+ * reproduced exactly: PREFLIGHT (ascending, from settled prior-stage results) → DISPATCH (bounded,
182
+ * the goroutine/thread is the ONLY runtime element) → COMMIT (ascending: interpret Policy Kind +
183
+ * materialize). Error precedence under bounded concurrency is thus the LOWEST-index failing member of
184
+ * the stage — never a race — because interpretation is committed in ascending index order.
185
+ */
186
+ export interface StagePlan {
187
+ /** stages in declaration order; each stage's op indices sorted ASCENDING (commit order). */
188
+ stages: number[][];
189
+ /** flattened execution order (stages concatenated) — the order node-result locals are declared in. */
190
+ order: number[];
191
+ /** static concurrency bound (plan.concurrency; >= 2 when any stage is real-parallel). */
192
+ concurrency: number;
193
+ }
194
+ export declare function concurrencyPlan(comp: Component): StagePlan | null;
195
+ /** An execution plan for a covered read: strictly sequential (order only) OR staged with real
196
+ * concurrency (bc#87). `parallelStages` maps a stage's first index → the full ascending stage member
197
+ * list when that stage is real-parallel (2+ members); single-op stages are absent. */
198
+ export interface ExecPlan {
199
+ order: number[];
200
+ concurrency: number;
201
+ /** op index → the ascending member list of its stage IFF that stage is real-parallel (else absent). */
202
+ parallelStageOf: Map<number, number[]>;
203
+ }
204
+ /** execPlan — the unified covered-read execution plan (bc#87): sequential OR staged-with-concurrency.
205
+ * Returns null when neither (the component is not a covered read shape). */
206
+ export declare function execPlan(comp: Component): ExecPlan | null;
161
207
  /** 逐次直線化された 1 op の静的メタ(skip 可能性・policy)。 */
162
208
  export interface SequentialOpMeta {
163
209
  /** 実行時に「未生成」で終わり得るか(parent skip 連鎖 / bindField null-binding / continue 失敗)。 */
@@ -1 +1 @@
1
- {"version":3,"file":"straightline.d.ts","sourceRoot":"","sources":["../../src/generator/straightline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"straightline.d.ts","sourceRoot":"","sources":["../../src/generator/straightline.ts"],"names":[],"mappings":"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"}